Skip to content

Latest commit

 

History

History
189 lines (133 loc) · 13.4 KB

File metadata and controls

189 lines (133 loc) · 13.4 KB

Visual Studio CodeのAI Toolkit拡張機能を使用したサーバーの利用

AIエージェントを構築する際、賢い応答を生成するだけでなく、エージェントに行動を起こす能力を与えることが重要です。そこで登場するのがModel Context Protocol (MCP)です。MCPを使用すると、エージェントが外部ツールやサービスに一貫した方法でアクセスできるようになります。まるでエージェントを実際に使えるツールボックスに接続するようなものです。

例えば、エージェントを計算機MCPサーバーに接続すると、エージェントは「47×89は何ですか?」といったプロンプトを受け取るだけで数学演算を実行できるようになります。ロジックをハードコーディングしたり、カスタムAPIを構築したりする必要はありません。

概要

このレッスンでは、Visual Studio CodeのAI Toolkit拡張機能を使用して、計算機MCPサーバーをエージェントに接続する方法を学びます。これにより、エージェントは自然言語を通じて加算、減算、乗算、除算などの数学演算を実行できるようになります。

AI Toolkitは、エージェント開発を効率化する強力なVisual Studio Code拡張機能です。AIエンジニアは、生成AIモデルをローカルまたはクラウドで開発・テストすることで、AIアプリケーションを簡単に構築できます。この拡張機能は、現在利用可能な主要な生成モデルのほとんどをサポートしています。

: AI Toolkitは現在、PythonとTypeScriptをサポートしています。

学習目標

このレッスンを終えると、以下ができるようになります:

  • AI Toolkitを使用してMCPサーバーを利用する。
  • MCPサーバーが提供するツールを発見・利用できるようにエージェント設定を構成する。
  • 自然言語を通じてMCPツールを活用する。

アプローチ

以下は全体的なアプローチです:

  • エージェントを作成し、そのシステムプロンプトを定義する。
  • 計算機ツールを備えたMCPサーバーを作成する。
  • Agent BuilderをMCPサーバーに接続する。
  • 自然言語を通じてエージェントのツール呼び出しをテストする。

では、エージェントの能力を向上させるために、MCPを通じて外部ツールを活用する設定を行いましょう!

前提条件

演習: サーバーの利用

Warning

macOSユーザーへの注意。現在、macOSでの依存関係インストールに影響を与える問題を調査中です。そのため、macOSユーザーは現時点でこのチュートリアルを完了することができません。修正が完了次第、手順を更新します。ご理解とご協力をお願いいたします。

この演習では、Visual Studio Code内でAI Toolkitを使用して、MCPサーバーのツールを備えたAIエージェントを構築、実行、強化します。

-0- 事前準備: OpenAI GPT-4oモデルをMy Modelsに追加する

この演習ではGPT-4oモデルを使用します。エージェントを作成する前に、このモデルをMy Modelsに追加してください。

  1. Activity BarからAI Toolkit拡張機能を開きます。
  2. CatalogセクションでModelsを選択し、Model Catalogを開きます。Modelsを選択すると、新しいエディタタブでModel Catalogが開きます。
  3. Model Catalogの検索バーにOpenAI GPT-4oを入力します。
  4. + AddをクリックしてモデルをMy Modelsリストに追加します。GitHubでホストされているモデルを選択していることを確認してください。
  5. Activity BarOpenAI GPT-4oモデルがリストに表示されていることを確認します。

-1- エージェントを作成する

Agent (Prompt) Builderを使用すると、自分専用のAIエージェントを作成してカスタマイズできます。このセクションでは、新しいエージェントを作成し、会話を動かすモデルを割り当てます。

  1. Activity BarからAI Toolkit拡張機能を開きます。
  2. ToolsセクションでAgent (Prompt) Builderを選択します。Agent (Prompt) Builderを選択すると、新しいエディタタブでAgent (Prompt) Builderが開きます。
  3. + New Agentボタンをクリックします。拡張機能がCommand Paletteを通じてセットアップウィザードを起動します。
  4. Calculator Agentという名前を入力し、Enterを押します。
  5. Agent (Prompt) Builderで、Modelフィールドに**OpenAI GPT-4o (via GitHub)**モデルを選択します。

-2- エージェントのシステムプロンプトを作成する

エージェントの枠組みができたら、その性格と目的を定義します。このセクションでは、Generate system prompt機能を使用して、エージェントの意図する動作を説明します。この場合、計算機エージェントとしての役割を設定し、モデルにシステムプロンプトを書かせます。

  1. PromptsセクションでGenerate system promptボタンをクリックします。このボタンをクリックすると、プロンプトビルダーが開き、AIを活用してエージェントのシステムプロンプトを生成します。
  2. Generate a promptウィンドウで以下を入力します:あなたは役立つ効率的な数学アシスタントです。基本的な算術に関する問題が与えられた場合、正しい結果を返答します。
  3. Generateボタンをクリックします。右下に通知が表示され、システムプロンプトが生成されていることを確認できます。プロンプト生成が完了すると、Agent (Prompt) BuilderSystem promptフィールドにプロンプトが表示されます。
  4. System promptを確認し、必要に応じて修正します。

-3- MCPサーバーを作成する

エージェントのシステムプロンプトを定義し、その動作と応答を導いたら、次はエージェントに実用的な能力を装備します。このセクションでは、加算、減算、乗算、除算を実行するツールを備えた計算機MCPサーバーを作成します。このサーバーにより、エージェントは自然言語プロンプトに応じてリアルタイムで数学演算を実行できるようになります。

AI Toolkitには、独自のMCPサーバーを簡単に作成するためのテンプレートが用意されています。ここでは、計算機MCPサーバーを作成するためにPythonテンプレートを使用します。

: AI Toolkitは現在、PythonとTypeScriptをサポートしています。

  1. Agent (Prompt) BuilderToolsセクションで**+ MCP Serverボタンをクリックします。拡張機能がCommand Palette**を通じてセットアップウィザードを起動します。

  2. + Add Serverを選択します。

  3. Create a New MCP Serverを選択します。

  4. python-weatherをテンプレートとして選択します。

  5. Default folderを選択してMCPサーバーテンプレートを保存します。

  6. サーバー名として以下を入力します:Calculator

  7. 新しいVisual Studio Codeウィンドウが開きます。Yes, I trust the authorsを選択します。

  8. TerminalTerminal > New Terminal)を使用して仮想環境を作成します:python -m venv .venv

  9. Terminalを使用して仮想環境を有効化します:

    1. Windows - .venv\Scripts\activate
    2. macOS/Linux - source .venv/bin/activate
  10. Terminalを使用して依存関係をインストールします:pip install -e .[dev]

  11. Activity BarExplorerビューでsrcディレクトリを展開し、server.pyを選択してファイルをエディタで開きます。

  12. server.pyファイルのコードを以下に置き換え、保存します:

    """
    Sample MCP Calculator Server implementation in Python.
    
    
    This module demonstrates how to create a simple MCP server with calculator tools
    that can perform basic arithmetic operations (add, subtract, multiply, divide).
    """
    
    from mcp.server.fastmcp import FastMCP
    
    server = FastMCP("calculator")
    
    @server.tool()
    def add(a: float, b: float) -> float:
        """Add two numbers together and return the result."""
        return a + b
    
    @server.tool()
    def subtract(a: float, b: float) -> float:
        """Subtract b from a and return the result."""
        return a - b
    
    @server.tool()
    def multiply(a: float, b: float) -> float:
        """Multiply two numbers together and return the result."""
        return a * b
    
    @server.tool()
    def divide(a: float, b: float) -> float:
        """
        Divide a by b and return the result.
        
        Raises:
            ValueError: If b is zero
        """
        if b == 0:
            raise ValueError("Cannot divide by zero")
        return a / b

-4- 計算機MCPサーバーでエージェントを実行する

エージェントにツールが追加されたので、次はそれを使用します!このセクションでは、エージェントにプロンプトを送信し、計算機MCPサーバーの適切なツールを活用するかどうかをテスト・検証します。

  1. F5を押してMCPサーバーのデバッグを開始します。Agent (Prompt) Builderが新しいエディタタブで開きます。サーバーのステータスはターミナルで確認できます。
  2. Agent (Prompt) BuilderUser promptフィールドに以下のプロンプトを入力します:私は3つの商品をそれぞれ25ドルで購入し、20ドルの割引を使用しました。いくら支払いましたか?
  3. Runボタンをクリックしてエージェントの応答を生成します。
  4. エージェントの出力を確認します。モデルは55ドルを支払ったと結論付けるはずです。
  5. 以下が発生するはずです:
    • エージェントが計算を補助するためにmultiplysubtractツールを選択します。
    • multiplyツールにそれぞれのab値が割り当てられます。
    • subtractツールにそれぞれのab値が割り当てられます。
    • 各ツールからの応答がそれぞれTool Responseに提供されます。
    • モデルからの最終出力がModel Responseに提供されます。
  6. 追加のプロンプトを送信してエージェントをさらにテストします。User promptフィールドで既存のプロンプトをクリックして置き換えることで、プロンプトを変更できます。
  7. テストが終了したら、terminalCTRL/CMD+Cを入力してサーバーを停止します。

課題

server.pyファイルに追加のツールエントリ(例: 数値の平方根を返す)を追加してみてください。エージェントが新しいツール(または既存のツール)を活用する必要があるプロンプトを送信してください。新しく追加したツールを読み込むには、サーバーを再起動する必要があります。

解答

解答

重要なポイント

この章の重要なポイントは以下の通りです:

  • AI Toolkit拡張機能は、MCPサーバーとそのツールを利用するための優れたクライアントです。
  • MCPサーバーに新しいツールを追加することで、エージェントの能力を拡張し、進化する要件に対応できます。
  • AI Toolkitにはカスタムツールの作成を簡素化するテンプレート(例: Python MCPサーバーテンプレート)が含まれています。

追加リソース

次のステップ

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の言語で記載された原文が正式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。