Articlelangchain.com·2026년 8월 25일·0

Introducing Pytest and Vitest integrations for LangSmith Evaluations

Quick Summary

LangSmith는 기존 테스트 개발 흐름에서 LLM 애플리케이션을 평가하고 결과를 추적·공유할 수 있도록 Pytest 및 Vitest/Jest 통합을 베타로 공개했다.

Introducing Pytest and Vitest integrations for LangSmith Evaluations 관련 대표 이미지

🖼️ 인포그래픽

Introducing Pytest and Vitest integrations for LangSmith Evaluations 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Introducing Pytest and Vitest integrations for LangSmith Evaluations의 핵심 내용을 4단계로 요약한 인포그래픽
Introducing Pytest and Vitest integrations for LangSmith Evaluations 핵심 내용을 4단계로 압축한 4컷 인포그래픽

💡 한 줄 요약

LangSmith는 기존 테스트 개발 흐름에서 LLM 애플리케이션을 평가하고 결과를 추적·공유할 수 있도록 Pytest 및 Vitest/Jest 통합을 베타로 공개했다.

📌 핵심 요약

  • 2025년 1월 22일 발표된 Pytest 및 Vitest/Jest 통합은 LangSmith Python·TypeScript SDK v0.3.0에서 베타로 제공된다.
  • LangSmith는 테스트의 입력·출력과 스택 추적을 저장하고, 통과·실패 이외의 지표와 피드백을 기록하며, 시간에 따른 결과 비교와 팀 내 실험 결과 공유를 지원한다.
  • Pytest에서는 @pytest.mark.langsmith로 테스트를 추적하고, Vitest에서는 ls.describe()로 테스트를 감싼다. 테스트 모음을 실행하면 LangSmith 데이터셋이 생성·갱신되고 새 실험이 생성된다.
  • SQL 생성 애플리케이션 예제는 주제에서 벗어난 입력에 대한 응답을 평가하며, gpt-4o-mini로 실제 응답과 기준 응답의 의미적 동등성을 0 또는 1로 채점해 correctness 피드백을 기록한다.
  • 데이터셋 전체에 같은 평가를 적용하는 evaluate() 방식과 비교해, 테스트 프레임워크 통합은 사례별 평가 로직, 실시간 로컬 피드백, CI의 통과·실패 판정에 강점이 있다. 발표 당시 GitHub Action은 향후 몇 주 내 공개 예정이었다.

🧩 주요 포인트

  1. 비결정적 출력과 다양한 품질 기준 → LangSmith의 추적 정보와 수치 피드백을 활용해 오류 원인과 품질 변화를 함께 살필 수 있다.
  2. 도구마다 다른 평가 기준 → Pytest 및 Vitest/Jest의 개별 테스트에 맞춤 평가 로직을 두면 전역 평가 함수에 모든 조건을 담는 부담이 줄어든다.
  3. 공통 데이터셋 평가와 사례별 검증의 차이 → 동일 평가를 반복하는 작업에는 evaluate(), 세부 동작 검증과 로컬·CI 반복에는 테스트 프레임워크 통합이 적합하다.

🧠 상세 정리

1. 익숙한 테스트 방식으로 확장한 LLM 평가

LangChain 팀은 2025년 1월 22일 LangSmith의 Pytest 및 Vitest/Jest 통합을 발표했다. 이 기능은 LangSmith Python·TypeScript SDK v0.3.0에서 베타로 제공되며, 기존 테스트 프레임워크를 통해 LLM 애플리케이션 평가를 실행하는 방식이다. 원문은 평가를 애플리케이션의 성능을 확인하고 업데이트 이후에도 품질을 일관되게 유지하기 위한 필수 과정으로 설명한다. 소프트웨어 개발자에게 익숙한 테스트 작성 경험과 실행 동작에 LangSmith의 관측 및 공유 기능을 결합하는 것이 도입 취지다.

2. 디버깅·지표 기록·팀 협업 지원

LLM 애플리케이션은 출력이 비결정적이어서 문제 원인을 추적하는 데 추가적인 복잡성이 있다. LangSmith는 테스트 사례의 입력·출력과 스택 추적을 저장해 원인 파악을 돕는다. 명확한 통과·실패 기준이 없는 경우에도 지표와 피드백을 기록하고 시간에 따른 결과를 비교해 품질 개선과 회귀 여부를 살필 수 있다. 실험 결과를 팀에 공유할 수 있어 프롬프트나 평가 작성에 참여하는 분야 전문가와의 협업도 지원한다. Python에서는 expect.edit_distance()처럼 실제 출력과 기준 출력 사이의 문자열 거리를 계산하는 내장 평가 함수도 제공한다.

3. Pytest에서 SQL 생성 응답 평가하기

Pytest 예제는 SQL 생성 애플리케이션이 주제에서 벗어난 사용자 입력을 올바르게 식별하는지 확인한다. 테스트에 @pytest.mark.langsmith를 붙이고, 입력과 기준 응답 및 실제 출력을 각각 기록한다. 이어 t.trace_feedback() 안에서 gpt-4o-mini가 실제 응답과 기준 응답의 의미적 동등성을 0 또는 1로 판정하게 하고, 점수를 correctness 피드백으로 저장한다. 예제는 실제 응답과 점수에 대한 단언도 수행한다. 평소처럼 pytest tests를 실행하면 테스트 결과, 애플리케이션 추적, 피드백 추적이 LangSmith에 기록되며, 테스트 모음에 대응하는 데이터셋이 생성·갱신되고 새 실험이 만들어진다.

4. Vitest에서 평가 함수와 피드백 연결하기

Vitest 예제는 langsmith/vitest를 가져온 뒤 ls.describe() 블록 안에 ls.test()로 테스트 사례를 정의한다. 테스트 데이터에는 주제에서 벗어난 사용자 입력과 이에 대응하는 기준 응답을 넣고, 애플리케이션이 반환한 결과는 ls.logOutputs()로 기록한다. 별도로 정의한 평가 함수는 gpt-4o-mini를 호출해 실제 출력과 기준 출력의 의미적 동등성을 판정하고 correctness 키와 점수를 반환한다. 이 함수를 ls.wrapEvaluator()로 감싸 실행하면 평가 결과가 피드백으로 자동 기록된다. 원문은 통합 대상을 Vitest/Jest로 소개하지만, 본문에 제시한 구체적인 코드는 Vitest용 예제다.

5. 데이터셋 중심 평가와 사례별 평가의 차이

원문은 OpenAI Evals, Hugging Face의 Evaluate, LangSmith의 evaluate()가 대체로 데이터셋을 먼저 만들고 생성 함수와 평가 함수들을 적용하는 구조라고 설명한다. 이 방식은 에이전트의 입력과 출력을 블랙박스로 검사하는 경우처럼 데이터셋 전체에 동일한 평가를 실행할 때 잘 맞는다. 반면 애플리케이션의 특정 부분을 검증할 때는 사례와 평가 로직을 개별 테스트로 정의하는 편이 더 유연하고 직관적이라고 설명한다. 여러 도구를 사용하는 에이전트는 도구별로 평가 방법이 크게 달라질 수 있어 전역 평가 함수를 정의하는 작업이 번거로워진다. 새 통합은 각 테스트 사례에 별도의 평가 로직을 두는 방식으로 이런 차이를 다룬다.

6. 로컬 반복 개발과 CI 적용

테스트 프레임워크는 테스트 상태를 실시간으로 보여 주므로 로컬 개발 중 문제를 발견하고 수정하는 반복을 돕는다. 원문은 애플리케이션의 일부를 모의 처리하면서 평가를 빠르게 실행해야 하는 상황에서도 이 피드백이 유용하다고 설명한다. CI에서는 통과·실패 기준과 단언 오류를 활용해 회귀를 조기에 발견할 수 있다. 발표 당시에는 구성을 더 쉽게 할 GitHub Action을 향후 몇 주 내 공개할 예정이라고 밝혔으며, 이미 제공되는 기능으로 서술하지 않았다. 시작 자료로 Python·TypeScript 개발자 튜토리얼, 사용 안내와 영상이 제시되었고, 의견과 기능 요청은 LangChain Slack 커뮤니티 또는 GitHub 이슈를 통해 받는다고 안내했다.

🧾 핵심 주장 / 시사점

  • 통과·실패 판정과 품질 지표 기록을 함께 지원하므로, 명확한 기준이 있는 테스트와 점진적인 품질 비교를 같은 테스트 흐름에서 수행할 수 있다.
  • 애플리케이션 실행과 평가 피드백 생성을 분리해 추적하면 실제 응답이 만들어지는 과정과 그 응답을 채점하는 과정을 구분해 살필 수 있다.
  • 테스트 프레임워크 통합의 핵심은 기존 데이터셋 평가를 대체하는 데 있지 않고, 사례마다 다른 평가 기준과 개발 중 반복 검증을 지원하는 데 있다.

✅ 액션 아이템

  • LangSmith Python·TypeScript SDK v0.3.0의 베타 제공 상태를 고려해 Pytest 또는 Vitest/Jest 통합 적용 가능성 검토.
  • 동일 평가의 반복 여부와 사례별 평가 로직의 필요성을 기준으로 evaluate()와 테스트 프레임워크 통합의 사용 범위 구분.
  • SQL 생성 예제의 correctness 피드백과 0 또는 1 채점 방식을 바탕으로 응답 평가 및 CI 통과·실패 기준 검토.

❓ 열린 질문

  • 현재 평가 대상은 evaluate()로 동일 평가를 반복하는 방식과 Pytest 및 Vitest/Jest로 사례별 평가 로직을 정의하는 방식 중 어디에 더 적합한가?
  • gpt-4o-mini가 의미적 동등성을 0 또는 1로 채점하는 SQL 생성 예제의 방식으로 필요한 응답 품질을 충분히 판단할 수 있는가?
  • LangSmith에 기록하는 지표와 피드백 중 어떤 항목을 CI의 통과·실패 기준으로 사용할 것인가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.