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 モデルの強力な機能の 1 つが connectors の利用です。これにより、エンドポイント側から他の API へリクエストを送信できます。レスポンスには、コネクタから返されたドキュメントへのリンクとなる引用情報を含んだ生成テキストが含まれます。
LLM 呼び出しを追跡できるように、Cohere の Client.chat、AsyncClient.chat、Client.chat_stream、AsyncClient.chat_stream メソッドには、こちらで自動的にパッチを適用します。
Weave の ops は、実験中のコードを自動でバージョン管理し、入力と出力を記録することで、結果を再現可能にします。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 クラスを使うと、システムプロンプトや使用しているモデルなど、アプリの実験に関する詳細情報を記録して整理できます。これにより、アプリのさまざまなバージョンを整理し、比較しやすくなります。
コードのバージョニングや入力/出力の記録に加えて、Models はアプリケーションの振る舞いを制御する構造化されたパラメータも記録するため、どのパラメータが最も有効だったかを簡単に特定できます。また、Weave Models を serve や Evaluations と組み合わせて使用することもできます。
次の例では、model と temperature を変えて実験できます。これらのいずれかを変更するたびに、WeatherModel の新しい version が作成されます。
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)
