OpenAIのAPIをDolphin-MCPで使う方法

💡最新のAIトレンドに興味がありますか? それなら、Anakin AIを見逃すわけにはいきません! Anakin AIは、すべてのワークフロー自動化のためのオールインワンプラットフォームであり、使いやすいノーコードアプリビルダーで強力なAIアプリを作成し、Deepseek、OpenAIのo3-mini-high、Claude 3.7 Sonnet、FLUX、Minimax Video、Hunyuanなどを活用できます。 Anakin AIで数週間ではなく数分で夢のAIアプリを構築しましょう!無料で始める はじめに Dolphin-MCPは、Anthropicのモデルコンテクストプロトコル(MCP)を拡張し、Claudeを超えたさまざまな言語モデルで機能するオープンソース実装です。この技術ガイドでは、OpenAIのAPIを使用してDolphin-MCPを設定および利用する方法を解説し、MCPアーキテクチャを介してGPTモデルを活用できるようにします。 技術概要 Dolphin-MCPは、MCP仕様とさまざまなLLM APIの間の翻訳レイヤーとして機能します。OpenA

Anakin AIを無料で利用開始

OpenAIのAPIをDolphin-MCPで使う方法

Start for free
目次
💡
最新のAIトレンドに興味がありますか?

それなら、Anakin AIを見逃すわけにはいきません!

Anakin AIは、すべてのワークフロー自動化のためのオールインワンプラットフォームであり、使いやすいノーコードアプリビルダーで強力なAIアプリを作成し、Deepseek、OpenAIのo3-mini-high、Claude 3.7 Sonnet、FLUX、Minimax Video、Hunyuanなどを活用できます。

Anakin AIで数週間ではなく数分で夢のAIアプリを構築しましょう!
Anakin AI: あなたのオールインワンAIプラットフォーム
Anakin AI: あなたのオールインワンAIプラットフォーム

はじめに

Dolphin-MCPは、Anthropicのモデルコンテクストプロトコル(MCP)を拡張し、Claudeを超えたさまざまな言語モデルで機能するオープンソース実装です。この技術ガイドでは、OpenAIのAPIを使用してDolphin-MCPを設定および利用する方法を解説し、MCPアーキテクチャを介してGPTモデルを活用できるようにします。

技術概要

Dolphin-MCPは、MCP仕様とさまざまなLLM APIの間の翻訳レイヤーとして機能します。OpenAIとの統合において、以下のことを行います:

  • MCPプロトコルメッセージをOpenAI API形式に変換
  • モデル間のトークンマッピングの違いを処理
  • 会話の状態と履歴を管理
  • モデルに依存しない方法でツールの実行機能を提供

前提条件

開始する前に、以下を確認してください:

  • Python 3.8+
  • pip(パッケージマネージャ)
  • OpenAI APIキー
  • Gitがインストールされていること
  • LLMとAPIの概念の基本的な理解

インストール手順

# Dolphin-MCPリポジトリをクローン
git clone https://github.com/cognitivecomputations/dolphin-mcp.git
cd dolphin-mcp

# 仮想環境を作成
python -m venv venv
source venv/bin/activate  # Windowsの場合: venv\Scripts\activate

# 依存関係をインストール
pip install -r requirements.txt

# 開発モードでパッケージをインストール
pip install -e .

設定

1. 環境変数の設定

プロジェクトルートに.envファイルを作成:

OPENAI_API_KEY=sk-your-openai-api-key-here
MCP_MODEL=gpt-4-0125-preview
MCP_PROVIDER=openai

2. 設定ファイルの作成

config.jsonファイルを作成:

{
  "provider": "openai",
  "model_settings": {
    "model": "gpt-4-0125-preview",
    "temperature": 0.7,
    "max_tokens": 2048
  },
  "api_config": {
    "api_key": "sk-your-openai-api-key-here",
    "base_url": "https://api.openai.com/v1",
    "timeout": 120
  }
}

基本的な使用例

例1: 簡単な会話

from dolphin_mcp import DolphinMCP

# クライアントを初期化
mcp_client = DolphinMCP.from_config("./config.json")

# 会話を作成
conversation = mcp_client.create_conversation()

# システムメッセージを追加
conversation.add_system_message("あなたはPythonプログラミングに特化した役立つAIアシスタントです。")

# ユーザーメッセージを送信して応答を取得
response = conversation.add_user_message("Pythonで二分探索木を実装する方法は?")

# 応答を印刷
print(response.content)

例2: OpenAIを使用したツールの活用

from dolphin_mcp import DolphinMCP
from dolphin_mcp.tools import WebSearchTool, CodeExecutionTool

# ツールを使ってクライアントを初期化
mcp_client = DolphinMCP.from_config("./config.json")

# ツールを登録
mcp_client.register_tool(WebSearchTool(api_key="your-search-api-key"))
mcp_client.register_tool(CodeExecutionTool())

# ツールを有効化して会話を作成
conversation = mcp_client.create_conversation()

# ツールのためのシステム指示を追加
conversation.add_system_message("""
あなたは次のツールにアクセスできるAIアシスタントです:
- web_search: 最新の情報をインターネットで検索
- code_execution: サンドボックス内でPythonコードを安全に実行

正確かつ役立つ応答を提供するために、必要に応じてこれらのツールを使用してください。
""")

# ツールを必要とするユーザークエリ
response = conversation.add_user_message(
    "ニューヨークの現在の天気は? また、Pythonで数の階乗を計算する方法を教えてください。"
)

# 応答にはツールの使用が自動的に含まれます
print(response.content)
print("\nツールの実行:")
for tool_name, tool_result in response.tool_results.items():
    print(f"{tool_name}: {tool_result}")

高度な設定

OpenAI互換エンドポイントの使用

代替のOpenAI互換エンドポイント(Azure OpenAIや自己ホストのモデルなど)を使用したい場合は、設定を修正してください:

{
  "provider": "openai",
  "model_settings": {
    "model": "your-custom-model-deployment",
    "temperature": 0.7,
    "max_tokens": 2048
  },
  "api_config": {
    "api_key": "your-api-key",
    "base_url": "https://your-custom-endpoint.com/v1",
    "api_version": "2023-07-01-preview",  // Azureの場合
    "api_type": "azure"  // Azureの場合
  }
}

カスタムツールの実装

Dolphin-MCPでは、OpenAIモデル用のカスタムツールを作成できます。カスタム計算機ツールの実装方法は次のとおりです:

from dolphin_mcp.tools import BaseTool
import math

class CalculatorTool(BaseTool):
    name = "calculator"
    description = "数学的計算を行います"
    
    async def execute(self, expression: str):
        try:
            # 限定された数学関数を持つ安全な環境を作成
            safe_env = {
                "sqrt": math.sqrt,
                "sin": math.sin,
                "cos": math.cos,
                "tan": math.tan,
                "pi": math.pi,
                "e": math.e
            }
            
            # 安全な環境で式を評価
            result = eval(expression, {"__builtins__": {}}, safe_env)
            return str(result)
        except Exception as e:
            return f"計算中のエラー: {str(e)}"
    
    @property
    def parameters(self):
        return {
            "type": "object",
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "評価する数学的式"
                }
            },
            "required": ["expression"]
        }

# 使用例
mcp_client = DolphinMCP.from_config("./config.json")
mcp_client.register_tool(CalculatorTool())

ストリーミング応答の処理

リアルタイム応答を必要とするアプリケーションの場合:

async def stream_response():
    mcp_client = DolphinMCP.from_config("./config.json")
    conversation = mcp_client.create_conversation()
    
    # 会話を設定
    conversation.add_system_message("あなたは役立つAIアシスタントです。")
    
    # 応答をストリーミング
    async for chunk in conversation.add_user_message_streaming(
        "量子コンピューティングを簡単な言葉で説明してください。"
    ):
        if chunk.type == "content":
            print(chunk.content, end="", flush=True)
        elif chunk.type == "tool_start":
            print(f"\n[ツールの使用を開始します: {chunk.tool_name}]")
        elif chunk.type == "tool_result":
            print(f"\n[ツールからの結果 {chunk.tool_name}]: {chunk.result}")
        elif chunk.type == "error":
            print(f"\nエラー: {chunk.error}")
    
    print("\n応答完了。")

# 非同期関数を実行
import asyncio
asyncio.run(stream_response())

エラーハンドリング

APIの問題を管理するために、堅牢なエラーハンドリングを実装してください:

from dolphin_mcp.exceptions import MCPAPIError, MCPConfigError, MCPTimeoutError

try:
    mcp_client = DolphinMCP.from_config("./config.json")
    conversation = mcp_client.create_conversation()
    response = conversation.add_user_message("複雑な応答を生成")
    
except MCPTimeoutError:
    print("リクエストがタイムアウトしました。ネットワーク接続を確認するか、タイムアウト値を増やしてください。")
    
except MCPAPIError as e:
    print(f"APIエラー: {e.status_code} - {e.message}")
    if e.status_code == 429:
        print("レート制限を超えました。指数バックオフを実装してください。")
    
except MCPConfigError as e:
    print(f"設定エラー: {e}")
    
except Exception as e:
    print(f"予期しないエラー: {e}")

パフォーマンスの最適化

本番環境では、以下の最適化を検討してください:

# 接続プールのためのセッションの再利用
from dolphin_mcp import DolphinMCP
import aiohttp

async def optimized_mcp_usage():
    # 接続プールのための共有セッションを作成
    async with aiohttp.ClientSession() as session:
        mcp_client = DolphinMCP.from_config(
            "./config.json",
            session=session,
            request_timeout=60,
            connection_pool_size=10
        )
        
        # 複数の会話を効率的に処理
        tasks = []
        for i in range(5):
            conversation = mcp_client.create_conversation()
            conversation.add_system_message("あなたは役立つアシスタントです。")
            tasks.append(conversation.add_user_message_async(f"質問 {i}: 機械学習とは何ですか?"))
        
        # すべての応答を収集
        responses = await asyncio.gather(*tasks)
        
        for i, response in enumerate(responses):
            print(f"応答 {i}: {response.content[:100]}...")

Webアプリケーションとの統合

Flask統合の例:

from flask import Flask, request, jsonify
from dolphin_mcp import DolphinMCP

app = Flask(__name__)
mcp_client = DolphinMCP.from_config("./config.json")

@app.route("/chat", methods=["POST"])
def chat():
    data = request.json
    conversation_id = data.get("conversation_id")
    message = data.get("message")
    
    # 会話を取得または作成
    if conversation_id and conversation_id in active_conversations:
        conversation = active_conversations[conversation_id]
    else:
        conversation = mcp_client.create_conversation()
        conversation_id = conversation.id
        active_conversations[conversation_id] = conversation
        conversation.add_system_message("あなたは役立つAIアシスタントです。")
    
    # メッセージを処理
    response = conversation.add_user_message(message)
    
    return jsonify({
        "conversation_id": conversation_id,
        "response": response.content,
        "tool_results": response.tool_results
    })

if __name__ == "__main__":
    active_conversations = {}
    app.run(debug=True)

一般的な問題のトラブルシューティング

問題 解決策
"無効なAPIキー"エラー OpenAI APIキーが正しいかつ十分な権限があるかを確認します
レート制限 指数バックオフとリクエスト制限を実装します
タイムアウトエラー 設定のタイムアウトを増やすかネットワーク接続を確認します
モデルが見つかりません モデル名がOpenAIの利用可能なモデルに存在するかを確認します
トークン制限を超えました リクエストを小さなチャンクに分けるかストリーミングを使用します

結論

Dolphin-MCPは、MCPプロトコルを使用してOpenAIモデルを利用するための柔軟でオープンソースの方法を提供します。この実装により、開発者はベンダーロックインから解放され、異なるLLMプロバイダー間で一貫したインターフェースを維持します。このガイドの手順に従うことで、標準化されたMCPアーキテクチャを通じてGPTモデルの力を活用できます。

philschmid.deは、他のLLMとの同様の統合を示しており、mcpadaptのようなツールはDolphin-MCPの機能をさらに拡張するのに役立ちます。