
MCP Prompt Tester

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 提示测试功能
工具列表
- list_providers:检索可用的 LLM 提供商及其默认模型。
- test_comparison:比较多个提示的并排效果,支持不同提供商、模型和参数。
- 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 文件(推荐)
- 在项目目录或主目录中创建名为
.env
的文件 - 添加您的 API 密钥,格式如下:
OPENAI_API_KEY=your-openai-api-key-here
ANTHROPIC_API_KEY=your-anthropic-api-key-here
- 服务器将自动检测并加载这些密钥
调试方式
启动服务器:
# 使用 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())