MCP를 사용하여 OpenAI API 활용하는 방법 (Dolphin-MCP 사용)

💡최신 AI 트렌드에 관심이 있으신가요? 그렇다면 Anakin AI를 놓칠 수 없습니다! Anakin AI는 모든 워크플로우 자동화를 위한 올인원 플랫폼이며, 사용하기 쉬운 코드 없이 AI 앱 빌더로 강력한 AI 앱을 만들 수 있습니다. Deepseek, OpenAI의 o3-mini-high, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan 등을 통해 가능합니다... Anakin AI를 사용하여 몇

Build APIs Faster & Together in Apidog

MCP를 사용하여 OpenAI API 활용하는 방법 (Dolphin-MCP 사용)

Start for free
Inhalte
💡
최신 AI 트렌드에 관심이 있으신가요?

그렇다면 Anakin AI를 놓칠 수 없습니다!

Anakin AI는 모든 워크플로우 자동화를 위한 올인원 플랫폼이며, 사용하기 쉬운 코드 없이 AI 앱 빌더로 강력한 AI 앱을 만들 수 있습니다. Deepseek, OpenAI의 o3-mini-high, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan 등을 통해 가능합니다...

Anakin AI를 사용하여 몇 분 안에 당신의 꿈의 AI 앱을 만드세요, 몇 주가 아니라!
Anakin AI: Your All-in-One AI Platform
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]}...")

웹 애플리케이션 통합

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는 OpenAI 모델을 MCP 프로토콜과 함께 사용할 수 있는 유연하고 오픈 소스 방법을 제공합니다. 이 구현은 개발자를 공급업체 종속성에서 해방시키면서도 다양한 LLM 제공업체 간에 일관된 인터페이스를 유지할 수 있게 해줍니다. 이 가이드의 단계를 따르면 당신은 표준화된 MCP 아키텍처를 통해 GPT 모델의 힘을 활용할 수 있습니다.

philschmid.de는 다른 LLM과 유사한 통합을 보여주며, mcpadapt와 같은 도구는 Dolphin-MCP의 기능을 더욱 확장하는 데 도움이 될 수 있습니다.