外部LLM(OpenAI, Claude, LLaMAなど)との接続

1. 概要 — AutoGen で外部 LLM を扱う考え方

AutoGen のエージェントは llm_config で LLM との接続情報を受け取ります。config_list という配列に 「モデル名・キー・API 種別・エンドポイント URL など」 を列挙し、エージェント生成時に渡すだけで OpenAI 互換 API独自クライアント も同じ書式で管理できますmicrosoft.github.io
以下では主要な 3 系統 ― OpenAI/Azure OpenAI・Anthropic Claude・LLaMA 系(LiteLLM+Ollama 例) ― の実装手順と運用上の注意点を解説します。


2. OpenAI / Azure OpenAI との接続

2-1. Python-API 版(最もシンプルなケース)

python
import os, autogen llm_config = { "config_list": [ { "model": "gpt-4o-2024-05-13", "api_key": os.environ["OPENAI_API_KEY"], # 任意オプション "api_rate_limit": 60.0, # QPS 上限 "tags": ["primary", "fallback"] } ] } assistant = autogen.AssistantAgent("assistant", llm_config=llm_config)
  • Assistant API(server-side agent)を使う場合は、[Cookbook] の実装例のように OpenAIAssistantAgent を継承すると、スレッド管理・ストリーミング出力・コード実行ツール等を統合できますmicrosoft.github.io

  • マルチモデル冗長化: config_list を複数記述しておくと、タイムアウト時に順次フォールバックできます。

2-2. Azure OpenAI デプロイへの差替え

api_type: "azure", base_url, api_version を追加し、model には デプロイ名 を入れるだけです(Chat Completion エンドポイント互換)microsoft.github.io


3. Anthropic Claude との接続

  1. 追加ライブラリ

    bash
    pip install "autogen-agentchat[anthropic]" anthropic>=0.23.1
  2. 設定例

    python
    import os, autogen claude_cfg = { "config_list": [ { "model": "claude-3-opus-20240229", "api_key": os.getenv("ANTHROPIC_API_KEY"), "api_type": "anthropic", "temperature": 0.5, "max_tokens": 10_000 } ] } assistant = autogen.AssistantAgent("claude_agent", llm_config=claude_cfg)
  3. 特徴と留意点

    • AutoGen v0.2.30 以降は Anthropic Client をネイティブサポートし、Function/Tool Calling のトークン課金も自動集計されますmicrosoft.github.io

    • OpenAI 形式との併用も可能。tags で「reasoning=Claude」「coding=gpt-4o」など役割分担させるのが典型です。


4. LLaMA・その他オープンモデルとの接続(LiteLLM+Ollama 例)

4-1. なぜプロキシを使うのか

多くのオープンモデルは OpenAI 互換 HTTP インタフェース を持たないため、AutoGen からは LiteLLM(OpenAI 互換プロキシ)や vLLMLM Studio 経由で呼び出すのが最短ですmicrosoft.github.io

4-2. 手順(ローカル推論)

bash
# 1) モデル提供サーバを用意 curl -fsSL https://ollama.com/install.sh | sh ollama pull llama3:instruct # 2) OpenAI 互換プロキシを起動 pip install 'litellm[proxy]' litellm --model ollama/llama3:instruct # → http://0.0.0.0:4000 にエンドポイント誕生
python
local_llm_config = { "config_list": [{ "model": "NotRequired", # LiteLLM 起動時に固定 "api_key": "NotRequired", "base_url": "http://0.0.0.0:4000", "price": [0, 0] # コスト計測を 0 に }], "cache_seed": None } assistant = autogen.ConversableAgent("local_llama", llm_config=local_llm_config)
  • 制約: Ollama-API は一部機能(function_call など)を実装していない場合があります。使用前に該当プロキシの互換性表を確認してくださいmicrosoft.github.iomicrosoft.github.io

  • .NET 版 AutoGen でも同じ考え方で OpenAIChatAgent にローカル URL を渡せます(/v1/ パス必須)microsoft.github.io

4-3. カスタム Model Client(上級者向け)

自前で推論ランタイムを実装している場合は、ChatCompletionClient を継承し create() を定義するだけで純粋な Python 関数呼び出し に落とし込めます。AutoGen 公式ブログのチュートリアルを参照。


5. マルチ LLM オーケストレーションのベストプラクティス

課題 推奨設定・テクニック
コスト最適化 config_list に単価を含め、軽量タスクを GPT-3.5/重い推論を GPT-4o へタグで振り分け
可用性向上 同一タスク用に複数モデルを列挙 ➜ タイムアウト時に自動リトライ
速度改善 Claude(高速長文)+ GPT-4o(コード生成)+ LLaMA(ローカル推論)をパラレル呼び出し
安全性 モデルごとに max_tokensstop を明示し、出力長暴走を防止

6. 運用・セキュリティの注意点

  • API キーは必ず環境変数または JSON ファイル に分離し、Git へコミットしない(config_list_from_json() パターンが便利)microsoft.github.io

  • Rate Limit とリトライ: api_rate_limit, timeout, retry_wait_time を設定してスロットリングに備える。

  • 観測性: Agent Observability モジュールや OpenTelemetry 連携で呼び出し回数・トークン数をダッシュボード化。

  • キャッシュ: セッション内の重複呼び出しを避けるため seed_cache やローカル DB キャッシュを有効化。


7. まとめ

  • AutoGen の外部 LLM 連携は “OpenAI 互換 API + config_list” が基本形

  • OpenAI/Azure はネイティブ対応、Claudeapi_type:"anthropic" で即利用可能。

  • オープン LLMLiteLLM、Ollama、vLLM などプロキシ経由が最短。

  • マルチ LLM を組み合わせることで 性能・コスト・速度・オンプレ制約 をバランス良く最適化できる。

これらの設計指針とコード断片を組み合わせれば、AutoGen エージェントを あらゆる外部 LLM と柔軟に統合 し、プロダクション品質のマルチエージェントアプリケーションを構築できます。

ChatGPT4o 生成日:2025/06/15