weave.init()이 호출되면 Weave가 Cohere Python 라이브러리를 통해 수행된 LLM 호출을 자동으로 추적하고 기록합니다.
LLM 애플리케이션의 트레이스를 개발 및 프로덕션 환경 모두에서 중앙 데이터베이스에 저장하는 것은 중요합니다. 이 트레이스는 디버깅에 사용될 뿐 아니라, 애플리케이션을 개선하는 데 도움이 되는 데이터셋으로도 활용됩니다.
Weave는 cohere-python에 대한 트레이스를 자동으로 수집합니다. 평소와 같이 이 라이브러리를 사용하면 되며, 먼저 weave.init()을 호출하세요.
import cohere
import os
import weave
# Cohere 라이브러리를 평소처럼 사용합니다
co = cohere.Client(api_key=os.environ["COHERE_API_KEY"])
weave.init("cohere_project")
response = co.chat(
message="How is the weather in Boston?",
# 질문에 답하기 전에 웹 검색을 수행합니다. 자체 커스텀 커넥터를 사용할 수도 있습니다.
connectors=[{"id": "web-search"}],
)
print(response.text)
weave.init()를 호출할 때 W&B team을 지정하지 않으면 기본 entity가 사용됩니다. 기본 entity를 찾거나 업데이트하려면 W&B Models 문서의 User Settings를 참조하세요.
Cohere 모델의 강력한 기능 중 하나는 connectors를 사용하는 것으로, 이를 통해 엔드포인트에서 다른 API에 요청을 보낼 수 있습니다. 그런 다음 응답에는 커넥터에서 반환된 문서에 연결되는 출처 인용 요소와 함께 생성된 텍스트가 포함됩니다.
W&B에서는 LLM 호출을 추적할 수 있도록 Cohere의 Client.chat, AsyncClient.chat, Client.chat_stream, AsyncClient.chat_stream 메서드를 패치합니다.
Weave op은 실험하는 동안 코드를 자동으로 버저닝하고, 입력과 출력을 캡처하여 결과를 재현 가능하게 만듭니다. Cohere의 챗 메서드를 호출하는 함수를 @weave.op() 데코레이터로 감싸기만 하면, Weave가 입력과 출력을 자동으로 추적해 줍니다. 예시는 다음과 같습니다:
import cohere
import os
import weave
co = cohere.Client(api_key=os.environ["COHERE_API_KEY"])
weave.init("cohere_project")
@weave.op()
def weather(location: str, model: str) -> str:
response = co.chat(
model=model,
message=f"How is the weather in {location}?",
# 질문에 답하기 전에 웹 검색을 수행합니다. 자체 커스텀 커넥터를 사용할 수도 있습니다.
connectors=[{"id": "web-search"}],
)
return response.text
print(weather("Boston", "command"))
요소가 많을수록 실험을 체계적으로 정리하기는 어렵습니다. Model 클래스를 사용하면 시스템 프롬프트나 사용 중인 모델과 같은 앱의 실험 세부 정보를 캡처하고 정리할 수 있습니다. 이를 통해 앱의 다양한 반복 버전을 정리하고 비교하기가 쉬워집니다.
코드 버전 관리와 입출력 캡처뿐 아니라 Model은 애플리케이션 동작을 제어하는 구조화된 파라미터도 함께 캡처하여, 어떤 파라미터 조합이 가장 잘 동작했는지 쉽게 찾을 수 있게 해 줍니다. 또한 Weave Models를 serve 및 Evaluation과 함께 사용할 수 있습니다.
아래 예제에서는 model과 temperature를 바꾸면서 실험할 수 있습니다. 둘 중 하나를 변경할 때마다 WeatherModel의 새로운 버전이 생성됩니다.
import weave
import cohere
import os
weave.init('weather-cohere')
class WeatherModel(weave.Model):
model: str
temperature: float
@weave.op()
def predict(self, location: str) -> str:
co = cohere.Client(api_key=os.environ["COHERE_API_KEY"])
response = co.chat(
message=f"How is the weather in {location}?",
model=self.model,
temperature=self.temperature,
connectors=[{"id": "web-search"}]
)
return response.text
weather_model = WeatherModel(
model="command",
temperature=0.7
)
result = weather_model.predict("Boston")
print(result)
