それなら、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の間の翻訳レイヤーとして機能します。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の機能をさらに拡張するのに役立ちます。