LangSmith: monitorizare, debugging și seturi de date de test în LLMOps, Evaluare & Securitate AI

Platforma LangChain pentru tracing, seturi de date și experimente de evaluare, folosibilă și în afara LangChain prin wrappere și @traceable.

Configurare & comandă
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="<cheia-ta>"

# workspace bazat pe proiecte sau LangSmith self-hosted:
export LANGSMITH_PROJECT="dexblog-productie"

# workspace bazat pe agenți (LangSmith Cloud), în locul lui LANGSMITH_PROJECT:
# export LANGSMITH_AGENT_ID="<agent-id>"
# export LANGSMITH_AGENT_ENVIRONMENT="production"

LangSmith este platforma LangChain pentru observabilitate și evaluare. Primește trace-uri din LangChain și LangGraph, din wrapper-ele pentru SDK-urile OpenAI și Anthropic și din orice funcție decorată cu @traceable, deci nu e limitată la aplicațiile scrise cu LangChain.

Tracing-ul se activează cu LANGSMITH_TRACING=true și LANGSMITH_API_KEY. Destinația depinde de tipul workspace-ului: în workspace-urile bazate pe proiecte (și în LangSmith self-hosted) se setează LANGSMITH_PROJECT; în workspace-urile bazate pe agenți din LangSmith Cloud se folosesc LANGSMITH_AGENT_ID și LANGSMITH_AGENT_ENVIRONMENT. Documentația cere să nu combini cele două variante.

Pentru evaluare, LangSmith păstrează seturi de date cu exemple (inputs / outputs) și rulează experimente cu client.evaluate(). Din interfață poți selecta rulări sau fire de conversație și le adaugi într-un set de date cu Add to Dataset, ca să le reevaluezi la versiunile următoare ale aplicației.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
LANGSMITH_TRACING=true Activează trimiterea trace-urilor.
LANGSMITH_API_KEY Cheia API LangSmith.
LANGSMITH_PROJECT Proiectul de tracing, în workspace-urile bazate pe proiecte și în LangSmith self-hosted.
LANGSMITH_AGENT_ID, LANGSMITH_AGENT_ENVIRONMENT Adresarea pe agent în workspace-urile bazate pe agenți; mediul este local, development, staging sau production.
wrappers.wrap_openai(OpenAI()) Înregistrează automat apelurile clientului OpenAI.
@traceable Decorator pentru funcțiile proprii, care apar ca pași în trace.
Client().create_dataset() / create_examples() Creează un set de date și îi adaugă exemple.
client.evaluate(target, data=..., evaluators=[...]) Rulează aplicația pe un set de date și aplică evaluatorii; aevaluate() este varianta asincronă.

Exemple practice și scenarii reale

Exemplul 1: Tracing pentru clientul OpenAI

from openai import OpenAI
from langsmith.wrappers import wrap_openai

client = wrap_openai(OpenAI())

Exemplul 2: Set de date creat din cod

from langsmith import Client

client = Client()
dataset = client.create_dataset(dataset_name="Întrebări suport")
client.create_examples(
    dataset_id=dataset.id,
    examples=[
        {"inputs": {"question": "Care e termenul de retur?"},
         "outputs": {"answer": "14 zile"}},
    ],
)

Exemplul 3: Experiment cu un evaluator scris în cod

target primește inputs din setul de date; evaluatorul compară ieșirea cu reference_outputs.

def target(inputs: dict) -> dict:
    return {"answer": asistent(inputs["question"])}

def contine_raspunsul(outputs: dict, reference_outputs: dict) -> bool:
    return reference_outputs["answer"].lower() in outputs["answer"].lower()

rezultate = client.evaluate(
    target,
    data="Întrebări suport",
    evaluators=[contine_raspunsul],
    experiment_prefix="prompt-v2",
)

Greșeli frecvente și capcane

  • Setezi și LANGSMITH_PROJECT, și variabilele de agent. Documentația spune că trace-ul are atunci două destinații și SDK-ul nu alege; folosește doar varianta potrivită workspace-ului.
  • Trimiți trace-urile de dezvoltare în același proiect ca producția. Folosește proiecte sau medii separate, ca statisticile de producție să nu includă testele locale.
  • Crezi că LangSmith funcționează doar cu LangChain. Wrapper-ele și @traceable acoperă și codul scris direct pe SDK-urile furnizorilor.

Noțiuni și module înrudite