메인 콘텐츠로 건너뛰기
Weave는 LlamaIndex Python library를 통해 이루어지는 모든 call의 tracking 및 logging을 간소화하도록 설계되었습니다. LLM으로 작업할 때 디버깅은 피할 수 없습니다. 모델 call이 실패하거나, 출력 형식이 잘못되었거나, 중첩된 모델 call 때문에 혼란이 생기는 등 문제의 원인을 정확히 파악하기는 쉽지 않을 수 있습니다. LlamaIndex 애플리케이션은 여러 step과 LLM call invocation으로 이루어지는 경우가 많으므로, 체인과 에이전트의 내부 동작을 이해하는 것이 매우 중요합니다. Weave는 LlamaIndex 애플리케이션의 트레이스를 자동으로 캡처해 이 과정을 간소화합니다. 이를 통해 애플리케이션의 성능을 모니터링하고 분석할 수 있으므로, LLM 워크플로를 더 쉽게 디버그하고 최적화할 수 있습니다. Weave는 evaluation 워크플로에도 도움이 됩니다.

시작하기

시작하려면 스크립트 맨 앞에서 weave.init()만 호출하면 됩니다. weave.init()의 인수는 프로젝트 이름으로, 트레이스를 정리하는 데 도움이 됩니다.
위 예시에서는 내부적으로 OpenAI call을 수행하는 단순한 LlamaIndex 채팅 엔진을 만들고 있습니다. 아래 트레이스를 확인하세요: simple_llamaindex.png

트레이싱

LlamaIndex는 데이터를 LLM에 쉽게 연결할 수 있어 잘 알려져 있습니다. 단순한 RAG 애플리케이션에는 임베딩 step, 검색 step, 응답 합성 step이 필요합니다. 복잡성이 커질수록 개발 및 프로덕션 환경 모두에서 개별 step의 트레이스를 중앙 데이터베이스에 저장하는 것이 중요해집니다. 이러한 트레이스는 애플리케이션을 디버깅하고 개선하는 데 필수적입니다. Weave는 프롬프트 템플릿, LLM call, 도구, 에이전트 step을 포함해 LlamaIndex 라이브러리를 통해 수행되는 모든 call을 자동으로 추적합니다. Weave 웹 인터페이스에서 이러한 트레이스를 확인할 수 있습니다. 아래는 LlamaIndex’s Starter Tutorial (OpenAI)의 단순한 RAG 파이프라인 예시입니다:
트레이스 타임라인은 “events”를 캡처할 뿐만 아니라, 해당하는 경우 실행 시간, 비용, 토큰 수까지 함께 캡처합니다. 트레이스를 더 자세히 살펴보면 각 step의 입력과 출력을 확인할 수 있습니다. llamaindex_rag.png

원클릭 옵저버빌리티 🔭

LlamaIndex는 프로덕션 환경에서 원칙에 기반한 LLM 애플리케이션을 구축할 수 있도록 원클릭 옵저버빌리티 🔭를 제공합니다. 이 인테그레이션은 LlamaIndex의 이 기능을 활용해 WeaveCallbackHandler()llama_index.core.global_handler로 자동 설정합니다. 따라서 LlamaIndex와 Weave 사용자라면 Weave run만 초기화하면 됩니다 - weave.init(<name-of-project>)

더 쉽게 실험할 수 있는 Model 만들기

프롬프트, 모델 설정, Inference 파라미터 등 여러 컴포넌트가 얽혀 있어, 다양한 사용 사례의 애플리케이션에서 LLM을 구성하고 평가하는 일은 까다롭습니다. weave.Model을 사용하면 시스템 프롬프트나 사용하는 모델 같은 실험 관련 세부 정보를 기록하고 정리할 수 있어, 여러 반복 버전을 더 쉽게 비교할 수 있습니다. 다음 예제에서는 weave/data 폴더에서 찾을 수 있는 데이터를 사용해 WeaveModel로 LlamaIndex 쿼리 엔진을 빌드하는 방법을 보여줍니다.
weave.Model을 상속하는 이 SimpleRAGPipeline 클래스는 이 RAG 파이프라인의 중요한 매개변수를 관리합니다. query 메서드에 weave.op() 데코레이터를 적용하면 트레이싱이 가능해집니다. llamaindex_model.png

weave.Evaluation으로 Evaluation 수행하기

평가는 애플리케이션의 성능을 측정하는 데 도움이 됩니다. weave.Evaluation 클래스를 사용하면 특정 작업이나 데이터셋에서 모델이 얼마나 잘 수행되는지 파악할 수 있어, 서로 다른 모델과 애플리케이션의 여러 반복 버전을 더 쉽게 비교할 수 있습니다. 다음 예제는 앞서 만든 모델을 평가하는 방법을 보여줍니다:
이 평가는 앞선 섹션의 예제를 바탕으로 합니다. weave.Evaluation을 사용해 평가하려면 평가 데이터셋, 스코어러 함수, 그리고 weave.Model이 필요합니다. 다음은 이 세 가지 핵심 컴포넌트에 대한 몇 가지 유의사항입니다:
  • 평가 샘플 dict의 키가 스코어러 함수의 인자와 weave.Modelpredict 방법의 인자와 일치하는지 확인하세요.
  • weave.Model에는 predict, infer, 또는 forward라는 이름의 방법이 있어야 합니다. 트레이싱을 위해 이 방법에 weave.op()를 데코레이션하세요.
  • 스코어러 함수는 weave.op()로 데코레이션해야 하며, output이라는 명명된 인자를 가져야 합니다.
llamaindex_evaluation.png Weave를 LlamaIndex와 인테그레이션하면 LLM 애플리케이션에 대해 포괄적인 로깅과 모니터링을 수행할 수 있어, 평가를 활용한 디버깅과 성능 최적화가 더 쉬워집니다.