Weave 모델을 사용하여 애플리케이션과 해당 매개변수를 추적하고 버전 관리하는 방법을 알아보세요
입력, 출력, 메타데이터와 앱을 통해 흐르는 데이터를 추적하는 것은 시스템 성능을 이해하는 데 필수적입니다. 시간에 따라 앱을 버전 관리하는 것 또한 중요합니다. 코드나 매개변수의 변경이 출력에 어떤 영향을 미치는지 보여주기 때문입니다. Weave의 Model 클래스는 이러한 변경을 추적해 줍니다.이 튜토리얼은 LLM 애플리케이션의 여러 버전에서 결과를 비교하고 재현하려는 개발자를 위한 것입니다. 이 튜토리얼을 마치면 애플리케이션의 매개변수와 코드를 캡처하는 버전 관리된 Weave Model을 갖추게 됩니다. 또한 이전 버전을 조회하고 재사용하는 방법도 알게 됩니다.이 튜토리얼에서는 다음 내용을 알아봅니다:
Weave 모델을 사용하면 모델 벤더 ID, 프롬프트, temperature 등과 같은 파라미터가 변경될 때 저장되고 버전 관리됩니다.Weave에서 모델을 만들려면 다음이 필요합니다.
weave.Model을 상속하는 클래스.
모든 클래스 필드에 대한 유형 정의.
@weave.op() 데코레이터가 적용된 타입 지정 invoke 함수.
클래스 필드나 모델을 정의하는 코드를 변경하면 이러한 변경 사항이 로깅되고 버전이 업데이트됩니다. 이를 통해 앱의 서로 다른 버전 간 생성 결과를 비교할 수 있습니다.다음 예시에서는 Weave가 모델 이름, temperature, system prompt를 추적하고 버전 관리합니다:
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)
이 기능은 아직 TypeScript에서 사용할 수 없습니다.
.invoke()를 호출한 후에는 Weave의 트레이스가 weave.op()로 데코레이트된 모델 함수의 코드와 함께 모델 파라미터도 추적합니다. 또한 모델에도 버전이 지정되며(이 경우 v21) 모델을 클릭하면 해당 버전을 사용한 모든 Call을 볼 수 있습니다.weave.Model 사용 시 참고 사항:
원한다면 Weave 모델의 함수 이름으로 invoke 대신 predict를 사용할 수 있습니다.
이제 모델이 Weave에서 버전 관리되므로, 코드에서 다시 정의하지 않고도 이전 버전을 가져와 다시 실행할 수 있습니다. 이는 과거 결과를 재현하거나 특정 모델 버전을 다른 사람과 공유할 때 유용합니다.Weave는 호출한 모델을 저장하고 버전 관리하므로, 이를 내보내 재사용할 수 있습니다.
모델 객체의 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에서 사용할 수 없습니다.
이제 새 입력이 동일한 모델 버전(v21)을 사용하는 것을 확인할 수 있습니다:이제 애플리케이션의 여러 버전에서 반복적으로 개선하고, 조회하고, 재사용할 수 있는 버전 관리된 Weave Model을 갖게 되었습니다.