Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
weave.init() の呼び出し後、Weave は LiteLLM 経由で行われた LLM 呼び出しを自動的にトラッキングしてログします。
開発中でも本番環境でも、LLM アプリケーションのトレースを一元的なデータベースに保存しておくことが重要です。これらのトレースはデバッグに使用するほか、アプリケーションの改善に役立つデータセットとしても活用できます。
注: LiteLLM を使用する場合は、from litellm import completion ではなく、必ず import litellm を使ってライブラリをインポートし、litellm.completion() で completion 関数を呼び出してください。これにより、すべての関数とパラメーターが正しく参照されます。
Weave は LiteLLM のトレースを自動的に取得します。このライブラリは通常どおり使用でき、まず weave.init() を呼び出して開始します。
import litellm
import weave
weave.init("weave_litellm_integration")
openai_response = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}],
max_tokens=1024
)
print(openai_response.choices[0].message.content)
claude_response = litellm.completion(
model="claude-3-5-sonnet-20240620",
messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}],
max_tokens=1024
)
print(claude_response.choices[0].message.content)
Weave で、LiteLLM を通じて行われるすべての LLM 呼び出しがトラッキングおよびログするようになりました。Weave の Web インターフェースでトレースを確認できます.
Weave の op は、実験中のコードを自動的にバージョン管理し、入力と出力を記録することで、結果の再現性を高めます。@weave.op() でデコレートした関数を作成し、その中で LiteLLM の completion 関数を呼び出すだけで、Weave が入力と出力をトラッキングしてくれます。以下はその例です。
import litellm
import weave
weave.init("weave_litellm_integration")
@weave.op()
def translate(text: str, target_language: str, model: str) -> str:
response = litellm.completion(
model=model,
messages=[{"role": "user", "content": f"Translate '{text}' to {target_language}"}],
max_tokens=1024
)
return response.choices[0].message.content
print(translate("Hello, how are you?", "French", "gpt-3.5-turbo"))
print(translate("Hello, how are you?", "Spanish", "claude-3-5-sonnet-20240620"))
試行錯誤をしやすくするために Model を作成する
構成要素が多いと、実験内容を整理するのは難しくなります。Model クラスを使用すると、system prompt や使用しているモデルなど、アプリの実験に関する詳細を取得して整理できます。これにより、アプリの異なるバージョンを整理して比較しやすくなります。
コードのバージョン管理や入出力の記録に加えて、Models はアプリケーションの挙動を制御する構造化されたパラメーターも取得するため、どのパラメーターが最も効果的だったかを簡単に確認できます。さらに、Weave Models は serve や評価でも使用できます。
以下の例では、さまざまなモデルと temperature を試せます。
import litellm
import weave
weave.init('weave_litellm_integration')
class TranslatorModel(weave.Model):
model: str
temperature: float
@weave.op()
def predict(self, text: str, target_language: str):
response = litellm.completion(
model=self.model,
messages=[
{"role": "system", "content": f"You are a translator. Translate the given text to {target_language}."},
{"role": "user", "content": text}
],
max_tokens=1024,
temperature=self.temperature
)
return response.choices[0].message.content
# 異なるモデルのインスタンスを作成する
gpt_translator = TranslatorModel(model="gpt-3.5-turbo", temperature=0.3)
claude_translator = TranslatorModel(model="claude-3-5-sonnet-20240620", temperature=0.1)
# 異なるモデルを翻訳に使用する
english_text = "Hello, how are you today?"
print("GPT-3.5 Translation to French:")
print(gpt_translator.predict(english_text, "French"))
print("\nClaude-3.5 Sonnet Translation to Spanish:")
print(claude_translator.predict(english_text, "Spanish"))
LiteLLM は、互換性のあるモデルで関数呼び出しをサポートしています。Weave はこれらの関数呼び出しを自動的にトラッキングします。
import litellm
import weave
weave.init("weave_litellm_integration")
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}],
functions=[
{
"name": "translate",
"description": "Translate text to a specified language",
"parameters": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text to translate",
},
"target_language": {
"type": "string",
"description": "The language to translate to",
}
},
"required": ["text", "target_language"],
},
},
],
)
print(response)
プロンプトで使用した関数は自動的に記録され、バージョン管理された状態で保持されます。
