AI查询增强工具

PromptLab是一个智能系统,通过MLflow集成将基本用户查询转化为优化的AI提示,适用于需要高效提示工程的场景。

  • by iRahulPandey
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 iRahulPandey/PromptLab

使用说明

PromptLab:通过工作流集成增强人工智能查询

PromptLab是一个智能系统,它使用MLFLPrompt Registry将基本的用户查询转换为AI系统的优化提示。它将用户请求动态匹配到最合适的提示模板,并将其与提取的参数一起应用。

🔍 概述

PromptLab将MLflow Prompt Registry与动态提示匹配相结合,为提示工程创建了一个强大、灵活的系统:

  • 集中提示管理:在MLflow中存储、版本和管理提示
  • 动态匹配:智能地将用户查询与最佳提示模板相匹配
  • 版本控制:使用生产和存档别名跟踪提示历史记录
  • 可扩展:无需更改代码即可轻松添加新的提示类型

🏗️ 建筑

该系统由三个主要部分组成:

  1. 快速注册 (register_prompts.py)-用于在MLflow中注册和管理提示的工具
  2. 服务器 (promptlab_server.py)-具有动态提示匹配和LangGraph工作流的服务器
  3. 客户端 (promptlab_client.py)-用于处理用户查询的轻量级客户端

工作流流程

  1. 快速注册:在MLflow中注册带有版本控制和别名的提示模板
  2. 提示加载:服务器在启动时从MLflow加载所有可用提示
  3. 查询提交:用户通过客户端提交自然语言查询
  4. 智能匹配:LLM分析查询并选择最合适的提示模板
  5. 参数提取:系统从查询中提取所需参数
  6. 模板应用程序:所选模板将应用提取的参数
  7. 验证与调整:如果需要,将验证和调整增强的提示
  8. 响应生成:优化的提示可产生高质量的响应

📂 编码结构

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

更新现有提示

更新现有提示时,系统会自动:

  1. 存档以前的生产版本
  2. 将新版本设置为生产版本
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"}'

🔧 故障排除

未找到匹配的提示

如果系统无法将查询与任何提示模板匹配,它将:

  1. 记录未找到匹配项的消息
  2. 使用原始查询而不进行增强
  3. 仍然生成响应

您可以添加更多不同的提示模板来改进匹配。

LLM连接问题

如果LLM服务不可用,系统将回退到:

  1. 基于关键字的匹配用于提示选择
  2. 简单参数提取
  3. 基本提示增强

这确保了即使没有LLM访问,系统也能保持功能。