Weave Model을 사용하여 애플리케이션과 매개변수를 추적하고 버전을 관리하는 방법을 알아보세요
시스템의 성능을 파악하려면 입력, 출력, 메타데이터와 함께 앱을 거쳐 가는 데이터를 추적하는 것이 필수적입니다. 앱의 버전을 지속적으로 관리하는 것도 그에 못지않게 중요합니다. 코드나 매개변수를 변경했을 때 출력이 어떻게 달라지는지 확인할 수 있기 때문입니다. Weave의 Model 클래스를 사용하면 이러한 변경 사항이 자동으로 추적됩니다.이 튜토리얼은 LLM 애플리케이션의 여러 버전 간에 결과를 비교하고 재현하려는 개발자를 대상으로 합니다. 튜토리얼을 마치면 애플리케이션의 매개변수와 코드를 캡처하고 버전이 관리되는 Weave Model을 만들 수 있습니다. 또한 이전 버전을 조회하여 재사용하는 방법도 익힐 수 있습니다.이 튜토리얼에서 배울 내용은 다음과 같습니다.
Weave Model을 사용하면 모델 공급업체 ID, 프롬프트, temperature 등의 매개변수가 변경될 때마다 Weave가 이를 저장하고 버전을 관리합니다.Weave에서 Model을 만들려면 다음이 필요합니다.
weave.Model을 상속하는 클래스
모든 클래스 필드에 대한 유형 정의
@weave.op() 데코레이터가 적용되고 유형이 지정된 invoke 함수
클래스 필드나 모델을 정의하는 코드를 변경하면 Weave가 변경 사항을 로깅하고 버전을 업데이트합니다. 따라서 앱의 여러 버전 간에 생성 결과를 비교할 수 있습니다.다음 예시에서 Weave는 모델 이름, temperature, system 프롬프트를 추적하고 버전을 관리합니다.
weave.init('jurassic-park')client = OpenAI()system_prompt = """Extract any dinosaur `name`, their `common_name`, \names and whether its `diet` is a herbivore or carnivore, in JSON format."""dinos = ExtractDinos( client=client, model_name='gpt-4o', temperature=0.4, system_prompt=system_prompt)sentence = """I watched as a Tyrannosaurus rex (T. rex) chased after a Triceratops (Trike), \both carnivore and herbivore locked in an ancient dance. Meanwhile, a gentle giant \Brachiosaurus (Brachi) calmly munched on treetops, blissfully unaware of the chaos below."""result = dinos.invoke(sentence)print(result)
This feature is not available in TypeScript yet.
.invoke()를 호출하면 Weave의 트레이스에 모델 매개변수와 weave.op()으로 데코레이트된 모델 함수의 코드가 함께 추적됩니다. 모델의 버전도 관리됩니다(이 예시에서는 v21). 모델을 클릭하면 해당 버전을 사용한 모든 Call을 확인할 수 있습니다.weave.Model 사용 시 참고 사항:
원하는 경우 Weave Model의 함수 이름으로 invoke 대신 predict를 사용할 수 있습니다.
이제 Weave에서 모델의 버전이 관리되므로, 코드에서 모델을 다시 정의하지 않고도 이전 버전을 가져와 다시 실행할 수 있습니다. 이 기능은 과거 결과를 재현하거나 특정 모델 버전을 다른 사람과 공유할 때 유용합니다.Weave는 호출된 Model을 저장하고 버전을 관리하므로, 이를 내보내고 재사용할 수 있습니다.
Model 객체의 URI를 확인했다면 이를 내보내 재사용할 수 있습니다. 내보낸 모델은 이미 초기화되어 있으므로 바로 사용할 수 있습니다.
Python
TypeScript
# 내보낸 Weave 모델은 이미 초기화되어 있으므로 바로 호출할 수 있습니다.new_dinos = weave.ref("weave://morgan/jurassic-park/object/ExtractDinos:ey4udBU2MU23heQFJenkVxLBX4bmDsFk7vsGcOWPjY4").get()# 클라이언트를 다시 OpenAI 클라이언트로 설정합니다.new_dinos.client = clientnew_sentence = """I also saw an Ankylosaurus grazing on giant ferns"""new_result = new_dinos.invoke(new_sentence)print(new_result)
이 기능은 아직 TypeScript에서 사용할 수 없습니다.
이제 새 입력에도 동일한 Model 버전(v21)이 사용된 것을 확인할 수 있습니다.이제 버전 관리되는 Weave Model을 갖추었으므로, 애플리케이션의 여러 버전에서 이 모델을 반복 개선하고 조회하고 재사용할 수 있습니다.