Тогда вы не можете пропустить Anakin AI!
Anakin AI — это универсальная платформа для автоматизации рабочих процессов, создание мощных ИИ приложений с помощью простого в использовании конструктора приложений без кода, с Deepseek, o3-mini-high от OpenAI, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan...
Создавайте приложение своей мечты всего за несколько минут, а не за недели с Anakin AI!

Введение
Dolphin-MCP — это open-source реализация, которая расширяет протокол контекста модели (MCP) от Anthropic, чтобы работать с различными языковыми моделями помимо Claude. Этот технический гид проведёт вас через настройку и использование Dolphin-MCP, специально с API OpenAI, позволяя вам использовать модели GPT через архитектуру MCP.
Технический обзор
Dolphin-MCP служит переводным слоем между спецификацией MCP и различными API LLM. Для интеграции с OpenAI он:
- Преобразует сообщения протокола MCP в форматы API OpenAI
- Обрабатывает различия в отображении токенов между моделями
- Управляет состоянием и историей разговоров
- Предоставляет возможности выполнения инструментов независимо от модели
Предварительные условия
Перед началом убедитесь, что у вас есть:
- Python 3.8+
- pip (менеджер пакетов)
- Ключ API OpenAI
- Установленный 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-ваш-ключ-api-openai-здесь
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-ваш-ключ-api-openai-здесь",
"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.")
# Отправка пользовательского сообщения и получение ответа
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="ваш-ключ-api-поиска"))
mcp_client.register_tool(CodeExecutionTool())
# Создание разговора с включенными инструментами
conversation = mcp_client.create_conversation()
# Добавление системных инструкций для инструментов
conversation.add_system_message("""
Вы — ИИ-ассистент с доступом к следующим инструментам:
- 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": "ваш-класс-модели",
"temperature": 0.7,
"max_tokens": 2048
},
"api_config": {
"api_key": "ваш-ключ-api",
"base_url": "https://ваш-кастомный-эндпоинт.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("Вы — полезный ИИ-ассистент.")
# Потоковый ответ
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]}...")
Интеграция с веб-приложениями
Пример интеграции с 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("Вы — полезный ИИ-ассистент.")
# Обработка сообщения
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" | Проверьте, правильный ли ваш ключ API OpenAI и достаточно ли у него разрешений |
Лимит частоты | Реализуйте экспоненциальное ожидание и ограничение запросов |
Ошибки таймаута | Увеличьте таймаут в конфигурации или проверьте сетевое соединение |
Модель не найдена | Убедитесь, что имя модели существует в доступных моделях OpenAI |
Превышен лимит токенов | Разделите запросы на более мелкие части или используйте потоковую передачу |
Заключение
Dolphin-MCP предоставляет гибкий, open-source способ использования моделей OpenAI с протоколом MCP. Эта реализация освобождает разработчиков от привязки к конкретным поставщикам, сохраняя при этом единый интерфейс для различных поставщиков LLM. Следуя шагам, изложенным в этом руководстве, вы можете использовать мощь моделей GPT через стандартизированную архитектуру MCP.
philschmid.de демонстрирует аналогичные интеграции с другими LLM, и такие инструменты, как mcpadapt, могут помочь ещё больше расширить возможности Dolphin-MCP.