高级提示词技术

高级提示词技术
AI Agent智能体开发实践【行情 报价 价格 评测】-京东《AI Agent智能体开发实践》1~6章试读_《ai agent 智能体开发实践》在线阅读-CSDN博客本文讲解递归提示、元提示和多智能体协作提示3种高级提示技术。高级提示词技术Advanced Prompting Techniques是指在与大语言模型交互时通过策略性设计提示词来引导模型生成更准确、相关、深度或符合特定需求输出的方法。与基础的“直接提问”不同高级提示技术更注重利用模型的推理能力、上下文理解能力和角色代入能力从而充分发挥模型潜力。4.4.1 递归提示递归提示Recursive Prompting是提示工程中的一种高级策略其核心思想借鉴了计算机科学中的“递归”概念——通过反复调用相似的逻辑或步骤将复杂问题分解为多个可重复处理的子问题最终逐步逼近并得到完整答案。1. 核心思想递归提示的本质是将一个复杂任务拆解为结构相似的子任务每个子任务的解决依赖于前一个子任务的结果通过对相同的提示逻辑进行“自我调用”即基于上一步结果生成下一步提示循环迭代直到满足终止条件如得到最终答案。简单来说就是“用解决子问题的方法解决更大的问题”且子问题与原问题的处理逻辑一致。2. 关键要素递归提示的有效实施需要以下3个核心要素。1基础问题初始条件定义最基本的子问题或起点类似于递归中的“基例”作为整个流程的启动点。2递归步骤明确如何基于当前子问题的结果生成下一个子问题的提示即“如何调用自身”确保子任务结构一致。3终止条件设定停止递归的规则如“达到预设步骤数”“子问题结果满足目标要求”避免无限循环。3. 实施步骤以“分析长文本的核心论点”为例递归提示的步骤可拆解如下。定义基础问题初始提示“总结下文第一段的核心观点用一句话概括[第一段文本]”。设计递归步骤基于上一步对第n段的总结生成处理第n1段的提示“结合前文第1至第n段的核心观点‘[前n段总结]’总结第n1段的核心观点并整合为新的总结[第n1段文本]”。设定终止条件当所有段落处理完毕后停止递归最终提示“整合所有段落的总结提炼全文的核心论点”。迭代执行重复步骤2直到处理完所有段落最后通过步骤3得到最终答案。【示例4.5】递归提示将复杂问题分解为多个子问题并递归解决。def recursive_prompting(problem, depth0, max_depth3): 递归提示函数将复杂问题分解为子问题 参数: problem (str): 要解决的问题 depth (int): 当前递归深度 max_depth (int): 最大递归深度 返回: str: 最终解决方案 # 基本情况达到最大深度或问题足够简单 if depth max_depth or is_simple_problem(problem): return solve_directly(problem) # 分解问题 subproblems decompose_problem(problem) # 递归解决子问题 solutions [] for sub in subproblems: solutions.append(recursive_prompting(sub, depth 1, max_depth)) # 合并解决方案 return combine_solutions(solutions) def is_simple_problem(problem): 判断问题是否足够简单 # 这里可以定义简单问题的标准 return len(problem.split()) 10 # 示例少于10个单词的问题 def solve_directly(problem): 直接解决问题 return fSolution for: {problem} def decompose_problem(problem): 将问题分解为子问题 # 这里可以实现实际的问题分解逻辑 words problem.split() mid len(words) // 2 return [ .join(words[:mid]), .join(words[mid:])] def combine_solutions(solutions): 合并子问题的解决方案 return \n.join(solutions) # 测试用例 if __name__ __main__: complex_problem 如何设计一个能够处理自然语言查询并返回结构化数据的AI系统 print(原始问题:) print(complex_problem) print(\n解决方案:) print(recursive_prompting(complex_problem))运行代码输出如下原始问题: 如何设计一个能够处理自然语言查询并返回结构化数据的AI系统 解决方案: Solution for: 如何设计一个能够处理自然语言查询并返回结构化数据的AI系统关键点说明1递归结构函数会不断将问题分解为更小的子问题直到达到基本情况。通过depth参数防止无限递归。2分解策略当前示例简单地将问题文本对半拆分。实际应用中可以实现更智能的分解逻辑。3合并策略当前示例简单地将子解决方案用换行符连接。可以根据需要实现更复杂的合并逻辑。4复杂度分析时间复杂度O(bd)其中b是分支因子d是最大深度。空间复杂度O(d)递归调用栈。4.4.2 元提示元提示Meta Prompting是一种高级的提示工程技术指的是设计能够指导AI系统生成或优化其他提示的提示。简而言之它是“关于提示的提示”。1. 核心思想元提示的核心是将“如何设计提示词”的规则编码为一个更高层次的指令元提示让模型根据这个指令自动生成符合任务需求的具体提示词。通过这种方式将“设计提示词”的工作交给模型减少人工干预提升适应性。2. 工作原理元提示的工作流程通常分为以下3步。1定义元提示人类设计一个元提示明确 “需要生成什么样的提示词”“该提示词用于什么任务”“生成的提示词应包含哪些要素”等规则。2模型生成具体提示词AI模型解析元提示根据规则生成针对具体任务的提示词称为“目标提示”。3执行目标任务用生成的“目标提示”处理用户输入完成具体任务如分类、翻译、推理等。【示例4.6】使用DeepSeek API实现元提示展示通过构建元提示来优化模型的输出质量。import os import json import requests # DeepSeek API配置 DEEPSEEK_API_URL https://api.deepseek.com/v1/chat/completions # 假设的API地址需替换为实际地址 DEEPSEEK_API_KEY os.environ.get(DEEPSEEK_API_KEY, your_api_key_here) # 从环境变量获取API密钥 def generate_response(prompt, modeldeepseek-chat): 调用DeepSeek API生成回复 headers { Content-Type: application/json, Authorization: fBearer {DEEPSEEK_API_KEY} } payload { model: model, messages: [{role: user, content: prompt}], temperature: 0.7, max_tokens: 1000 } try: response requests.post(DEEPSEEK_API_URL, headersheaders, datajson.dumps(payload)) response.raise_for_status() return response.json()[choices][0][message][content] except requests.exceptions.RequestException as e: print(fAPI请求错误: {e}) return None except (KeyError, json.JSONDecodeError) as e: print(f响应解析错误: {e}) return None def meta_prompting_example(original_question): 元提示示例流程 # 第一阶段直接提问 print( 第一阶段直接提问 ) direct_answer generate_response(original_question) print(f问题: {original_question}) print(f直接回答: {direct_answer}\n) # 第二阶段构建元提示 meta_prompt f 原始问题: {original_question} 模型的回答: {direct_answer} 请分析以下内容: 1. 这个回答是否完整地解决了原始问题 2. 回答中是否包含错误或不准确的信息 3. 回答的结构是否清晰逻辑是否连贯 请根据以上分析提供改进建议或补充信息然后生成一个优化后的回答。 # 第三阶段使用元提示获取优化回答 print( 第二阶段元提示优化 ) optimized_answer generate_response(meta_prompt) print(优化后的回答:) print(optimized_answer) return direct_answer, optimized_answer if __name__ __main__: # 示例问题 sample_question 如何实现一个高效的Python字典缓存机制 meta_prompting_example(sample_question)运行代码输出如下 第一阶段直接提问 API请求需要注册付款 API请求错误: 402 Client Error: Payment Required for url: https://api.deepseek.com/v1/ chat/completions 问题: 如何实现一个高效的Python字典缓存机制 直接回答: None 第二阶段元提示优化 API请求错误: 402 Client Error: Payment Required for url: https://api.deepseek.com/v1/ chat/completions 优化后的回答: None这个实现包含以下两个主要功能。1generate_response函数封装了调用DeepSeek API的基本逻辑包括请求构建和错误处理。2meta_prompting_example函数展示了元提示的工作流程。首先直接向模型提问然后构建元提示包含原始问题和模型的初次回答最后使用元提示获取优化后的回答。使用时需要注意1替换代码中的DEEPSEEK_API_URL为实际的DeepSeek API端点。2设置DEEPSEEK_API_KEY环境变量或直接在代码中替换API密钥。3根据实际需求调整温度temperature和最大Token数max_tokens参数。元提示是一种强大的技术可以帮助提升模型输出的质量和相关性特别适合需要精确回答的 场景。4.4.3 多智能体协作提示多智能体协作提示是指引导多个AI智能体协同完成任务的提示词设计其核心是通过明确规则、角色和目标让不同智能体形成“分工−交互−闭环”的协作模式。下面将从核心原则、提示结构、示例场景三个维度展开帮助读者设计高效的多智能体协作提示。1. 多智能体协作提示的核心原则在设计提示时需优先确保以下原则避免协作混乱或低效。1目标强对齐所有智能体需明确“共同终极目标”避免各自为战例如“完成一份2024年新能源汽车市场分析报告”而非“各自处理数据/写结论”。2角色差异化每个智能体的“身份、能力、职责”需清晰且互补例如“数据分析师”不等于“行业研究员”前者专注数据挖掘后者专注政策解读。3通信规范化明确智能体间的交互方式如“谁向谁反馈”“反馈格式”“何时终止交互”避免无效沟通。4动态可调整预留“任务迭代机制”允许智能体根据中间结果调整分工例如“若数据不足研究员需向分析师提出补充数据需求”。2. 多智能体协作提示的通用结构一份有效的协作提示需包含以下模块可根据任务复杂度增减。1任务总览给所有智能体明确核心目标用具体、可量化的语言描述最终成果例如“生成3000字报告包含市场规模数据、TOP5企业竞争分析、政策影响预测”。背景信息提供任务相关的前提如“基于2024年16月公开数据”“需覆盖中国、欧洲市场”。2角色分配给每个智能体的专属定义需为每个智能体单独定义“身份标签核心能力具体职责”示例模板【智能体A数据分析师】 -身份专注市场数据挖掘与量化分析的专家擅长处理Excel、统计局公开数据。 -职责 ① 收集2024年1-6月新能源汽车全球销量、渗透率数据。 ② 计算TOP5企业比亚迪、特斯拉、大众、蔚来、宝马的市场份额变化。 ③ 将数据整理为“图表关键结论”如“比亚迪在华份额同比增长X%”并同步给智能体B。 【智能体B行业研究员】 -身份熟悉新能源汽车政策、技术趋势的分析师擅长解读政策文件与行业报告。 -职责 ① 分析2024年中国《新能源汽车产业高质量发展规划》、欧洲碳排放标准对市场的影响。 ② 结合智能体A的数据判断“政策是否导致某企业份额波动”如“欧洲碳排放标准是否抑制了大众燃油车转型速度”。 ③ 将分析结果同步给智能体C。 【智能体C报告整合师】 -身份擅长逻辑梳理与文字表达的编辑能将碎片化信息整合成结构化报告。 -职责 ① 接收智能体A的数据结论和智能体B的政策分析。 ② 按“市场规模→企业竞争→政策影响→未来预测”的逻辑串联内容。 ③ 若发现数据与分析冲突如“数据显示销量下滑但政策利好”需向A/B提出疑间并要求补充说明。3协作流程与交互规则明确“谁先行动、如何反馈、何时终止”避免流程卡顿启动顺序例如“智能体A先完成数据收集2小时内→同步给B→B在1小时内完成分析→同步给C→C在1.5小时内整合→初稿反馈给A与B确认”。反馈格式要求智能体用固定标签交互例如“【向智能体A提问】你提供的特斯拉欧洲销量数据是否包含Model 3/Y请补充细分车型占比”。冲突处理例如“若A和B对同一结论有分歧需各自提供依据由C组织‘辩论式交互’各用3条理由反驳最终以数据更权威的一方为准”。4输出标准明确最终成果的格式、细节要求确保协作结果达标。例如“最终报告需包含①3张核心图表全球销量趋势图、企业份额饼图、政策时间轴②至少5个数据支撑的结论如“中国市场渗透率突破35%”③200字以内的摘要”。【示例4.7】使用DeepSeek API构建一个简单的多智能体协作系统。import requests import json import time import os from typing import List, Dict, Any, Optional class DeepSeekAgent: DeepSeek API调用智能体 def __init__(self, api_key: str, model: str deepseek-chat): self.api_key api_key self.model model self.headers { Content-Type: application/json, Authorization: fBearer {api_key} } self.api_base https://api.deepseek.com/v1/chat/completions def generate(self, messages: List[Dict[str, str]], temperature: float 0.7, max_tokens: int 2000) - str: 调用DeepSeek API生成回复 payload { model: self.model, messages: messages, temperature: temperature, max_tokens: max_tokens } try: response requests.post( self.api_base, headersself.headers, datajson.dumps(payload) ) response.raise_for_status() return response.json()[choices][0][message][content] except Exception as e: print(fAPI调用错误: {e}) return class Task: 任务类用于表示协作中的任务 def __init__(self, task_id: str, description: str, status: str pending, dependencies: List[str] None, result: Any None): self.task_id task_id self.description description self.status status # pending, in_progress, completed, failed self.dependencies dependencies or [] self.result result self.assigned_agent None self.history [] def assign_agent(self, agent: DeepSeekAgent): 分配智能体到任务 self.assigned_agent agent self.history.append(f任务分配给智能体: {agent.__class__.__name__}) def update_status(self, status: str): 更新任务状态 self.status status self.history.append(f任务状态更新为: {status}) def add_result(self, result: Any): 添加任务结果 self.result result self.history.append(f任务结果添加完成) class MultiAgentSystem: 多智能体协作系统 def __init__(self, agents: List[DeepSeekAgent]): self.agents agents self.tasks {} self.completed_tasks {} self.message_log [] def add_task(self, task: Task): 添加任务到系统 self.tasks[task.task_id] task self.message_log.append(f添加新任务: {task.task_id}) def get_available_tasks(self) - List[Task]: 获取所有可执行的任务无未完成依赖 available [] for task_id, task in self.tasks.items(): if task.status pending: if all(dep in self.completed_tasks for dep in task.dependencies): available.append(task) return available def execute_tasks(self, max_iterations: int 10): 执行任务直到所有任务完成或达到最大迭代次数 iteration 0 while iteration max_iterations and self.tasks: iteration 1 available_tasks self.get_available_tasks() if not available_tasks: print(没有可执行的任务可能存在依赖循环) break for task in available_tasks: # 简单的轮询分配策略 agent_idx iteration % len(self.agents) agent self.agents[agent_idx] task.assign_agent(agent) task.update_status(in_progress) # 创建任务执行的消息历史 messages [{role: system, content: f你是一个专业的助手负责处理: {task.description}}] # 添加依赖任务的结果作为上下文 for dep_id in task.dependencies: if dep_id in self.completed_tasks: messages.append({ role: user, content: f依赖任务 {dep_id} 的结果: {self.completed_tasks[dep_id].result} }) # 执行任务 result agent.generate(messages) task.add_result(result) task.update_status(completed) # 从待办任务中移除加入已完成任务 self.completed_tasks[task.task_id] self.tasks.pop(task.task_id) self.message_log.append(f任务 {task.task_id} 已完成) print(f任务 {task.task_id} 由 {agent.__class__.__name__} 完成) # 短暂延迟避免过快调用API time.sleep(1) def main(): 多智能体协作主函数 # 从环境变量获取API密钥 api_key os.environ.get(DEEPSEEK_API_KEY, your_api_key_here) # 创建多个智能体 agent1 DeepSeekAgent(api_key, modeldeepseek-chat) agent2 DeepSeekAgent(api_key, modeldeepseek-chat) # 创建多智能体系统 mas MultiAgentSystem([agent1, agent2]) # 定义任务 task1 Task( task_iddata_analysis, description分析销售数据并提取关键指标 ) task2 Task( task_idgraph_generation, description根据数据分析结果生成可视化图表, dependencies[data_analysis] ) task3 Task( task_idreport_writing, description撰写数据分析和可视化结果的总结报告, dependencies[data_analysis, graph_generation] ) # 添加任务到系统 mas.add_task(task1) mas.add_task(task2) mas.add_task(task3) # 执行任务 mas.execute_tasks() # 打印最终报告 final_report mas.completed_tasks.get(report_writing) if final_report: print(\n最终报告:) print(final_report.result) else: print(最终报告生成失败) if __name__ __main__: main()运行代码输出如下任务 data_analysis 由 DeepSeekAgent 完成 任务 graph_generation 由 DeepSeekAgent 完成 任务 report_writing 由 DeepSeekAgent 完成 最终报告: # 销售数据分析与可视化报告总结 ## 核心发现概述 本报告基于全面的销售数据分析框架通过多维度指标评估和可视化呈现揭示了以下关键发现 1**销售表现**总销售额呈现稳定增长趋势6月达到峰值22,000元产品A贡献最大(35%) 2**客户行为**客户留存率随季度递减首季度留存率达65%80%但长期留存需改善 3**产品绩效**产品B利润率最高(30%)但销售额次于产品A存在优化空间 4**季节模式**明显的年末销售高峰12月销售额指数达130(基准100) 5**区域差异**华东地区销售表现最佳西部和东北地区有待开发 ## 详细分析结果 ### 销售绩效仪表盘 - **产品结构**前三大产品(A,B,C)贡献总销售额的80%长尾产品机会待挖掘 - **月度趋势**上半年持续增长月均增长率约12%促销活动效果显著 - **平均订单价值**稳定在180220元区间与行业基准持平 ### 客户洞察 - **获取与留存**新客户获取成本呈下降趋势但第4季度留存率仅20% - **价值分布**20%高价值客户贡献约60%收入存在明显二八分布 - **生命周期**平均CLV为1,200元优质客户群体达2,500元以上 ### 产品与库存分析 - **利润率对比**高销量产品(A)与高利润产品(B)不完全重合定价策略待优化 - **库存周转**畅销产品周转率3.2次/年滞销产品仅0.8次库存结构需调整 - **退货分析**产品D退货率达8%显著高于平均水平(3%)需质量关注 ## 可视化重点呈现 1. **组合图表**产品利润率与销售额的对比条形图直观显示产品战略矩阵 2. **热力图**客户留存衰减模式清晰呈现指导留存策略制定 3. **地理地图**区域销售密度分布为资源分配提供依据 4. **关联网络**产品组合购买关系揭示交叉销售机会 ## 行动建议 1. **产品策略**优化产品A和B的组合促销提升整体利润率 2. **客户经营**设计季度性留存激励计划改善长期客户价值 3. **库存优化**建立动态库存预警机制减少滞销产品占比 4. **区域拓展**针对西部和东北地区制定差异化营销方案 5. **促销规划**利用季节性模式提前部署旺季营销资源 ## 后续分析方向 1. 深入客户分群研究识别高潜力客户特征 2. 价格弹性测试寻找最优定价区间 3. 促销ROI分析优化营销预算分配 4. 供应链响应时间与销售损失关联分析 需要针对任何特定发现或建议提供更详细的数据支持或补充分析吗该示例主要包含以下组件。DeepSeekAgent类封装了DeepSeek API的调用处理与模型的通信。Task类表示协作中的任务包含任务描述、状态、依赖关系等。MultiAgentSystem类管理多个智能体和任务执行流程包括任务分配和依赖管理。主函数创建智能体、定义任务依赖关系并执行协作流程。系统通过轮询方式将任务分配给不同智能体并根据任务依赖关系有序执行。完成的任务结果会作为上下文提供给依赖它的后续任务。使用时需要设置DEEPSEEK_API_KEY环境变量或者直接在代码中替换API密钥。该案例展示了数据分析、图表生成和报告撰写三个任务的协作流程。