시작하기
시작하려면 스크립트 시작 부분에서weave.init()을 호출하기만 하면 됩니다. weave.init()의 인수는 트레이스를 정리하는 데 도움이 되는 프로젝트 이름입니다.
호출 메타데이터 추적하기
LangChain 호출에서 메타데이터를 추적하려면weave.attributes 컨텍스트 매니저를 사용할 수 있습니다. 이 컨텍스트 매니저를 사용하면 체인이나 단일 요청과 같은 특정 코드 블록에 대해 커스텀 메타데이터를 설정할 수 있습니다.
Traces
LLM 애플리케이션의 트레이스를 중앙 데이터베이스에 저장하는 것은 개발 및 프로덕션 단계 모두에서 매우 중요합니다. 이러한 트레이스는 귀중한 데이터셋을 제공함으로써 애플리케이션을 디버깅하고 개선하는 데 필수적입니다. Weave 는 LangChain 애플리케이션의 트레이스를 자동으로 캡처합니다. 프롬프트 템플릿, 체인, LLM 호출, 툴, 에이전트 단계를 포함하여 LangChain 라이브러리를 통해 이루어지는 모든 호출을 추적하고 로그를 남깁니다. Weave 웹 인터페이스에서 트레이스를 확인할 수 있습니다.
수동으로 호출 추적하기
자동 추적 외에도WeaveTracer 콜백이나 weave_tracing_enabled 컨텍스트 매니저를 사용하여 수동으로 호출을 추적할 수 있습니다. 이러한 방법은 LangChain 애플리케이션의 개별 부분에서 요청 콜백을 사용하는 것과 유사합니다.
참고: Weave 는 기본적으로 LangChain Runnable 을 추적하며, 이는 weave.init()을 호출할 때 활성화됩니다. weave.init()을 호출하기 전에 환경 변수 WEAVE_TRACE_LANGCHAIN을 "false"로 설정하여 이 동작을 비활성화할 수 있습니다. 이를 통해 애플리케이션의 특정 체인이나 개별 요청에 대한 추적 동작을 제어할 수 있습니다.
WeaveTracer 사용하기
WeaveTracer 콜백을 개별 LangChain 컴포넌트에 전달하여 특정 요청을 추적할 수 있습니다.
weave_tracing_enabled 컨텍스트 매니저 사용하기
또는 weave_tracing_enabled 컨텍스트 매니저를 사용하여 특정 코드 블록에 대해 추적을 활성화할 수 있습니다.
설정
weave.init 호출 시, 환경 변수 WEAVE_TRACE_LANGCHAIN이 "true"로 설정되어 추적이 활성화됩니다. 이를 통해 Weave 는 LangChain 애플리케이션의 트레이스를 자동으로 캡처할 수 있습니다. 이 동작을 비활성화하려면 환경 변수를 "false"로 설정하십시오.
LangChain 콜백과의 관계
자동 로깅
weave.init()에서 제공하는 자동 로깅은 LangChain 애플리케이션의 모든 컴포넌트에 생성자 콜백을 전달하는 것과 유사합니다. 즉, 프롬프트 템플릿, 체인, LLM 호출, 툴, 에이전트 단계를 포함한 모든 상호작용이 애플리케이션 전체에서 글로벌하게 추적됩니다.
수동 로깅
수동 로깅 방법(WeaveTracer 및 weave_tracing_enabled)은 LangChain 애플리케이션의 개별 부분에서 요청 콜백을 사용하는 것과 유사합니다. 이러한 방법은 애플리케이션의 어느 부분을 추적할지에 대해 더 세밀한 제어를 제공합니다:
- 생성자 콜백 (Constructor Callbacks): 전체 체인이나 컴포넌트에 적용되어 모든 상호작용을 일관되게 로깅합니다.
- 요청 콜백 (Request Callbacks): 특정 요청에 적용되어 특정 인보케이션의 상세한 추적을 가능하게 합니다.
Models 및 Evaluations
프롬프트, 모델 설정, 추론 파라미터와 같은 여러 컴포넌트가 포함된 다양한 유스 케이스의 LLM 애플리케이션을 정리하고 평가하는 것은 어려운 일입니다.weave.Model을 사용하면 시스템 프롬프트나 사용하는 모델과 같은 실험 세부 사항을 캡처하고 정리하여 서로 다른 반복(iteration)을 더 쉽게 비교할 수 있습니다.
다음 예제는 LangChain 체인을 WeaveModel로 래핑하는 방법을 보여줍니다:
Weave Models 를 serve 및 Evaluations와 함께 사용할 수도 있습니다.
Evaluations
Evaluations 는 모델의 성능을 측정하는 데 도움이 됩니다.weave.Evaluation 클래스를 사용하면 특정 태스크나 Datasets 에서 모델이 얼마나 잘 수행되는지 캡처할 수 있어, 서로 다른 모델과 애플리케이션의 반복 버전을 더 쉽게 비교할 수 있습니다. 다음 예제는 우리가 만든 모델을 평가하는 방법을 보여줍니다:
Weave 를 LangChain 과 통합함으로써 LLM 애플리케이션의 포괄적인 로깅 및 모니터링을 보장하고, 더 쉬운 디버깅과 성능 최적화를 촉진할 수 있습니다.
알려진 문제
- 비동기 호출 추적 (Tracing Async Calls) - LangChain 의
AsyncCallbackManager구현에 있는 버그로 인해 비동기 호출이 올바른 순서로 추적되지 않는 문제가 있습니다. 이를 수정하기 위해 PR을 제출했습니다. 따라서 LangChain Runnable 에서ainvoke,astream,abatch메소드를 사용할 때 트레이스의 호출 순서가 정확하지 않을 수 있습니다.