Skip to main content
複雑な LLM ワークフローを構築する際、ユーザーは精度、コスト、または呼び出しのレイテンシに応じて異なるモデルにプロンプトを送信する必要がある場合があります。 Not Diamond を使用すると、これらのワークフロー内のプロンプトをニーズに合った適切なモデルにルーティングでき、モデルコストを抑えながら精度を最大化できます。

クイックスタート

アカウントを作成 し、 APIキーを生成 していることを確認してください。その後、環境変数 NOTDIAMOND_API_KEY として API キーを追加します。 ![APIキーの作成] ここから、以下のことが行えます。

トレース

Weave は Not Diamond の Python ライブラリ と連携し、 自動的に API 呼び出しをログに記録 します。ワークフローの開始時に weave.init() を実行するだけで、あとは通常通りルーティングされたプロバイダーを使用できます。
from notdiamond import NotDiamond

import weave
# Weaveを初期化
weave.init('notdiamond-quickstart')

client = NotDiamond()
session_id, provider = client.chat.completions.model_select(
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Concisely explain merge sort."}
    ],
    model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620']
)

print("LLM called: ", provider.provider)  # openai, anthropic など
print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620 など

カスタムルーティング

また、 Evaluations に基づいて独自の カスタムルーター をトレーニングすることもできます。これにより、特定の use case における評価パフォーマンスに従って Not Diamond がプロンプトをルーティングできるようになります。 まず、カスタムルーターをトレーニングします。
from weave.flow.eval import EvaluationResults
from weave.integrations.notdiamond.custom_router import train_router

# gpt-4o と Claude 3.5 Sonnet で Evaluation を構築
evaluation = weave.Evaluation(...)
gpt_4o = weave.Model(...)
sonnet = weave.Model(...)

model_evals = {
    'openai/gpt-4o': evaluation.get_eval_results(gpt_4o),
    'anthropic/claude-3-5-sonnet-20240620': evaluation.get_eval_results(sonnet),
}
preference_id = train_router(
    model_evals=model_evals,
    prompt_column="prompt",
    response_column="actual",
    language="en",
    maximize=True,
)
この preference ID を model_select リクエストで再利用することで、評価データに基づいてパフォーマンスを最大化し、コストを最小限に抑えるようにプロンプトをルーティングできます。
from notdiamond import NotDiamond
client = NotDiamond()

import weave
weave.init('notdiamond-quickstart')

session_id, provider = client.chat.completions.model_select(
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Concisely explain merge sort."}
    ],
    model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620'],

    # この preference ID を渡すことでカスタムルーターを再利用します
    preference_id=preference_id
)

print("LLM called: ", provider.provider)  # openai, anthropic など
print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620 など

追加のサポート

さらなるサポートについては、 ドキュメント を参照するか、 メッセージを送信 してください。