MCP Prompt Tester

MCP Prompt Tester

site icon
2025.03.06 0
PythonLLM 提示测试开发工具开发效率
MCP Prompt Tester 是一个简单的 MCP 服务器,允许代理使用不同的提供商测试 LLM 提示。它支持配置系统提示、用户提示和其他参数,并获取格式化的响应或错误消息。适用于开发者和研究人员测试和优化 LLM 提示。
View on GitHub

Overview

基本能力

产品定位

MCP Prompt Tester 是一个用于测试和优化 LLM 提示的工具,支持多种 LLM 提供商和模型。

核心功能

  • 测试 OpenAI 和 Anthropic 模型的提示
  • 配置系统提示、用户提示和其他参数
  • 获取格式化的响应或错误消息
  • 支持 .env 文件的环境设置

适用场景

  • 开发者测试和优化 LLM 提示
  • 研究人员比较不同模型和提示的效果
  • 代理集成 LLM 提示测试功能

工具列表

  1. list_providers:检索可用的 LLM 提供商及其默认模型。
  2. test_comparison:比较多个提示的并排效果,支持不同提供商、模型和参数。
  3. test_multiturn_conversation:管理多轮对话,支持创建和维护有状态的对话。

常见问题解答

  • API 密钥设置:可以通过环境变量或 .env 文件设置 API 密钥。
  • Langfuse 追踪:支持 Langfuse 进行 LLM 调用的追踪和观察,但为可选功能。

使用教程

使用依赖

确保已安装 Python 和 pip 或 uv。

安装教程

# 使用 pip 安装
pip install -e .

# 或使用 uv 安装
uv install -e .

API 密钥设置

选项 1:环境变量

设置以下环境变量: - OPENAI_API_KEY - 您的 OpenAI API 密钥 - ANTHROPIC_API_KEY - 您的 Anthropic API 密钥

选项 2:.env 文件(推荐)

  1. 在项目目录或主目录中创建名为 .env 的文件
  2. 添加您的 API 密钥,格式如下:
OPENAI_API_KEY=your-openai-api-key-here
ANTHROPIC_API_KEY=your-anthropic-api-key-here
  1. 服务器将自动检测并加载这些密钥

调试方式

启动服务器:

# 使用 stdio 传输(默认)
prompt-tester

# 使用 SSE 传输在自定义端口上
prompt-tester --transport sse --port 8000

示例用法

使用 MCP 客户端,代理可以如下使用工具:

import asyncio
import json
from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

async def main():
    async with stdio_client(
        StdioServerParameters(command="prompt-tester")
    ) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # 1. 列出可用的提供商和模型
            providers_result = await session.call_tool("list_providers", {})
            print("Available providers and models:", providers_result)

            # 2. 使用单个模型和提示运行基本测试
            comparison_result = await session.call_tool("test_comparison", {
                "comparisons": [
                    {
                        "provider": "openai",
                        "model": "gpt-4",
                        "system_prompt": "You are a helpful assistant.",
                        "user_prompt": "Explain quantum computing in simple terms.",
                        "temperature": 0.7,
                        "max_tokens": 500
                    }
                ]
            })
            print("Single model test result:", comparison_result)

            # 3. 并排比较多个提示/模型
            comparison_result = await session.call_tool("test_comparison", {
                "comparisons": [
                    {
                        "provider": "openai",
                        "model": "gpt-4",
                        "system_prompt": "You are a helpful assistant.",
                        "user_prompt": "Explain quantum computing in simple terms.",
                        "temperature": 0.7
                    },
                    {
                        "provider": "anthropic",
                        "model": "claude-3-opus-20240229",
                        "system_prompt": "You are a helpful assistant.",
                        "user_prompt": "Explain quantum computing in simple terms.",
                        "temperature": 0.7
                    }
                ]
            })
            print("Comparison result:", comparison_result)

            # 4. 开始多轮对话
            conversation_start = await session.call_tool("test_multiturn_conversation", {
                "mode": "start",
                "provider": "openai",
                "model": "gpt-4",
                "system_prompt": "You are a helpful assistant specializing in physics.",
                "user_prompt": "Can you explain what dark matter is?"
            })
            print("Conversation started:", conversation_start)

            # 从响应中获取对话 ID
            response_data = json.loads(conversation_start.text)
            conversation_id = response_data.get("conversation_id")

            # 继续对话
            if conversation_id:
                conversation_continue = await session.call_tool("test_multiturn_conversation", {
                    "mode": "continue",
                    "conversation_id": conversation_id,
                    "user_prompt": "How does that relate to dark energy?"
                })
                print("Conversation continued:", conversation_continue)

                # 获取对话历史
                conversation_history = await session.call_tool("test_multiturn_conversation", {
                    "mode": "get",
                    "conversation_id": conversation_id
                })
                print("Conversation history:", conversation_history)

asyncio.run(main())

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。