Come utilizzare MCP con l'API di OpenAI utilizzando Dolphin-MCP

💡Sei interessato all'ultima tendenza nell'AI? Allora non puoi perderti Anakin AI! Anakin AI è una piattaforma tutto-in-uno per tutta la tua automazione dei flussi di lavoro, crea potenti app AI con un builder di app No Code facile da usare, con Deepseek, o3-mini-high di OpenAI, Claude 3.7 Sonnet, FLUX,

Build APIs Faster & Together in Apidog

Come utilizzare MCP con l'API di OpenAI utilizzando Dolphin-MCP

Start for free
Inhalte
💡
Sei interessato all'ultima tendenza nell'AI?

Allora non puoi perderti Anakin AI!

Anakin AI è una piattaforma tutto-in-uno per tutta la tua automazione dei flussi di lavoro, crea potenti app AI con un builder di app No Code facile da usare, con Deepseek, o3-mini-high di OpenAI, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan...

Costruisci la tua app AI da sogno in pochi minuti, non settimane, con Anakin AI!
Anakin AI: La tua piattaforma AI tutto-in-uno
Anakin AI: La tua piattaforma AI tutto-in-uno

Introduzione

Dolphin-MCP è un'implementazione open-source che estende il Model Context Protocol (MCP) di Anthropic per lavorare con vari modelli di linguaggio oltre Claude. Questa guida tecnica ti guiderà attraverso la configurazione e l'utilizzo di Dolphin-MCP specificamente con l'API di OpenAI, consentendoti di sfruttare i modelli GPT tramite l'architettura MCP.

Panoramica Tecnica

Dolphin-MCP funge da strato di traduzione tra la specifica MCP e varie API di LLM. Per l'integrazione con OpenAI, esso:

  • Converte i messaggi del protocollo MCP nei formati delle API di OpenAI
  • Gestisce le differenze di mapping dei token tra i modelli
  • Gestisce lo stato della conversazione e la cronologia
  • Fornisce capacità di esecuzione degli strumenti in modo indipendente dal modello

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Python 3.8+
  • pip (gestore pacchetti)
  • Chiave API di OpenAI
  • Git installato
  • Comprensione di base degli LLM e dei concetti API

Passaggi di Installazione

# Clona il repository Dolphin-MCP
git clone https://github.com/cognitivecomputations/dolphin-mcp.git
cd dolphin-mcp

# Crea un ambiente virtuale
python -m venv venv
source venv/bin/activate  # Su Windows: venv\Scripts\activate

# Installa le dipendenze
pip install -r requirements.txt

# Installa il pacchetto in modalità sviluppo
pip install -e .

Configurazione

1. Impostazione delle Variabili d'Ambiente

Crea un file .env nella radice del tuo progetto:

OPENAI_API_KEY=sk-la-tua-chiave-api-openai-qui
MCP_MODEL=gpt-4-0125-preview
MCP_PROVIDER=openai

2. Creazione di un File di Configurazione

Crea un file config.json:

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

Esempi di Utilizzo di Base

Esempio 1: Conversazione Semplice

from dolphin_mcp import DolphinMCP

# Inizializza il client
mcp_client = DolphinMCP.from_config("./config.json")

# Crea una conversazione
conversation = mcp_client.create_conversation()

# Aggiungi un messaggio di sistema
conversation.add_system_message("Sei un assistente AI utile specializzato nella programmazione Python.")

# Invia un messaggio utente e ottieni una risposta
response = conversation.add_user_message("Come implemento un albero di ricerca binario in Python?")

# Stampa la risposta
print(response.content)

Esempio 2: Utilizzare Strumenti con OpenAI

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

# Inizializza client con strumenti
mcp_client = DolphinMCP.from_config("./config.json")

# Registra strumenti
mcp_client.register_tool(WebSearchTool(api_key="la-tua-chiave-api-di-ricerca"))
mcp_client.register_tool(CodeExecutionTool())

# Crea una conversazione con strumenti abilitati
conversation = mcp_client.create_conversation()

# Aggiungi istruzioni di sistema per gli strumenti
conversation.add_system_message("""
Sei un assistente AI con accesso ai seguenti strumenti:
- web_search: Cerca informazioni attuali su Internet
- code_execution: Esegui codice Python in sicurezza in una sandbox

Usa questi strumenti quando appropriato per fornire risposte accurate e utili.
""")

# Interrogazione dell'utente che richiede strumenti
response = conversation.add_user_message(
    "Qual è il meteo attuale a New York? Inoltre, puoi mostrarmi come calcolare il fattoriale di un numero in Python?"
)

# La risposta includerà automaticamente l'uso degli strumenti
print(response.content)
print("\nEsecuzioni degli strumenti:")
for tool_name, tool_result in response.tool_results.items():
    print(f"{tool_name}: {tool_result}")

Configurazione Avanzata

Utilizzo di Endpoint Compatibili con OpenAI

Se desideri utilizzare endpoint alternativi compatibili con OpenAI (come Azure OpenAI o modelli self-hosted), modifica la tua configurazione:

{
  "provider": "openai",
  "model_settings": {
    "model": "tuo-deployment-modello-personalizzato",
    "temperature": 0.7,
    "max_tokens": 2048
  },
  "api_config": {
    "api_key": "la-tua-chiave-api",
    "base_url": "https://il-tuo-endpoint-personalizzato.com/v1",
    "api_version": "2023-07-01-preview",  // Per Azure
    "api_type": "azure"  // Per Azure
  }
}

Implementazione di Strumenti Personalizzati

Dolphin-MCP ti consente di creare strumenti personalizzati per i modelli di OpenAI. Ecco come implementare uno strumento calcolatore personalizzato:

from dolphin_mcp.tools import BaseTool
import math

class CalculatorTool(BaseTool):
    name = "calculator"
    description = "Esegue calcoli matematici"
    
    async def execute(self, expression: str):
        try:
            # Crea un ambiente sicuro con funzioni matematiche limitate
            safe_env = {
                "sqrt": math.sqrt,
                "sin": math.sin,
                "cos": math.cos,
                "tan": math.tan,
                "pi": math.pi,
                "e": math.e
            }
            
            # Valuta l'espressione nell'ambiente sicuro
            result = eval(expression, {"__builtins__": {}}, safe_env)
            return str(result)
        except Exception as e:
            return f"Errore nel calcolo: {str(e)}"
    
    @property
    def parameters(self):
        return {
            "type": "object",
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "L'espressione matematica da valutare"
                }
            },
            "required": ["expression"]
        }

# Esempio di utilizzo
mcp_client = DolphinMCP.from_config("./config.json")
mcp_client.register_tool(CalculatorTool())

Gestione delle Risposte in Streaming

Per le applicazioni che richiedono risposte in tempo reale:

async def stream_response():
    mcp_client = DolphinMCP.from_config("./config.json")
    conversation = mcp_client.create_conversation()
    
    # Imposta la conversazione
    conversation.add_system_message("Sei un assistente AI utile.")
    
    # Stream della risposta
    async for chunk in conversation.add_user_message_streaming(
        "Spiega il calcolo quantistico in termini semplici."
    ):
        if chunk.type == "content":
            print(chunk.content, end="", flush=True)
        elif chunk.type == "tool_start":
            print(f"\n[Inizio utilizzo dello strumento: {chunk.tool_name}]")
        elif chunk.type == "tool_result":
            print(f"\n[Risultato dello strumento da {chunk.tool_name}]: {chunk.result}")
        elif chunk.type == "error":
            print(f"\nErrore: {chunk.error}")
    
    print("\nRisposta completata.")

# Esegui la funzione async
import asyncio
asyncio.run(stream_response())

Gestione degli Errori

Implementa una gestione degli errori robusta per gestire i problemi dell'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("Genera una risposta complessa")
    
except MCPTimeoutError:
    print("La richiesta è scaduta. Controlla la tua connessione di rete o aumenta il valore di timeout.")
    
except MCPAPIError as e:
    print(f"Errore API: {e.status_code} - {e.message}")
    if e.status_code == 429:
        print("Limite di richiesta superato. Implementa un backoff esponenziale.")
    
except MCPConfigError as e:
    print(f"Errore di Configurazione: {e}")
    
except Exception as e:
    print(f"Errore imprevisto: {e}")

Ottimizzazione delle Prestazioni

Per gli ambienti di produzione, considera queste ottimizzazioni:

# Riutilizzo delle sessioni per il pooling delle connessioni
from dolphin_mcp import DolphinMCP
import aiohttp

async def optimized_mcp_usage():
    # Crea una sessione condivisa per il pooling delle connessioni
    async with aiohttp.ClientSession() as session:
        mcp_client = DolphinMCP.from_config(
            "./config.json",
            session=session,
            request_timeout=60,
            connection_pool_size=10
        )
        
        # Processa più conversazioni in modo efficiente
        tasks = []
        for i in range(5):
            conversation = mcp_client.create_conversation()
            conversation.add_system_message("Sei un assistente utile.")
            tasks.append(conversation.add_user_message_async(f"Domanda {i}: Cos'è il machine learning?"))
        
        # Raccogli tutte le risposte
        responses = await asyncio.gather(*tasks)
        
        for i, response in enumerate(responses):
            print(f"Risposta {i}: {response.content[:100]}...")

Integrazione con Applicazioni Web

Esempio di integrazione 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")
    
    # Recupera o crea una conversazione
    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("Sei un assistente AI utile.")
    
    # Processa il messaggio
    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)

Risoluzione dei Problemi Comuni

Problema Soluzione
Errore "Chiave API non valida" Verifica che la tua chiave API di OpenAI sia corretta e abbia permessi sufficienti
Limitazione delle richieste Implementa un backoff esponenziale e il throttling delle richieste
Errori di timeout Aumenta il timeout nella configurazione o controlla la connessione di rete
Modello non trovato Verifica che il nome del modello esista nei modelli disponibili di OpenAI
Limite di token superato Suddividi le richieste in parti più piccole o utilizza lo streaming

Conclusione

Dolphin-MCP fornisce un modo flessibile e open-source per utilizzare i modelli di OpenAI con il protocollo MCP. Questa implementazione libera gli sviluppatori dai vincoli del fornitore mantenendo un'interfaccia coerente tra i diversi fornitori di LLM. Seguendo i passaggi in questa guida, puoi sfruttare la potenza dei modelli GPT attraverso l'architettura MCP standardizzata.

philschmid.de mostra integrazioni simili con altri LLM, e strumenti come mcpadapt possono aiutare ad estendere ulteriormente le capacità di Dolphin-MCP.