AutoGen Studio × LM Studio 連携ガイド:ローカルLLMで安全にエージェントを動かす

AutoGen

生成AIエージェントの開発が進む中で、AutoGen Studioは「複数エージェントをノーコードで連携・実行できる」ツールとして注目を集めています。
一方、LM Studioは「ローカルPCでOpenAI互換APIを立ち上げ、さまざまなLLMを動かせる」環境を提供します。

この2つを組み合わせることで、クラウドAPIを使わずに、自分のPC上で安全にAutoGenエージェントを動かすことが可能になります。
社内データを外に出せない環境でも、AIの連携動作を検証できるのが大きなメリットです。

この記事では、LM Studioで起動したローカルモデル(今回はgpt-oss-20b)をAutoGen Studioから接続し、実際にエージェントが対話・ツール実行できるところまでを構築してみます。

AutoGen Studioのセットアップ

セットアップは公式ドキュメントがあるので、そちらに沿って実行します。
https://microsoft.github.io/autogen/stable/user-guide/autogenstudio-user-guide/installation.html

ターミナル
python3 -m venv .venv
source .venv/bin/activate

pip install -U autogenstudio

AutoGen Studioのインストールはこれだけです。非常に簡単ですね。
インストールが終わったら、下記のコマンドで実行します。

ターミナル
autogenstudio ui --port 8081

ブラウザを立ち上げ、下記のアドレスを開きます。

http://localhost:8081/

下記が表示されれば起動OKです。

LM Studioのセットアップ

LM Studioをインストールしてモデルをダウンロードします。
今回は割愛しますが、手順は下記のリンクを参照してください。

今回は「gpt-oss-20b」を使用ます。

このモデル名と「LLM Server Base URL」が後で必要になるので、コピーかメモしておきます。

以上でLM Studioの準備は完了です。

AutoGen Studioの設定

次にAutoGen Studioに戻り、LM Studioとの接続確認をしてみます。
メニューから「TeamBuilder」を選び、「New Team」をクリックします。

下記の設定画面が表示されます。
右側にある「AssistantAgent」にLM Studioを設定するようになります。

「AssistantAgent」の右上にある、編集アイコンをクリックします。

右側からにゅっと出てくるEdit Componentから、「JSON Editor」をクリックします。
※この画面で設定できればよいのですが、ダイアログにない項目はJSONを直接記載する必要があるため、JSON Editorから設定します。

JSONコードが表示されるため、ここの17行目〜19行目を書き換えていきます。

{
  "provider": "autogen_agentchat.agents.AssistantAgent",
  "component_type": "agent",
  "version": 1,
  "component_version": 1,
  "description": "An agent that provides assistance with tool use.",
  "label": "AssistantAgent",
  "config": {
    "name": "assistant_agent",
    "model_client": {
      "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient",
      "component_type": "model",
      "version": 1,
      "component_version": 1,
      "description": "Chat completion client for OpenAI hosted models.",
      "label": "OpenAIChatCompletionClient",
      "config": {
        "model": "gpt-4o-mini"
      }
    },

書き換える内容は下記になります。

      "config": {
        "model": "gpt-oss-20b",
        "base_url": "http://localhost:1234/v1",
        "api_key": "lm-studio",
        "parallel_tool_calls": false,
        "model_info": {
          "vision": false,
          "function_calling": true,
          "json_output": false,
          "family": "unknown",
          "structured_output": false,
          "context_length": 8192
        }
      }

この2つの項目は、LM Studioの設定によって書き換えてください。
・model:LM Studioでロードしてモデル名
・base_url:LM StudioのLLM Server Base URL

置き換えたJSONは下記になります。

{
  "provider": "autogen_agentchat.agents.AssistantAgent",
  "component_type": "agent",
  "version": 1,
  "component_version": 1,
  "description": "An agent that provides assistance with tool use.",
  "label": "AssistantAgent",
  "config": {
    "name": "assistant_agent",
    "model_client": {
      "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient",
      "component_type": "model",
      "version": 1,
      "component_version": 1,
      "description": "Chat completion client for OpenAI hosted models.",
      "label": "OpenAIChatCompletionClient",
      "config": {
        "model": "gpt-oss-20b",
        "base_url": "http://localhost:1234/v1",
        "api_key": "lm-studio",
        "parallel_tool_calls": false,
        "model_info": {
          "vision": false,
          "function_calling": true,
          "json_output": false,
          "family": "unknown",
          "structured_output": false,
          "context_length": 8192
        }
      }
    },

画面右下の「Save Changes」をクリックして保存します。

これでLM Studioとの接続設定は終わったので、右上の「Run」をクリックして動作を確認してみましょう。

プロンプトに質問を入力します。

assistant_agentのLM Studioから回答があり、接続できることが確認できました。

エージェントの追加

エージェントを追加して、2つのエージェントでやりとりした結果を回答してもらいましょう。

左側のAgentsから「AssistantAgent」をドラッグし、フローの左側の「Drop agents here」へドラッグ&ドロップします。

AssistantAgentが追加され、2つになりました。

追加された「assistant_agent_1」の右上にある編集ボタンを押して、前回と同じようにJSONの”config”部分を書き換えます。
(今回は同じLM Studioに対して、2つのエージェントから問い合わせを行うようにしています。)

続いて1つ目のエージェントと、2つ目のエージェントの役割を設定します。
 ・1つ目のエージェント:首都を回答
 ・2つ目のエージェント:観光スポットを回答
こんな感じで設定してみましょう。

1つ目のエージェント(右上)の編集ボタンを押して、System Messageに首都を答えてもらうように編集します。
元々のメッセージには終わったら「TERMINATE」を送るように記述されていますが、TERMINATEが送られると次のエージェントに連携されず終了していまうので、こちらのエージェントには記載しません。
「Save Changes」をクリックして保存します。

次に2つ目のエージェント(右下)の編集ボタンを押して、System Messageに観光スポットを答えてもらうように編集します。
こちらにはTERMINATEを送るように追加しています。
編集したら「Save Changes」をクリックして保存しましょう。

それでは実行してみましょう。
プロンプトに「フランス」とだけ入力します。

1つ目のエージェントが首都を回答し、2つ目のエージェントがそれをもとに観光スポットを回答してくれました。

まとめ

AutoGen StudioとLM Studioをつなぎ、複数のエージェントを連携させることができました。
今回は1つのモデルでしたが、状況に応じて好みのモデルを使用してエージェント連携させることが可能です。

今回はAssistantAgentだけでしたが、AutoGen Studioには他にも様々な機能があり、活用することでより高度なワークフローが実現できます。
Toolsにある機能が気になるので、次はこのあたりを深堀りしてみたいと思います。

コメント

タイトルとURLをコピーしました