메인 콘텐츠로 건너뛰기
Colab에서 열기 Weave는 weave.init()이 호출된 뒤에는 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 팀을 지정하지 않으면 기본 엔터티가 사용됩니다. 기본 엔터티를 확인하거나 변경하려면 W&B Models 문서의 User Settings를 참조하세요. cohere 모델의 강력한 기능 중 하나는 connectors를 사용하는 것으로, 이를 통해 엔드포인트 측에서 다른 API에 요청을 보낼 수 있습니다. 이후 응답에는 커넥터에서 반환된 문서에 연결되는 인용 요소와 함께 생성된 텍스트가 포함됩니다. cohere_trace.png
W&B에서는 LLM 호출을 추적할 수 있도록 Cohere의 Client.chat, AsyncClient.chat, Client.chat_stream, AsyncClient.chat_stream 메서드를 패치합니다.

나만의 op으로 래핑하기

Weave op은 실험하는 동안 코드를 자동으로 버전 관리하고 입력과 출력을 캡처하여 결과를 재현 가능하게 만듭니다. Cohere의 chat 메서드를 호출하는 함수를 @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"))
cohere_ops.png

더 쉽게 실험하기 위해 Model 생성하기

구성 요소가 많을수록 실험을 체계적으로 관리하기가 어렵습니다. Model 클래스를 사용하면 시스템 프롬프트나 사용 중인 모델처럼 앱의 실험 세부 정보를 기록하고 정리할 수 있습니다. 이렇게 하면 앱의 다양한 반복 버전을 체계적으로 정리하고 비교할 수 있습니다. 코드 버저닝과 입력/출력 기록뿐 아니라, Model은 애플리케이션의 동작을 제어하는 구조화된 파라미터도 함께 캡처하므로, 어떤 파라미터가 가장 잘 작동했는지 쉽게 찾을 수 있습니다. 또한 Weave의 Model을 serveEvaluation과 함께 사용할 수 있습니다. 아래 예시에서는 modeltemperature를 바꿔 가며 실험할 수 있습니다. 이 둘 중 하나를 변경할 때마다 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)
cohere_model.png