weave.init()를 호출하면 Weave가 ChatNVIDIA 라이브러리를 통해 이루어지는 LLM Call을 자동으로 추적하고 기록합니다. 이 가이드에서는 ChatNVIDIA를 사용하는 Python 개발자가 트레이스를 캡처하고, 자신의 함수를 Ops로 래핑하고, Weave의 Model 클래스를 사용해 실험을 구성하여 LLM 애플리케이션을 더 효율적으로 디버그하고, 개선을 반복하고, 비교하는 방법을 설명합니다.
트레이싱
- Python
- TypeScript
Weave는 ChatNVIDIA Python 라이브러리의 트레이스를 자동으로 캡처할 수 있습니다.원하는 프로젝트 이름으로 이 코드를 실행하면 Weave가 지정한 프로젝트 이름 아래에 ChatNVIDIA call을 캡처하며, 여기에서 입력, 출력, 메타데이터를 검사할 수 있습니다.
weave.init([PROJECT-NAME])을 호출해 캡처를 시작하세요.
나만의 op 추적하기
- Python
- TypeScript
함수에 Weave로 이동한 다음 UI에서
@weave.op를 적용하면 입력, 출력, 앱 로직 캡처가 시작되어 앱에서 데이터가 어떻게 흐르는지 디버그할 수 있습니다. op를 깊게 중첩해 추적하려는 함수 트리를 구축할 수도 있습니다. 또한 실험하는 동안 자동 코드 버전 관리가 시작되어 아직 Git에 커밋하지 않은 임시 세부 정보도 캡처할 수 있습니다.ChatNVIDIA Python library를 호출하는 @weave.op로 데코레이션된 함수를 만드세요.다음 예시에서는 두 개의 함수가 op로 래핑됩니다. 이를 통해 RAG 앱의 retrieval step 같은 중간 step이 앱 동작에 어떤 영향을 주는지 확인할 수 있습니다.get_pokemon_data를 클릭해 해당 step의 입력과 출력을 확인하세요.
더 쉽게 실험하려면 Model 만들기
- Python
- TypeScript
실험과 관련된 요소가 많아지면 이를 체계적으로 정리하기가 어렵습니다.
Model 클래스를 사용하면 system 프롬프트나 사용 중인 모델처럼 앱의 실험 세부 정보를 캡처하고 정리할 수 있습니다. 이렇게 하면 앱의 여러 반복 버전을 정리하고 비교하는 데 도움이 됩니다.코드 버전을 관리하고 입력과 출력을 캡처하는 것에 더해, Model은 애플리케이션의 동작을 제어하는 구조화된 매개변수도 캡처하므로 어떤 매개변수가 가장 효과적이었는지 쉽게 찾을 수 있습니다. 또한 Weave Models를 serve 및 Evaluation과 함께 사용할 수도 있습니다.다음 예시에서는 model 및 system_message를 바꿔 가며 실험할 수 있습니다. 이 둘 중 하나를 변경할 때마다 GrammarCorrectorModel의 새 version 이 생성됩니다.
사용 정보
invoke, stream 및 해당 비동기 버전을 지원합니다. 또한 도구 사용도 지원합니다.
ChatNVIDIA는 여러 유형의 모델과 함께 사용하도록 설계되었기 때문에 함수 호출은 지원하지 않습니다.