“当一个AI智能体制定计划时,它很少是独立运作的。任务附带边界、限制以及对结果的期望特点。简单地指示一个智能体‘规划一个营销活动’过于宽泛。它有预算吗?有截止日期吗?有没有特定要使用或避免的渠道?这就是在提示中添加限制和偏好变得非常重要的原因,它能引导智能体制定出有用且可接受的计划。提示是您传达这些重要细节的主要手段,从一开始就影响着智能体的决策过程。”区分两大主要类别会很有帮助:限制条件(硬性规则):这些是智能体计划必须满足的不可协商的条件。违反硬性限制的计划通常被视为失败。偏好(软性指导):这些是理想的品质或选择。智能体应该尝试遵循偏好,但它们不是严格的要求。即使计划没有满足所有偏好,也可能被接受,特别是在它们与硬性限制或其他更强的偏好冲突时。在提示中明确硬性限制硬性限制为智能体定义了问题空间的边界。清晰、明确的限制是有效规划的根本所在。1. 指令词和关键词使用清晰、命令性的语言。像 MUST、MUST NOT、REQUIRED、SHALL、SHALL NOT 这样的关键词可以有效地表示硬性限制。示例:System: 您是项目规划助手。 User: 规划软件开发项目。 Constraints: 1. 必须在2023年10月30日前交付alpha版本。 2. 开发团队规模不得超过5名工程师。 3. 要求:计划必须包含每周进度报告。2. 资源限制这些通常涉及可量化的限制,例如预算、时间或计算资源。时间限制:“整个研究阶段必须在7个工作日内完成。”预算限制:“提议的解决方案的估计实施成本必须低于10,000美元。”API调用限制:“当使用外部API时,智能体每小时对 GeoLocationAPI 的调用次数不得超过100次。”提示片段示例: “硬性限制:获取必要软件许可的总预算为1,200美元。计划中用于许可的费用不得超过此金额。”3. 操作规则这些规定了智能体应如何操作,包括工具使用、输出格式或特定程序。工具使用:“在尝试任何外部网页搜索之前,必须使用 InternalKnowledgeBaseSearchTool。”或“不得使用 DeprecatedAnalysisTool。”输出格式:“最终计划必须以JSON对象形式呈现,包含以下键:project_name、phases、timeline、resource_allocation。”步骤流程:“在敲定计划之前,要求:核实所有供应商的可用性。”提示片段示例: “操作限制:本计划中生成的所有Python代码*必须*遵循PEP 8风格指南,并且每个函数都必须包含文档字符串。”4. 安全和道德界限对于处理敏感信息或做出有影响决策的智能体,提示中必须包含安全和道德准则。数据处理:“生成的摘要中不得包含任何个人身份信息 (PII)。”语气和内容:“智能体提议的沟通计划必须保持专业和中立的语气。避免生成猜测性或未经证实的主张。”禁止行为:“在任何情况下,智能体都不应尝试直接修改系统配置文件。”提示片段示例: “安全限制:智能体*不得*建议任何涉及规避安全协议或在指定安全通道外共享机密数据的行为。”在提示中表达偏好当在定义的限制条件内存在多个有效选项时,偏好会引导智能体选择更理想的解决方案。它们增加了定性指导。1. 建议性语言使用比限制条件更温和的语言。像 PREFER(倾向于)、IDEALLY(理想情况下)、SHOULD AIM TO(应致力于)、CONSIDER(考虑)或 IF POSSIBLE(如果可能)等词表示一种偏好。示例:User: 规划一次团建活动。 Constraints: 1. 必须在工作日举行。 2. 每人预算不得超过50美元。 Preferences: 1. 天气允许的情况下,倾向于户外活动。 2. 理想情况下,地点应可通过公共交通到达。 3. 考虑促进协作而非竞争的活动。2. 优先级提示当偏好可能冲突或资源有限时,帮助智能体进行权衡。示例: “在选择技术时,倾向于开源解决方案而非专有解决方案,除非专有工具在此特定任务中提供显著的性能优势(至少快2倍的处理速度)。” “如果生成多份文章摘要,请优先考虑高管摘要的简洁性和清晰度。”3. 风格和格式要求这些指导智能体输出的定性方面,与严格的格式限制不同。示例: “对于报告的引言部分,倾向于采用吸引读者的叙述风格。对于技术规范,更正式和条目化的列表是理想的。” “虽然需要一份详细计划,但应致力于以非技术利益相关者能轻松理解主要目标和时间线的方式呈现摘要。”提示结构以求清晰您构建提示的方式可以很大程度上影响智能体理解和遵守限制和偏好的能力。专属章节:对于具有许多限制或偏好的复杂任务,在提示中使用 ## 限制条件、## 偏好 或 ## 参与规则 等独立章节可以提高人类和大型语言模型的易读性。编号或项目列表:这些使单个限制和偏好易于解析和引用。整合到任务描述中:有时,将限制或偏好直接融入任务描述中会感觉更自然。例如,“生成一个至少16个字符长并包含特殊符号的安全密码”将任务与限制相结合。呈现顺序:通常,将硬性限制在提示的相关部分尽早说明是一个好的做法。这有助于智能体从一开始就有效地修剪其搜索空间。明确性和无歧义性:避免模糊语言。“让它快”是一个糟糕的偏好。“倾向于每个项目处理时间低于500毫秒的解决方案”要好得多。您越具体,误解的空间就越小。智能体如何运用限制和偏好当智能体处理包含限制和偏好的提示时,它会从几个方面影响其规划过程:缩小搜索范围:硬性限制充当过滤器,清除会违反这些规则的整个潜在计划分支。这使得规划过程更有效率。引导选择:偏好帮助智能体在所有满足硬性限制的多个有效计划之间进行选择。智能体会倾向于更符合所列偏好的选项。推理与确认:一些先进的智能体架构(如ReAct)可能会在其内部“思考”过程中明确地对限制进行推理。您还可以提示智能体列出它正在考虑的限制,或解释其计划如何满足特定限制,这对于调试和验证很有用。以下图表说明了限制和偏好如何逐步优化规划过程:digraph G { rankdir=TB; bgcolor="transparent"; node [shape=box, style="rounded,filled", fontname="sans-serif", margin="0.2,0.1"]; edge [fontname="sans-serif", color="#495057"]; Goal [label="智能体目标:\n规划项目", fillcolor="#a5d8ff", penwidth=1.5]; PlanSpace [label="初始可能方案\n(宽泛且未过滤)", shape=hexagon, fillcolor="#ffec99", peripheries=1]; FilteredSpace [label="可行方案\n(符合硬性限制)", shape=hexagon, fillcolor="#b2f2bb", peripheries=1]; FinalPlan [label="最优方案\n(反映偏好)", shape=ellipse, fillcolor="#96f2d7", penwidth=1.5, style="filled,dashed", peripheries=2]; ConstraintsNode [label="硬性限制:\n- 预算 < $1000\n- 截止日期:2周\n- 必须使用工具A", shape=note, fillcolor="#ffc9c9", width=2.5]; PreferencesNode [label="软性偏好:\n- 优先考虑简洁性\n- 倾向于Python脚本\n- 最小化外部调用", shape=note, fillcolor="#d0bfff", width=2.5]; Goal -> PlanSpace [label=" 生成 "]; PlanSpace -> FilteredSpace [label=" 过滤依据 "]; ConstraintsNode -> FilteredSpace [style=dotted, arrowhead=odot, dir=none, minlen=1, headport="w", tailport="e"]; FilteredSpace -> FinalPlan [label=" 优化依据 "]; PreferencesNode -> FinalPlan [style=dotted, arrowhead=odot, dir=none, minlen=1, headport="w", tailport="e"]; }此图表展示了智能体的目标如何引出一系列广泛的初始计划。硬性限制随后将这些计划过滤为一组可行计划。最后,软性偏好指导从可行集合中选择或优化出最优计划。示例:旅行规划智能体让我们为设计一个规划周末旅行的智能体来设计一个提示,其中结合了限制和偏好。目标:规划一次从旧金山出发的为期2天的周末旅行。提示:您是一名旅行规划智能体。您的任务是为一次从旧金山出发的为期2天的周末旅行制定详细行程。 ## 任务详情: 目的地:距离旧金山4小时车程内的城市或国家公园。 旅行日期:下周末(假设当前日期是2023年10月16日星期一;因此,旅行日期为2023年10月21日至22日)。 旅行人数:2名成人。 ## 硬性限制: 1. 旅行总预算(住宿、餐饮、活动、汽油/交通)不得超过400美元。 2. 住宿必须是私人房间(例如,酒店、爱彼迎私人房间)。不得是共享青年旅社宿舍。 3. 计划必须包含至少一次重要的徒步(至少2小时)。 4. 旅行方式必须是驾车(假设用户有自己的车)。 ## 偏好: 1. 倾向于以自然风光闻名的目的地,而非纯粹的城市体验。 2. 如果可能,包含参观当地农贸市场或独特的当地餐馆。 3. 致力于在计划活动和自由时间之间取得平衡。避免行程过于紧凑。 4. 如果可行,考虑选择有良好观星评价的目的地。 ## 输出格式: 提供每日行程细分,包括每项主要开支的预估费用,以及基于限制和偏好对目的地选择的简要理由。在此示例中,智能体有明确的边界(预算、住宿类型、驾驶距离、强制徒步)和指导性偏好(注重自然、本地体验、均衡日程、观星),以帮助它生成一个相关且理想的计划。处理复杂情况随着您构建更复杂的智能体工作流程,您会遇到涉及限制和偏好的更复杂情况:冲突的限制:如果用户提供的限制无法同时满足(例如,“预算必须低于50美元”和“住宿必须是五星级酒店”)怎么办?您的提示可能需要指导智能体如何处理此类冲突:“如果限制冲突且无法全部满足,请优先满足限制X而非限制Y。报告任何未解决的冲突。”“如果提供的限制导致计划不可行,请明确说明哪些限制冲突,并建议可能的放宽条件。”过度限制:过多或过于严格的限制可能导致智能体无法找到任何有效计划。这可能导致智能体失败或生成低质量、强制性的输出。这通常是一个迭代过程;如果智能体遇到困难,您可能需要放宽一些限制。您也可以提示智能体,让它指明在给定限制下计划是否不可行:“如果没有计划能够满足所有硬性限制,请解释原因并列出阻止计划的限制。”动态限制/偏好:在一些高级场景中,限制或偏好可能会根据新信息在智能体运行期间发生变化。这需要更复杂的状态管理和重新规划能力,这些将在后续关于迭代规划的章节中进一步讨论。掌握在提示中嵌入限制和偏好的技巧,是创建AI智能体的重要一环,这些智能体不仅会规划,而且能针对手头任务进行有效和恰当的规划。它将智能体从一个通用规划器转变为一个根据具体需求定制的解决问题者,符合特定的操作需求和期望的结果。请记住,提示工程通常是一个迭代过程;您可能需要根据智能体的表现和其生成计划的质量来调整您的限制和偏好设定。