UI에서 실험 필터링하기

UI에서 실험 필터링하기

LangSmith를 사용하면 피드백 점수와 메타데이터로 이전 실험을 필터링해서 관심 있는 실험만 쉽게 찾을 수 있어요.

출처: 문서

본문

배경: 실험에 메타데이터 추가하기

SDK에서 실험을 실행할 때 메타데이터를 첨부하면 UI에서 필터링하기가 더 쉬워져요. 실험을 실행할 때 어떤 축으로 드릴다운하고 싶은지 안다면 이 방식이 유용합니다.

아래 예시에서는 사용된 모델, 모델 공급자, 그리고 알려진 프롬프트 ID에 대한 메타데이터를 실험에 첨부하겠습니다:

models = {
    "openai-gpt-5.5": ChatOpenAI(model="gpt-5.5", temperature=0),
    "openai-gpt-5.4-mini": ChatOpenAI(model="gpt-5.4-mini", temperature=0),
    "anthropic-claude-sonnet-4-6": ChatAnthropic(temperature=0, model_name="claude-sonnet-4-6")
}

prompts = {
    "singleminded": "always answer questions with the word banana.",
    "fruitminded": "always discuss fruit in your answers.",
    "basic": "you are a chatbot."
}

def answer_evaluator(run, example) -> dict:
    llm = ChatOpenAI(model="gpt-5.5", temperature=0)
    answer_grader = hub.pull("langchain-ai/rag-answer-vs-reference") | llm
    score = answer_grader.invoke(
        {
            "question": example.inputs["question"],
            "correct_answer": example.outputs["answer"],
            "student_answer": run.outputs,
        }
    )
    return {"key": "correctness", "score": score["Score"]}

dataset_name = "Filterable Dataset"

for model_type, model in models.items():
    for prompt_type, prompt in prompts.items():
        def predict(example):
            return model.invoke(
                [("system", prompt), ("user", example["question"])]
            )

        model_provider = model_type.split("-")[0]
        model_name = model_type[len(model_provider) + 1:]

        evaluate(
            predict,
            data=dataset_name,
            evaluators=[answer_evaluator],
            # 여기에 메타데이터를 추가하세요!!
            metadata={
                "model_provider": model_provider,
                "model_name": model_name,
                "prompt_id": prompt_type
            }
        )

UI에서 실험 필터링하기

UI에서는 기본적으로 실행된 모든 실험이 표시됩니다.

만약 예를 들어 openai 모델을 선호한다면, 먼저 openai 모델 내에서만 점수를 쉽게 필터링해서 볼 수 있어요.

필터를 쌓을 수도 있어서, correctness(정확성)에서 낮은 점수를 걸러내어 관련된 실험만 비교할 수 있습니다.

마지막으로, 필터를 지우고 초기화할 수도 있어요. 예를 들어 singleminded 프롬프트에 확실한 승자가 있다면, 필터링 설정을 변경해 다른 모델 공급자의 모델도 그것과 잘 작동하는지 확인할 수 있습니다.

더 알아보기 (Learn more)