PromptLab:通过工作流集成增强人工智能查询
PromptLab是一个智能系统,它使用MLFLPrompt Registry将基本的用户查询转换为AI系统的优化提示。它将用户请求动态匹配到最合适的提示模板,并将其与提取的参数一起应用。
🔍 概述
PromptLab将MLflow Prompt Registry与动态提示匹配相结合,为提示工程创建了一个强大、灵活的系统:
- 集中提示管理:在MLflow中存储、版本和管理提示
- 动态匹配:智能地将用户查询与最佳提示模板相匹配
- 版本控制:使用生产和存档别名跟踪提示历史记录
- 可扩展:无需更改代码即可轻松添加新的提示类型
🏗️ 建筑
该系统由三个主要部分组成:
- 快速注册 (
register_prompts.py)-用于在MLflow中注册和管理提示的工具 - 服务器 (
promptlab_server.py)-具有动态提示匹配和LangGraph工作流的服务器 - 客户端 (
promptlab_client.py)-用于处理用户查询的轻量级客户端
工作流流程
- 快速注册:在MLflow中注册带有版本控制和别名的提示模板
- 提示加载:服务器在启动时从MLflow加载所有可用提示
- 查询提交:用户通过客户端提交自然语言查询
- 智能匹配:LLM分析查询并选择最合适的提示模板
- 参数提取:系统从查询中提取所需参数
- 模板应用程序:所选模板将应用提取的参数
- 验证与调整:如果需要,将验证和调整增强的提示
- 响应生成:优化的提示可产生高质量的响应
📂 编码结构
promptlab/
├── promptlab_server.py # Main server with LangGraph workflow
├── promptlab_client.py # Client for processing queries
├── register_prompts.py # MLflow prompt management tool
├── requirements.txt # Project dependencies
├── advanced_prompts.json # Additional prompt templates
└── README.md # Project documentation核心组件:
register_prompts.py
- 目的:管理MLflowRegistry中的提示
- 关键功能:
- register_prompt():注册新的提示或版本 - update_prompt():更新现有提示(存档以前的制作) - list_prompts():列出所有已注册的提示 - register_from_file():从JSON注册多个提示 - register_sample_prompts():使用标准提示进行初始化
promptlab_server.py
- 目的:使用LangGraph工作流处理查询
- 关键组件:
- load_all_prompts():从MLflow加载提示 - match_prompt():将查询与适当的模板匹配 - enhance_query():应用所选模板 - validate_query():验证增强的查询 - LangGraph workflow:协调查询增强过程
promptlab_client.py
- 目的:为服务提供用户界面
- 主要特点:
- 使用增强的提示处理查询 - 列出可用提示 - 显示详细的提示匹配信息
🚀 入门指南
先决条件
- Python 3.12
- 依赖关系
requirements.txt - 用于LLM功能的OpenAI API密钥
安装
# Clone the repository
git clone https://github.com/iRahulPandey/PromptLab.git
cd PromptLab
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export OPENAI_API_KEY="your-openai-api-key"注册提示
在使用PromptLab之前,您需要在MLflow中注册提示:
# Register sample prompts (essay, email, technical, creative)
python register_prompts.py register-samples
# Register additional prompt types (recommended)
python register_prompts.py register-file --file advanced_prompts.json
# Verify registered prompts
python register_prompts.py list运行服务器
# Start the server
python promptlab_server.py使用客户端
# Process a query
python promptlab_client.py "Write a blog post about machine learning"
# List available prompts
python promptlab_client.py --list
# Enable verbose output
python promptlab_client.py --verbose "Create a presentation on climate change"📋 及时管理
可用提示类型
PromptLab支持多种提示类型:
| 提示类型 | 描述 | 示例用例 |
|---|---|---|
| essay_frompt | 学术写作 | 研究论文、分析 |
| email_prompt | 电子邮件撰写 | 专业沟通 |
| technical_prompt | 技术说明 | 概念、技术 |
| creative_frompt | 创意写作 | 故事、诗歌、小说 |
| code_prompt | 代码生成 | 函数、算法 |
| summary_mpt | 内容摘要 | 文章、文档 |
| analysis_prompt | 批判性分析 | 数据、文本、概念 |
| qa_prompt | 问答 | 基于上下文的答案 |
| social_media_prompt | 社交媒体内容 | 平台特定帖子 |
| blog_prompt | 博客文章写作 | 在线文章 |
| report_prompt | 正式报告 | 业务、技术报告 |
| letter_prompt | 正式信函 | 封面、推荐信 |
| presentation_prompt | 演示大纲 | 幻灯片、演讲 |
| review_prompt | 评论 | 产品、媒体、服务 |
| comparison_frompt | 比较 | 产品、概念、选项 |
| instruction_prompt | 如何指导 | 分步说明 |
| custom_prompt | 可定制模板 | 专用用例 |
注册新提示
您可以通过多种方式注册新提示:
1.从命令行
python register_prompts.py register \
--name "new_prompt" \
--template "Your template with {{ variables }}" \
--message "Initial version" \
--tags '{"type": "custom", "task": "specialized"}'2.从模板文件
# Create a text file with your template
echo "Template content with {{ variables }}" > template.txt
# Register using the file
python register_prompts.py register \
--name "long_prompt" \
--template template.txt \
--message "Complex template"3.从JSON文件
使用多个提示创建JSON文件:
{
"prompts": [
{
"name": "prompt_name",
"template": "Template with {{ variables }}",
"commit_message": "Description",
"tags": {"type": "category", "task": "purpose"}
}
]
}然后注册它们:
python register_prompts.py register-file --file your_prompts.json更新现有提示
更新现有提示时,系统会自动:
- 存档以前的生产版本
- 将新版本设置为生产版本
python register_prompts.py update \
--name "essay_prompt" \
--template "New improved template with {{ variables }}" \
--message "Enhanced clarity and structure"查看提示详细信息
# List all prompts
python register_prompts.py list
# View detailed information about a specific prompt
python register_prompts.py details --name "essay_prompt"🛠️ 高级用法
模板变量
模板在中使用变量 {{ variable }} 格式:
Write a {{ formality }} email to my {{ recipient_type }} about {{ topic }} that includes:
- A clear subject line
- Appropriate greeting
...在匹配查询时,系统会自动提取这些变量的值。
生产和档案别名
每个提示符都可以有不同的版本和别名:
- 生产:当前活动版本(默认使用)
- 归档:以前的生产版本
这允许:
- 如果需要,可回滚到以前的版本
- 跟踪即时更改的历史记录
自定义提示注册
对于专门的用例,您可以创建高度定制的提示:
python register_prompts.py register \
--name "specialized_prompt" \
--template "You are a {{ role }} with expertise in {{ domain }}. Create a {{ document_type }} about {{ topic }} that demonstrates {{ quality }}." \
--message "Specialized template" \
--tags '{"type": "custom", "task": "specialized", "domain": "finance"}'🔧 故障排除
未找到匹配的提示
如果系统无法将查询与任何提示模板匹配,它将:
- 记录未找到匹配项的消息
- 使用原始查询而不进行增强
- 仍然生成响应
您可以添加更多不同的提示模板来改进匹配。
LLM连接问题
如果LLM服务不可用,系统将回退到:
- 基于关键字的匹配用于提示选择
- 简单参数提取
- 基本提示增强
这确保了即使没有LLM访问,系统也能保持功能。
