将成功的对话线程转换为可用于未来任务的提示。
基于这样一个原则:您与大语言模型(LLM)交互中最重要的成果是您如何生成结果,而不是结果本身(参见新的代码)。同时考虑到LLMs可能已经比人类更擅长设计提示。
https://github.com/user-attachments/assets/d2e90767-c6f2-44b7-a216-1d9e103e968a
save_prompt总结、分类并转换对话历史记录为Markdown格式的提示模板。
在成功完成复杂任务后运行,以构建您的提示库。
参数:
conversation_messages (字符串):包含对话历史记录的JSON字符串task_description (可选字符串):正在执行的任务描述context_info (可选字符串):关于对话的附加上下文信息search_prompts使用语义搜索(如果Voyage API密钥可用)或文本搜索作为备选方案从数据库中检索提示。返回最相关的提示供用户选择。
参数:
query (字符串):需要帮助的问题或任务描述limit (可选整数):要返回的最大提示数量(默认值:3)improve_prompt_from_feedback总结对话中的反馈,并根据反馈和对话上下文更新提示。
参数:
prompt_id (字符串):要改进的提示IDfeedback (字符串):用户对提示有效性的反馈conversation_context (可选字符串):使用该提示时的对话上下文update_prompt手动更新现有提示。
参数:
prompt_id (字符串):要更新的提示IDchange_description (字符串):更改的内容和原因描述summary (可选字符串):更新后的摘要prompt_template (可选字符串):更新后的提示模板history (可选字符串):更新后的历史记录use_case (可选字符串):更新后的用例get_prompt_details获取特定提示的详细信息,包括其完整的模板、历史记录和元数据。用于在应用之前查看完整的提示。
参数:
prompt_id (字符串):要检索的提示IDsearch_prompts_by_use_case按其用例类别(例如'code-gen','text-gen','data-analysis')搜索提示。这是一种高效的基于类别的搜索,独立于嵌入服务工作。
参数:
use_case (字符串):要搜索的用例类别limit (可选整数):要返回的最大结果数量(默认值:5)生成的提示模板使用以下提示工程技术:
模板按照以下顺序组织:
<example>)来分隔内容部分{variable})进行可定制的输入这确保保存的提示具有良好的结构、可重用性,并且对未来任务有效。
为了最大化此MCP服务器的价值,请向您的LLM接口系统提示添加以下说明:
在开始任何大型或复杂任务之前,始终搜索相关提示。
在成功完成任务后,始终询问是否希望将对话保存为提示。
在成功完成带有提示的任务后,始终询问是否希望更新提示。
这有助于确保LLM在没有显式请求的情况下运行相关工具。
💡 提示:为了增强MongoDB管理,考虑与本提示保存器一起使用MongoDB MCP Server。它提供了直接的MongoDB操作,并可以帮助您更有效地管理提示数据库。
克隆仓库:
git clone <仓库地址>
cd prompt-saver-mcp
安装依赖项:
uv sync
# 或者使用pip:
pip install -e .
设置MongoDB Atlas:
prompt_saver的数据库embedding字段上创建一个向量搜索索引(2048维,点积相似度),用于语义搜索配置环境变量:
cp .env.example .env
# 编辑.env文件,填写您的API密钥和MongoDB Atlas URI
所有配置都需要:
MONGODB_URI:MongoDB Atlas连接字符串可选:
VOYAGE_AI_API_KEY:Voyage AI API密钥(启用语义搜索)选择一个LLM提供商:
AZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTOPENAI_API_KEYANTHROPIC_API_KEY| 变量 | 描述 | 默认值 |
|---|---|---|
MONGODB_URI | MongoDB Atlas连接URI | 必需 |
MONGODB_DATABASE | 数据库名称 | prompt_saver |
MONGODB_COLLECTION | 集合名称 | prompts |
VOYAGE_AI_API_KEY | Voyage AI API密钥(启用语义搜索) | 可选 |
VOYAGE_AI_EMBEDDING_MODEL | 嵌入模型 | voyage-3-large |
| 变量 | 描述 | 默认值 |
|---|---|---|
LLM_PROVIDER | LLM提供商:azure_openai,openai,或anthropic | azure_openai |
提供商选项:
| 变量 | 描述 | 默认值 |
|---|---|---|
AZURE_OPENAI_API_KEY | Azure OpenAI API密钥 | 必需 |
AZURE_OPENAI_ENDPOINT | Azure OpenAI端点 | 必需 |
AZURE_OPENAI_MODEL | 模型部署名称 | gpt-4o |
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENAI_API_KEY | OpenAI API密钥 | 必需 |
OPENAI_MODEL | 模型名称 | g-4o |
| 变量 | 描述 | 默认值 |
|---|---|---|
ANTHROPIC_API_KEY | Anthropic API密钥 | 必需 |
ANTHROPIC_MODEL | 模型名称 | claude-sonnet-4-20250514 |
添加到您的Claude Desktop配置文件中。根据您首选的LLM提供商选择以下配置之一:
{
"mcpServers": {
"prompt-saver": {
"command": "uv",
"args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
"cwd": "/path/to/your/prompt-saver-mcp",
"env": {
"MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
"MONGODB_DATABASE": "prompt_saver",
"VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
"LLM_PROVIDER": "azure_openai",
"AZURE_OPENAI_API_KEY": "your_azure_openai_api_key_here",
"AZURE_OPENAI_ENDPOINT": "https://your-resource.openai.azure.com/",
"AZURE_OPENAI_MODEL": "gpt-4o"
}
}
}
}
{
"mcpServers": {
"prompt-saver": {
"command": "uv",
"args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
"cwd": "/path/to/your/prompt-saver-mcp",
"env": {
"MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
"MONGODB_DATABASE": "prompt_saver",
"VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
"LLM_PROVIDER": "openai",
"OPENAI_API_KEY": "your_openai_api_key_here",
"OPENAI_MODEL": "gpt-4o"
}
}
}
}
{
"mcpServers": {
"prompt-saver": {
"command": "uv",
"args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
"cwd": "/path/to/your/prompt-saver-mcp",
"env": {
"MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
"MONGODB_DATABASE": "prompt_saver",
"VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
"LLM_PROVIDER": "anthropic",
"ANTHROPIC_API_KEY": "your_anthropic_api_key_here",
"ANTHROPIC_MODEL": "claude-sonnet-4-20250514"
}
}
}
}
注意:对于Anthropic支持,安装anthropic包:
pip install anthropic
在完成复杂任务后,将对话保存为可重复使用的提示:
# 示例对话消息(JSON格式)
conversation = [
{"role": "user", "content": "帮我创建一个解析CSV文件的Python函数"},
{"role": "assistant", "content": "我将帮助您创建一个健壮的CSV解析器..."},
# ... 更多对话
]
# 保存提示
save_prompt(
conversation_messages=json.dumps(conversation),
task_description="创建CSV解析器函数",
context_info="成功创建了带错误处理的解析器"
)
在开始新任务时查找相关提示:
# 搜索提示
result = search_prompts("我需要帮助在Python中处理数据")
# 工具将返回最相关的提示并要求您选择一个
在使用提示后,根据您的经验更新它:
update_prompt(
prompt_id="prompt_id_here",
change_description="增加了错误处理示例",
prompt_template="更新模板,增加更好的错误处理..."
)
检索特定提示的全部细节:
# 获取完整的提示信息
result = get_prompt_details("prompt_id_here")
print(result["prompt"]["prompt_template"]) # 查看完整的模板
利用AI自动根据反馈改进提示:
improve_prompt_from_feedback(
prompt_id="prompt_id_here",
feedback="该提示效果很好,但可以增加更多针对边缘情况的具体示例",
conversation_context="用于调试复杂的API集成问题"
)
查找特定类型任务的提示:
# 查找所有代码生成提示
result = search_prompts_by_use_case("code-gen", limit=5)
# 查找数据分析提示
result = search_prompts_by_use_case("data-analysis", limit=3)
每个提示存储如下结构:
{
"_id": ObjectId,
"use_case": str, # "code-gen", "text-gen", "data-analysis", "creative", "general"
"summary": str, # 提示及其用例的摘要
"prompt_template": str, # 普遍的问题解决提示模板
"history": str, # 执行步骤和最终结果的摘要
"embedding": List[float], # 摘要的向量嵌入
"last_updated": datetime,
"num_updates": int,
"changelog": List[str] # 对此提示所做的更改列表
}
MIT许可证 - 详见LICENSE文件。