高级提示工程师
提示工程模式、LLM评估框架和代理系统设计。
目录
快速开始
# 分析并优化提示文件
python scripts/prompt_optimizer.py prompts/my_prompt.txt --analyze
# 评估RAG检索质量
python scripts/rag_evaluator.py --contexts contexts.json --questions questions.json
# 可视化代理工作流从定义
python scripts/agent_orchestrator.py agent_config.yaml --visualize
工具概览
1. 提示优化器
分析提示的令牌效率、清晰度和结构。生成优化版本。
输入: 提示文本文件或字符串 输出: 分析报告及优化建议
用法:
# 分析提示文件
python scripts/prompt_optimizer.py prompt.txt --analyze
# 输出:
# 令牌计数:847
# 估计成本:$0.0025 (GPT-4)
# 清晰度得分:72/100
# 发现问题:
# - 第3行的不明确指令
# - 缺少输出格式规范
# - 多余的上下文(第12-15行重复第5-8行)
# 建议:
# 1. 添加明确的输出格式:"以JSON格式响应,包含键:..."
# 2. 删除多余的上下文以节省89个令牌
# 3. 澄清"分析" -> "列出前3个问题的严重程度评级"
# 生成优化版本
python scripts/prompt_optimizer.py prompt.txt --optimize --output optimized.txt
# 计算令牌以估算成本
python scripts/prompt_optimizer.py prompt.txt --tokens --model gpt-4
# 提取并管理少量示例
python scripts/prompt_optimizer.py prompt.txt --extract-examples --output examples.json
2. RAG评估器
通过测量上下文相关性和答案忠实度来评估检索增强生成质量。
输入: 检索到的上下文(JSON)和问题/答案 输出: 评估指标和质量报告
用法:
# 评估检索质量
python scripts/rag_evaluator.py --contexts retrieved.json --questions eval_set.json
# 输出:
# === RAG评估报告 ===
# 评估问题:50
#
# 检索指标:
# 上下文相关性:0.78(目标:>0.80)
# 检索精度@5:0.72
# 覆盖率:0.85
#
# 生成指标:
# 答案忠实度:0.91
# 基于上下文的生成:0.88
#
# 发现问题:
# - 8个问题在前5名中没有相关上下文
# - 3个答案包含不在上下文中的信息
#
# 建议:
# 1. 改进技术文档的分块策略
# 2. 为日期敏感查询添加元数据过滤
# 使用自定义指标评估
python scripts/rag_evaluator.py --contexts retrieved.json --questions eval_set.json \
--metrics relevance,faithfulness,coverage
# 导出详细结果
python scripts/rag_evaluator.py --contexts retrieved.json --questions eval_set.json \
--output report.json --verbose
3. 代理协调器
解析代理定义并可视化执行流程。验证工具配置。
输入: 代理配置(YAML/JSON) 输出: 工作流可视化,验证报告
用法:
# 验证代理配置
python scripts/agent_orchestrator.py agent.yaml --validate
# 输出:
# === 代理验证报告 ===
# 代理:research_assistant
# 模式:ReAct
#
# 工具(4个注册):
# [OK] web_search - API密钥配置
# [OK] calculator - 无需配置
# [WARN] file_reader - 缺少allowed_paths
# [OK] summarizer - 提示模板有效
#
# 流程分析:
# 最大深度:5次迭代
# 估计令牌/运行:2,400-4,800
# 潜在无限循环:否
#
# 建议:
# 1. 为文件阅读器添加allowed_paths以增强安全性
# 2. 考虑为简单查询添加早期退出条件
# 可视化代理工作流(ASCII)
python scripts/agent_orchestrator.py agent.yaml --visualize
# 输出:
# ┌─────────────────────────────────────────┐
# │ research_assistant │
# │ (ReAct Pattern) │
# └─────────────────┬───────────────────────┘
# │
# ┌────────▼────────┐
# │ User Query │
# └────────┬────────┘
# │
# ┌────────▼────────┐
# │ Think │◄──────┐
# └────────┬────────┘ │
# │ │
# ┌────────▼────────┐ │
# │ Select Tool │ │
# └────────┬────────┘ │
# │ │
# ┌─────────────┼─────────────┐ │
# ▼ ▼ ▼ │
# [web_search] [calculator] [file_reader]
# │ │ │ │
# └─────────────┼─────────────┘ │
# │ │
# ┌────────▼────────┐ │
# │ Observe │───────┘
# └────────┬────────┘
# │
# ┌────────▼────────┐
# │ Final Answer │
# └─────────────────┘
# 导出工作流为Mermaid图表
python scripts/agent_orchestrator.py agent.yaml --visualize --format mermaid
提示工程工作流程
提示优化工作流程
用于提高现有提示的性能或减少令牌成本。
步骤1:基线当前提示
python scripts/prompt_optimizer.py current_prompt.txt --analyze --output baseline.json
步骤2:识别问题 查看分析报告,关注:
- 令牌浪费(多余的指令,冗长的示例)
- 不明确的指令(不清晰的输出格式,模糊的动词)
- 缺少约束(没有长度限制,没有格式规范)
步骤3:应用优化模式
| 问题 | 应用模式 |
|---|---|
| 不明确的输出 | 添加明确的格式规范 |
| 过于冗长 | 提取为少量示例 |
| 结果不一致 | 添加角色/人物框架 |
| 缺少边缘情况 | 添加约束边界 |
步骤4:生成优化版本
python scripts/prompt_optimizer.py current_prompt.txt --optimize --output optimized.txt
步骤5:比较结果
python scripts/prompt_optimizer.py optimized.txt --analyze --compare baseline.json
# 显示:令牌减少,清晰度提高,问题解决
步骤6:用测试用例验证 对两个提示运行你的评估集并比较输出。
少量示例设计工作流程
用于创建上下文学习示例。
步骤1:清晰定义任务
任务:从客户评论中提取产品实体
输入:评论文本
输出:包含{product_name, sentiment, features_mentioned}的JSON
步骤2:选择多样化示例(推荐3-5个)
| 示例类型 | 目的 |
|---|---|
| 简单案例 | 显示基本模式 |
| 边缘案例 | 处理歧义 |
| 复杂案例 | 多个实体 |
| 负面案例 | 不要提取什么 |
步骤3:一致格式化
示例1:
输入:"Love my new iPhone 15, the camera is amazing!"
输出:{{"product_name": "iPhone 15", "sentiment": "positive", "features_mentioned": ["camera"]}}
示例2:
输入:"The laptop was okay but battery life is terrible."
输出:{{"product_name": "laptop", "sentiment": "mixed", "features_mentioned": ["battery life"]}}
步骤4:验证示例质量
python scripts/prompt_optimizer.py prompt_with_examples.txt --validate-examples
# 检查:一致性,覆盖范围,格式对齐
步骤5:用保留案例测试 确保模型泛化超出你的示例。
结构化输出设计工作流程
当你需要可靠的JSON/XML/结构化响应时使用。
步骤1:定义模式
{
"type": "object",
"properties": {
"summary": {"type": "string", "maxLength": 200},
"sentiment": {"enum": ["positive", "negative", "neutral"]},
"confidence": {"type": "number", "minimum": 0, "maximum": 1}
},
"required": ["summary", "sentiment"]
}
步骤2:在提示中包含模式
以匹配此模式的JSON响应:
- summary (string, 最大200字符):内容的简要总结
- sentiment (enum):"positive", "negative", "neutral"之一
- confidence (number 0-1):你对情感的置信度
步骤3:添加格式执行
重要:仅以有效JSON响应。无Markdown,无解释。
以{开始并以}结束
步骤4:验证输出
python scripts/prompt_optimizer.py structured_prompt.txt --validate-schema schema.json
参考文档
| 文件 | 包含 | 加载时用户询问 |
|---|---|---|
references/prompt_engineering_patterns.md |
10个提示模式,带输入/输出示例 | “哪个模式?”, “少量示例”, “链式思考”, “角色提示” |
references/llm_evaluation_frameworks.md |
评估指标,评分方法,A/B测试 | “如何评估?”, “衡量质量”, “比较提示” |
references/agentic_system_design.md |
代理架构(ReAct, Plan-Execute, Tool Use) | “构建代理”, “工具调用”, “多代理” |
常见模式快速参考
| 模式 | 何时使用 | 示例 |
|---|---|---|
| 零次示例 | 简单,定义明确的任务 | “将此电子邮件分类为垃圾邮件或非垃圾邮件” |
| 少量示例 | 复杂任务,需要一致的格式 | 在任务前提供3-5个示例 |
| 链式思考 | 推理,数学,多步骤逻辑 | “逐步思考…” |
| 角色提示 | 需要专业知识,特定视角 | “你是一位专家税务会计师…” |
| 结构化输出 | 需要可解析的JSON/XML | 包含模式+格式执行 |
常见命令
# 提示分析
python scripts/prompt_optimizer.py prompt.txt --analyze # 完整分析
python scripts/prompt_optimizer.py prompt.txt --tokens # 仅令牌计数
python scripts/prompt_optimizer.py prompt.txt --optimize # 生成优化版本
# RAG评估
python scripts/rag_evaluator.py --contexts ctx.json --questions q.json # 评估
python scripts/rag_evaluator.py --contexts ctx.json --compare baseline # 与基线比较
# 代理开发
python scripts/agent_orchestrator.py agent.yaml --validate # 验证配置
python scripts/agent_orchestrator.py agent.yaml --visualize # 显示工作流
python scripts/agent_orchestrator.py agent.yaml --estimate-cost # 令牌估算