Skip to main content
複雑な LLM ワークフローを構築する際には、精度、 コスト、または call のレイテンシに応じて、異なるモデルにプロンプトを送る必要がある場合があります。Not Diamond を使用すると、これらのワークフロー内でプロンプトを ニーズに最適なモデルへ振り分けることができ、 モデルのコストを抑えながら精度の最大化に役立ちます。

はじめに

アカウントを作成 し、APIキーを生成 してから、API キーを環境変数 NOTDIAMOND_API_KEY として設定してください。 APIキーを作成 ここから、次のことができます。

トレース

Weave は Not Diamond の Python ライブラリ と統合されており、API コールを自動的にログします。 ワークフローの開始時に weave.init() を実行するだけで、その後は通常どおりルーティングされた プロバイダを使用できます。
from notdiamond import NotDiamond

import 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 など

カスタムルーティング

独自の[カスタムルーター]を評価でトレーニングすることで、特定のユースケースに合わせて、評価パフォーマンスに基づき Not Diamond がプロンプトを振り分けられるようになります。 まず、カスタムルーターをトレーニングします:
from weave.flow.eval import EvaluationResults
from weave.integrations.notdiamond.custom_router import train_router

# gpt-4oとClaude 3.5 Sonnetの評価を構築する
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 など

追加サポート

さらにサポートが必要な場合は、ドキュメントを確認するか、お問い合わせください。