Beranda / Catatan / AI / Agents
AI / Agents
intermediate

LangSmith Essentials

Bagaimana LangSmith membantu trace, evaluasi, dan debug aplikasi LLM di tahap development maupun production

13 Juli 2026
Diperbarui secara berkala

LangSmith Essentials

> Begitu aplikasi LLM punya lebih dari satu step — retrieval, tool call, chained prompt — debugging hanya mengandalkan log saja sudah tidak cukup. LangSmith adalah platform observability dan evaluation (dari tim LangChain) yang dibuat khusus untuk tracing, testing, dan monitoring aplikasi LLM. Notebook ini membahas fungsinya dan bagaimana ia masuk ke workflow nyata.

Apa itu LangSmith?

LangSmith memberi visibility ke apa yang sebenarnya terjadi di dalam aplikasi LLM: setiap prompt yang dikirim, setiap response model, setiap tool call, dan setiap intermediate step di sebuah chain atau agent — semuanya ditangkap sebagai trace terstruktur yang bisa diperiksa setelahnya.

Secara prinsip framework-agnostic (kita bisa instrument raw API call), tapi integrasinya paling mulus dengan LangChain dan LangGraph, yang trace-nya ter-capture otomatis untuk chain atau graph apa pun yang dibangun dengan keduanya.

Kenapa logging biasa saja tidak cukup:

  • Output LLM itu non-deterministic — input yang sama bisa menghasilkan output berbeda, sesuatu yang tidak ditangani dengan baik oleh debugging ala print-statement
  • Chain/agent multi-step (lihat [[llm-orchestration-essentials]] dan [[langgraph-essentials]]) menghasilkan execution tree yang bercabang, bukan log yang flat
  • "Apakah ini jawaban yang bagus?" adalah pertanyaan yang berbeda dari "apakah code path ini tereksekusi" — yang dibutuhkan evaluation, bukan sekadar log
  • Kapabilitas Inti

    1. Tracing Setiap run dari chain, agent, atau raw LLM call ditangkap sebagai trace — pohon span yang menunjukkan input, output, latency, dan token usage di tiap step. Untuk agent multi-step, ini berarti kita bisa melihat persis tool mana yang dipanggil, dengan argument apa, dan apa hasilnya, di setiap hop.

    2. Evaluation Definisikan test dataset (pasangan input/expected-output) dan jalankan terhadap aplikasi kita untuk mengukur kualitas — pakai exact match, LLM-as-judge, atau custom scoring function. Ini mengubah pertanyaan "apakah perubahan prompt ini bikin lebih baik atau lebih buruk?" jadi sesuatu yang terukur, bukan sekadar feeling.

    3. Monitoring Di production, lacak latency, error rate, token cost, dan feedback score dari waktu ke waktu, lalu set alert saat sebuah metric mulai drift — menangkap regresi dari perubahan versi model atau edit prompt sebelum sempat dilaporkan user.

    4. Prompt/Dataset Management Versioning prompt, kumpulkan contoh kasus di mana model salah, dan ubah jadi regression test case — menutup loop antara "kami menemukan bug" dan "kami punya test yang mencegahnya terulang."

    Contoh Praktis: Tracing + Evaluation

    Aktifkan tracing (otomatis bekerja untuk kode LangChain/LangGraph begitu dikonfigurasi):

    import os
    
    os.environ["LANGCHAIN_TRACING_V2"] = "true"
    os.environ["LANGCHAIN_API_KEY"] = "..."
    os.environ["LANGCHAIN_PROJECT"] = "support-bot"
    
    # call LangChain/LangGraph apa pun di bawah ini otomatis ter-trace
    response = chain.invoke({"question": "How do I reset my password?"})
    

    Jalankan evaluation terhadap dataset yang sudah dilabeli:

    from langsmith import Client
    from langsmith.evaluation import evaluate
    
    client = Client()
    
    def correctness(run, example) -> dict:
        predicted = run.outputs["answer"]
        expected = example.outputs["answer"]
        score = llm_judge(predicted, expected)  # misalnya call LLM-as-judge
        return {"key": "correctness", "score": score}
    
    results = evaluate(
        lambda inputs: chain.invoke(inputs),
        data="support-bot-eval-set",  # dataset yang dibuat di LangSmith
        evaluators=[correctness],
    )
    

    Ini menghasilkan report yang membandingkan output terhadap jawaban yang diharapkan — inilah yang membuat kita bisa bilang "perubahan prompt ini menaikkan akurasi dari 82% ke 89%," bukan sekadar "kayaknya lebih bagus."

    Use Case Umum

  • Debug kenapa agent multi-step menghasilkan jawaban salah atau tak terduga
  • Menjalankan regression evaluation sebelum ship perubahan prompt atau model
  • Monitoring cost dan latency dari feature LLM di production
  • Membangun labeled dataset dari kegagalan production nyata untuk mencegahnya terulang
  • Membandingkan dua varian prompt atau dua model pada test set yang sama (evaluation ala A/B)
  • Best Practices

  • Trace sejak hari pertama, bukan hanya saat ada yang rusak — trace dari run yang berhasil itulah yang memungkinkan kita mendeteksi regresi di kemudian hari
  • Bangun eval dataset dari kegagalan nyata, bukan sekadar kasus hipotetis — supaya tetap berpijak pada apa yang benar-benar salah
  • Pakai evaluator LLM-as-judge secukupnya dan validasi terhadap penilaian manusia; itu proxy, bukan ground truth
  • Beri tag metadata pada trace (segmen user, feature flag, environment) supaya isu production bisa difilter dan direproduksi
  • Perlakukan evaluation sebagai gate di CI untuk perubahan prompt/chain, bukan pengecekan sekali jalan
  • Key Takeaways

  • LangSmith ada karena log saja tidak cukup menjelaskan behavior LLM yang non-deterministic dan multi-step
  • Tracing menunjukkan apa yang terjadi; evaluation menjawab apakah itu bagus — keduanya penting, untuk pertanyaan yang berbeda
  • Integrasinya paling erat dengan LangChain/LangGraph, tapi ide dasarnya (trace + eval + monitor) berlaku untuk stack LLM apa pun
  • Manfaat sesungguhnya datang dari menutup loop: kegagalan production jadi eval case, yang kemudian jadi regression test
  • Resources

  • Dokumentasi LangSmith: https://docs.smith.langchain.com
  • Topik

    LangSmithObservabilityLLM EvaluationTracingDebugging

    Apakah Ini Membantu?

    Jika Anda memiliki pertanyaan atau saran untuk meningkatkan catatan ini, saya ingin mendengar dari Anda.