尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从提示词工程到AI Agent:构建动态智能系统的核心概念与实践

从提示词工程到AI Agent:构建动态智能系统的核心概念与实践 最近在AI应用开发领域一个讨论越来越热当大家都在谈论AI Agent和工作流时我们还需要像以前那样精心雕琢提示词Prompt Engineering吗是不是“提示词工程已死”同时一个新词“循环工程”Loop Engineering也开始出现它和提示词工程到底是什么关系如果你也对这些概念感到困惑觉得它们既相互关联又界限模糊那么这篇文章就是为你准备的。本文将彻底厘清提示词工程Prompt Engineering、循环工程Loop Engineering、AI Agent和工作流Workflow之间的核心关系与底层逻辑。无论你是刚入门AI应用开发的开发者还是正在寻找项目自动化方案的工程师都能通过本文构建一个清晰的技术认知框架并理解如何在实际项目中组合运用这些技术。1. 核心概念拆解从静态指令到动态系统在深入讨论关系之前我们必须先明确每个概念的本质、解决的问题以及其演进过程。1.1 提示词工程与大模型对话的“编程语言”提示词工程简而言之就是通过精心设计的文本指令Prompt来引导大型语言模型LLM生成符合预期的输出。它解决的是“如何让AI听懂并执行一次性的、明确的复杂任务”。本质一种针对非确定性模型LLM的“编程”或“配置”方法。你不是在编写确定性的代码逻辑而是在设计一个能激发模型特定能力的输入环境。核心目标在单次交互中获得高质量、可靠、符合格式要求的输出。关键技术包括但不限于角色设定你是一名资深Java架构师...任务分解请按以下步骤分析1. ... 2. ...思维链CoT让我们一步步思考...少样本学习Few-Shot提供输入输出示例。输出格式化请以JSON格式输出包含name和age字段。局限性提示词工程本质上是“静态”和“一次性”的。它擅长处理定义清晰的独立任务但难以处理需要状态维持、多轮决策、环境交互或长期运行的复杂过程。当任务失败或需要调整时往往需要人工重新生成提示词并再次执行。示例一个经典的提示词工程应用# 这是一个使用 OpenAI API 的简单提示词工程示例 import openai client openai.OpenAI(api_keyyour-api-key) prompt 你是一位专业的文本总结助手。 请严格按照以下要求处理用户输入 1. 提取核心事实。 2. 将语言风格改为正式书面语。 3. 将总结控制在100字以内。 用户输入 {user_input} user_input 昨天那个会开得又长又没重点老板讲了半天市场趋势但没给具体行动方案。小李提了个线上营销的想法好像有点意思。 response client.chat.completions.create( modelgpt-4, messages[ {role: system, content: prompt}, {role: user, content: user_input} ] ) print(response.choices[0].message.content)这个提示词设定了角色、规则和格式引导模型完成一次性的总结任务。这就是典型的提示词工程。1.2 循环工程构建可自我演进的任务执行循环循环工程是一个更宏观、更系统的概念。它指的是设计并实现一个能够自动运行、包含反馈循环、并能根据执行结果进行自我调整的AI系统流程。本质构建一个动态的、闭环的控制系统。这个系统内部可以包含一个或多个LLM调用即提示词工程但其核心在于“循环”逻辑本身。核心目标让AI系统能够自主处理需要多步骤、有条件判断、迭代优化或长期监控的复杂任务减少人工干预。关键组件状态管理系统需要记住之前发生了什么如对话历史、任务执行结果。决策逻辑根据当前状态和预定规则决定下一步做什么调用哪个工具/提示词或是否结束。工具调用系统不仅能生成文本还能执行动作如调用API、查询数据库、运行代码。反馈与评估对执行结果进行评估通过LLM自评或规则判断并根据评估结果决定是继续、重试还是转向。与提示词工程的关系提示词工程是循环工程内部的“原子操作”之一。在一个循环中每一步调用LLM都需要一个设计良好的提示词可能动态生成但循环工程负责将这些“原子操作”串联、编排并管理整个流程的生命周期。示例一个简单的“写作-评审-修订”循环逻辑# 伪代码展示循环工程的思想 def writing_loop(topic, max_iterations3): draft generate_first_draft(topic) # 步骤1调用LLM生成初稿使用提示词A for i in range(max_iterations): critique review_draft(draft) # 步骤2调用LLM评审初稿使用提示词B if critique.satisfactory: return draft # 如果满意循环结束 # 步骤3根据评审意见修订 revision_instructions f根据以下评审意见修改文章{critique.feedback} draft revise_draft(draft, revision_instructions) # 调用LLM修订使用提示词C return draft # 达到最大迭代次数后返回这个循环包含了生成、评审、修订等多个步骤每个步骤都可能涉及复杂的提示词但循环的逻辑迭代、条件判断是更高层次的设计。1.3 AI Agent具备自主性的循环工程实体AI Agent智能体是循环工程思想的具体实现和承载形式。一个AI Agent通常被定义为一个能够感知环境、进行决策并执行动作以实现目标的软件实体。本质一个封装了规划Planning、记忆Memory、工具使用Tool Use等能力的自治系统。它本身就是一套运行起来的循环工程。核心能力规划将复杂目标分解为可执行的子任务序列这本身就是一种高级循环逻辑。记忆短期记忆上下文窗口、长期记忆向量数据库等用于维持状态。工具使用调用外部API、执行代码、操作软件从而影响外部环境。与循环工程的关系AI Agent是循环工程的实例化。当我们说“构建一个AI Agent”时我们就是在实现一个特定的、具有某种自主性的循环工程系统。例如一个“数据分析Agent”可能包含“理解问题 - 查询SQL - 分析结果 - 生成报告 - 如不完整则进一步查询”的循环。1.4 工作流可视化的、结构化的循环工程蓝图工作流是对循环工程过程的可视化或声明式描述。它使用节点代表步骤或工具和边代表执行顺序或数据流来图形化地定义一个复杂的自动化流程。本质一种降低循环工程构建复杂度的编排Orchestration工具和设计范式。常见平台Dify、Coze扣子、n8n、Camunda、Flowable、ComfyUI针对AI绘画等。核心价值可视化让复杂的逻辑关系一目了然降低了理解和沟通成本。可复用构建好的工作流可以保存为模板被多次使用或分享。易调试可以清晰地看到数据在每个节点的流转状态便于定位问题。集成化通常提供丰富的预制节点LLM调用、条件判断、API请求、数据操作等方便快速组装。与循环工程和Agent的关系工作流是实现循环工程和构建AI Agent的一种高效方式。在Dify或Coze中你通过拖拽节点搭建起来的一个包含判断、循环、LLM调用的流程图就是一个AI Agent或一个自动化流程的“源代码”。它最终会被引擎解释和执行。2. 关系总览金字塔模型我们可以用一个金字塔模型来理解这四个概念的关系AI Agent (自治实体) | | 实例化与承载 | [循环工程] (动态系统设计) / \ / \ / \ / \ / \ / \ [工作流] (可视化蓝图) [提示词工程] (原子指令) (实现方式之一) (核心组件之一)底层是提示词工程它是基石是与LLM交互的基本单元。无论是简单的脚本还是复杂的Agent都离不开有效的提示词。中层是循环工程它是一种设计思想和架构模式定义了如何将多个步骤包括提示词调用组织成一个动态、智能的闭环系统。实现层是工作流它是将循环工程设计落地的流行工具和表现形式尤其适合复杂逻辑的可视化编排。顶层是AI Agent它是最终呈现给用户的、具备一定自主性的应用形态其内部运行机制就是由循环工程设计的可能通过工作流工具构建而成。结论“提示词工程已死”是个伪命题。它没有死而是进化并融入了更大的技术栈。它从舞台中央的“主角”变成了构建更强大AI系统Agent/工作流的“核心零部件”。未来的趋势不是抛弃提示词工程而是将其模块化、标准化并嵌入到更高阶的循环工程框架中。3. 环境准备与核心工具要实践从提示词到Agent的构建需要选择合适的工具链。以下是一个基于Python的通用环境准备方案适用于大多数自主开发场景。3.1 基础开发环境操作系统Windows 10/11, macOS, 或 Linux (Ubuntu 20.04 推荐)Python版本 3.9 或 3.10许多AI库对3.11的兼容性仍在完善中包管理工具pip(建议使用虚拟环境venv或conda)代码编辑器/IDEVS Code (推荐拥有丰富的AI和Python插件) 或 PyCharm3.2 核心Python库安装创建一个新的虚拟环境并安装基础库# 创建并激活虚拟环境 (以 venv 为例) python -m venv ai-agent-env source ai-agent-env/bin/activate # Linux/macOS # ai-agent-env\Scripts\activate # Windows # 升级pip pip install --upgrade pip # 安装核心库 # 1. OpenAI SDK (或其他LLM供应商SDK如 anthropic, groq) pip install openai # 2. LangChain: 当前构建AI应用最流行的框架之一提供了Agent、链、工具等高级抽象 pip install langchain langchain-community langchain-openai # 3. 可选但强烈推荐LangGraph LangChain官方用于构建有状态、多Actor工作流的库 pip install langgraph # 4. 向量数据库客户端 (用于实现记忆功能)以Chroma为例 pip install chromadb # 5. 环境变量管理 pip install python-dotenv3.3 获取API密钥你需要一个LLM服务的API密钥。以OpenAI为例访问 OpenAI Platform 并注册登录。点击“API Keys”然后“Create new secret key”。妥善保存该密钥。在项目根目录创建.env文件来管理密钥# .env 文件 OPENAI_API_KEYsk-your-actual-api-key-here在代码中通过python-dotenv加载from dotenv import load_dotenv import os load_dotenv() openai_api_key os.getenv(OPENAI_API_KEY)4. 实战演进从提示词到智能Agent我们将通过一个具体的例子——“市场调研报告生成器”来演示如何从一个简单的提示词脚本演进为一个具备规划、执行、工具调用能力的AI Agent。4.1 阶段一基础提示词工程静态脚本任务根据一个公司名称生成一段简单的市场描述。# stage1_prompt_engineering.py import openai from dotenv import load_dotenv import os load_dotenv() client openai.OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def generate_market_description(company_name): prompt f 你是一位市场分析师。请为 {company_name} 公司生成一段简短的市场描述包含 1. 可能所属的主要行业。 2. 该行业的当前趋势1-2点。 3. 一句针对该公司的机会展望。 描述请控制在200字以内语言专业、简洁。 response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: prompt}], temperature0.7, ) return response.choices[0].message.content if __name__ __main__: company 蔚来汽车 description generate_market_description(company) print(f公司{company}\n) print(f市场描述\n{description})输出示例公司蔚来汽车 市场描述 蔚来汽车主要属于新能源汽车制造行业。当前该行业正呈现电动化与智能化深度融合的趋势同时电池技术的持续进步和充电基础设施的快速扩张为市场增长提供了强劲动力。对于蔚来而言凭借其用户社区运营和换电模式的优势有望在高端智能电动车细分市场中进一步巩固品牌地位并探索车电分离等创新商业模式带来的增长机会。分析这是一个典型的、一次性的提示词工程应用。它完成了任务但信息基于LLM的内部知识可能不够实时和准确。4.2 阶段二引入循环工程思想多步骤带验证任务生成报告后自动检查其是否包含关键要素如“竞争格局”如果没有则补充。# stage2_loop_engineering.py import openai from dotenv import load_dotenv import os load_dotenv() client openai.OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def generate_report(company_name): 生成初步报告 prompt f为{company_name}撰写一份简要的市场分析报告涵盖行业、趋势和机会。 response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: prompt}], ) return response.choices[0].message.content def check_report(report, required_elements[竞争格局, 风险挑战]): 检查报告是否包含必要元素 check_prompt f 请检查以下市场分析报告是否明确提到了以下要素{, .join(required_elements)}。 报告内容 {report} 请只回答“是”或“否”。如果缺少任何一项就回答“否”。 response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: check_prompt}], temperature0, ) return response.choices[0].message.content.strip().lower() 是 def supplement_report(report, missing_element): 补充缺失的元素 supplement_prompt f 以下是一份市场分析报告但它缺少关于“{missing_element}”的分析。 请你在报告末尾补充一段关于“{missing_element}”的内容使其与报告整体风格一致。 原报告 {report} response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: supplement_prompt}], ) return report \n\n## 补充内容\n response.choices[0].message.content def main_loop(company_name): print(f开始为 {company_name} 生成市场分析报告...) # 步骤1生成初稿 report generate_report(company_name) print(初稿生成完毕。) # 步骤2定义需要检查的关键要素 required [竞争格局, 风险挑战] # 步骤3循环检查与补充 for element in required: if not check_report(report, [element]): print(f报告缺少 {element}正在补充...) report supplement_report(report, element) print(f{element} 已补充。) else: print(f报告已包含 {element}。) # 步骤4输出最终报告 print(\n 最终报告 \n) print(report) return report if __name__ __main__: main_loop(小米集团)分析这里我们实现了一个简单的循环生成 - 检查 - 补充。程序能够根据预定义的规则检查关键要素自动决定是否需要执行额外的步骤补充内容。这已经具备了循环工程的雏形状态报告内容、决策检查函数、行动补充函数。4.3 阶段三构建AI Agent使用LangChain框架任务创建一个能自动进行网络搜索、信息整合并生成结构化报告的Agent。# stage3_ai_agent.py from langchain.agents import AgentExecutor, create_react_agent from langchain.tools import Tool from langchain_community.utilities import SerpAPIWrapper # 需要注册SerpAPI from langchain_openai import ChatOpenAI from langchain import hub # 用于拉取预设的提示词 from dotenv import load_dotenv import os load_dotenv() # 1. 定义工具 - Agent的“手和脚” def calculate_length(text: str) - str: 计算文本长度。这是一个自定义工具示例。 return f文本的长度是 {len(text)} 个字符。 # 设置搜索工具 (需要SERPAPI_KEY) search SerpAPIWrapper(serpapi_api_keyos.getenv(SERPAPI_KEY)) tools [ Tool( nameSearch, funcsearch.run, description当你需要回答关于当前事件或获取最新市场信息时非常有用。输入应该是一个搜索查询。 ), Tool( nameTextLength, funccalculate_length, description用于计算一段文本的长度。输入应该是一段文本。 ), ] # 2. 初始化LLM llm ChatOpenAI(modelgpt-3.5-turbo, temperature0, openai_api_keyos.getenv(OPENAI_API_KEY)) # 3. 拉取一个强大的、支持工具调用的提示词模板 # ReAct: Reasoning Acting 是Agent的经典范式 prompt hub.pull(hwchase17/react) # 4. 创建Agent agent create_react_agent(llm, tools, prompt) # 5. 创建执行器 agent_executor AgentExecutor(agentagent, toolstools, verboseTrue, handle_parsing_errorsTrue) # 6. 运行Agent if __name__ __main__: query 特斯拉汽车2024年第一季度在中国的市场份额是多少主要竞争对手有哪些请总结并告诉我最终答案的长度。 print(f问题{query}\n) result agent_executor.invoke({input: query}) print(f\n最终答案{result[output]})运行此脚本前需要安装langchain-community并设置SERPAPI_KEY环境变量。输出示例简化verbose模式会显示Agent的思考过程 Entering new AgentExecutor chain... 我需要找到特斯拉2024年Q1在中国市场份额的数据并识别其主要竞争对手。我应该先搜索最新信息。 Action: Search Action Input: 特斯拉 2024年 第一季度 中国 市场份额 Observation: [搜索结果根据乘联会数据特斯拉中国2024年1-3月零售销量约为13.2万辆市场份额约占中国新能源汽车市场的11%...] Thought: 我得到了市场份额数据。现在需要找出主要竞争对手。 Action: Search Action Input: 中国 新能源汽车市场 主要竞争对手 2024 Observation: [搜索结果比亚迪、蔚来、理想、小鹏、华为问界等是特斯拉在中国的主要竞争对手...] Thought: 我已经获得了所需信息。现在需要总结并计算答案长度。 Action: TextLength Action Input: 根据乘联会数据特斯拉中国2024年第一季度零售销量约13.2万辆约占中国新能源汽车市场11%的份额。其主要竞争对手包括比亚迪、蔚来、理想、小鹏、华为问界等品牌。 Observation: 文本的长度是 89 个字符。 Thought: 我现在可以给出最终答案了。 Final Answer: 根据公开数据特斯拉汽车2024年第一季度在中国新能源汽车市场的份额约为11%。其主要竞争对手包括比亚迪、蔚来、理想、小鹏、华为问界等品牌。以上总结文本长度为89个字符。 Finished chain. 最终答案根据公开数据...分析这就是一个功能完整的AI Agent。它展示了规划自主决定先搜索市场份额再搜索竞争对手。工具使用调用了Search和TextLength两个工具。记忆在思考Thought中保留了上一步的结果以指导下一步行动。循环其内部的“思考-行动-观察”循环ReAct模式是循环工程的完美体现。提示词工程在这里体现为从LangChain Hub拉取的react提示词模板它指导了Agent的思考格式。4.4 阶段四使用工作流引擎LangGraph编排复杂Agent任务构建一个多角色协作的Agent系统包含“研究员”、“分析师”和“编辑”共同完成一份高质量报告。# stage4_workflow_langgraph.py from typing import Annotated import operator from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage from langgraph.graph import StateGraph, END from langgraph.graph.message import add_messages from dotenv import load_dotenv import os load_dotenv() # 1. 定义状态结构 class ReportState(TypedDict): 工作流的状态在所有节点间共享 messages: Annotated[list, add_messages] # 对话历史 draft: str # 报告草稿 research_notes: str # 研究笔记 final_report: str # 最终报告 # 2. 初始化LLM llm ChatOpenAI(modelgpt-4, temperature0.7, openai_api_keyos.getenv(OPENAI_API_KEY)) # 3. 定义各个“节点”即工作流中的步骤 def research_node(state: ReportState): 研究员节点负责收集信息 query state[messages][-1].content if state[messages] else 请研究人工智能在医疗诊断领域的最新进展。 research_prompt f你是一位行业研究员。请针对以下主题整理关键事实、数据和趋势形成研究笔记。主题{query} research_result llm.invoke([HumanMessage(contentresearch_prompt)]) new_state { research_notes: research_result.content, messages: state[messages] [HumanMessage(contentf研究笔记已生成{research_result.content[:100]}...)] } return new_state def analysis_node(state: ReportState): 分析师节点基于研究笔记撰写分析草稿 notes state.get(research_notes, ) analysis_prompt f你是一位资深市场分析师。请根据以下研究笔记撰写一份详细的市场分析报告草稿要求结构清晰、有洞察力。\n\n研究笔记{notes} analysis_result llm.invoke([HumanMessage(contentanalysis_prompt)]) new_state { draft: analysis_result.content, messages: state[messages] [HumanMessage(contentf分析草稿已完成。)] } return new_state def review_node(state: ReportState): 编辑节点评审草稿并提出修改意见 draft state.get(draft, ) review_prompt f你是一位严格的编辑。请评审以下报告草稿指出其在逻辑、数据、语言表达上的问题并提出具体的修改建议。\n\n报告草稿{draft} review_result llm.invoke([HumanMessage(contentreview_prompt)]) # 简单判断如果评审意见中包含“重大”或“主要”问题则返回“revise”否则返回“finalize” if any(word in review_result.content for word in [重大, 主要, 严重, 需重写]): decision revise else: decision finalize new_state { messages: state[messages] [HumanMessage(contentf编辑评审完成。决定{decision}。意见{review_result.content[:150]}...)] } return new_state, decision # 返回状态和下一个节点的路由决策 def revise_node(state: ReportState): 修订节点根据编辑意见修改草稿 draft state.get(draft, ) # 从消息历史中提取最近的编辑意见这里简化处理 last_msg state[messages][-1].content revise_prompt f你是一位作者。请根据编辑的以下意见修改你的报告草稿。\n编辑意见{last_msg}\n\n原草稿{draft} revise_result llm.invoke([HumanMessage(contentrevise_prompt)]) new_state { draft: revise_result.content, messages: state[messages] [HumanMessage(content报告已根据意见修订。)] } return new_state def finalize_node(state: ReportState): 定稿节点生成最终报告 draft state.get(draft, ) finalize_prompt f请将以下报告草稿润色为可供发布的最终版本确保语言精炼、专业。\n\n草稿{draft} final_result llm.invoke([HumanMessage(contentfinalize_prompt)]) new_state { final_report: final_result.content, messages: state[messages] [HumanMessage(content报告已最终定稿。)] } return new_state # 4. 构建工作流图 workflow StateGraph(ReportState) # 添加节点 workflow.add_node(researcher, research_node) workflow.add_node(analyst, analysis_node) workflow.add_node(editor, review_node) # 这个节点会返回路由决策 workflow.add_node(reviser, revise_node) workflow.add_node(finalizer, finalize_node) # 设置边执行顺序 workflow.set_entry_point(researcher) workflow.add_edge(researcher, analyst) workflow.add_edge(analyst, editor) # 根据editor节点的决定路由到不同节点 workflow.add_conditional_edges( editor, # 路由函数根据review_node返回的decision字符串决定下一步 lambda x: x[decision], { revise: reviser, finalize: finalizer } ) workflow.add_edge(reviser, editor) # 修订后返回编辑重新评审 workflow.add_edge(finalizer, END) # 5. 编译工作流 app workflow.compile() # 6. 运行工作流 if __name__ __main__: initial_state { messages: [HumanMessage(content请生成一份关于‘AI在医疗诊断中的应用’的市场分析报告。)], draft: , research_notes: , final_report: } print(开始执行多角色报告生成工作流...) final_state app.invoke(initial_state) print(\n 工作流执行完成 ) print(f最终报告长度{len(final_state[final_report])} 字符) print(f最终报告预览\n{final_state[final_report][:500]}...)分析这个例子使用了LangGraph来构建一个有状态、多节点、带条件分支的工作流。它清晰地定义了节点研究员、分析师、编辑、修订者、定稿者每个都是一个独立的函数可以是简单的LLM调用也可以是复杂的子Agent。状态ReportState字典在所有节点间共享和传递。边定义了节点的执行顺序。条件路由编辑节点可以决定报告是进入修订循环还是直接定稿。这就是一个用代码定义的、复杂的工作流。它可视化地展现了“循环工程”的完整逻辑一个包含可能循环修订的、动态的、多步骤的自动化流程。Dify、Coze等可视化工具底层实现的正是类似这样的逻辑。5. 常见问题与排查思路在构建AI Agent和工作流时你会遇到一些典型问题。问题现象常见原因解决思路Agent陷入循环不停调用同一个工具。1. 提示词未明确停止条件。2. 工具返回的结果无法满足Agent的决策需求。3. 最大迭代次数设置过高或未设置。1. 在系统提示词中强调“在获得足够信息后必须给出最终答案”。2. 优化工具的描述description使其更精准。3. 在AgentExecutor中设置max_iterations参数如max_iterations10。工具调用失败如API错误。1. API密钥无效或过期。2. 网络问题。3. 工具函数本身有Bug如参数错误。1. 检查环境变量和密钥配置。2. 添加网络异常处理和重试机制。3. 单独测试工具函数确保其能独立运行。LLM不按预期格式输出导致解析失败。1. 提示词中对输出格式的约束不够强。2. Temperature参数过高导致输出随机性大。1. 使用更严格的格式指令如“请以JSON格式输出键为answer”或使用LangChain的OutputParser。2. 对于需要稳定解析的场景将temperature设为0或接近0。工作流状态混乱数据传递错误。1. 状态结构设计不合理节点间读写冲突。2. 节点函数没有正确返回更新后的状态。1. 清晰定义状态类型如使用TypedDict明确每个节点读写哪些字段。2. 在LangGraph中确保节点函数返回的字典包含了所有需要更新的状态字段。多Agent协作效率低下成本高。1. 每个步骤都调用LLM导致token消耗大。2. Agent之间的任务划分不清晰重复工作。1. 考虑将一些简单逻辑用确定性代码实现而非全部交给LLM。2. 优化工作流设计避免不必要的循环和回溯。使用缓存如LLMCache存储重复查询的结果。6. 最佳实践与工程建议将AI Agent和工作流应用到生产环境需要遵循软件工程的最佳实践。提示词模块化与版本管理不要将长提示词硬编码在代码中。将其存储在外部文件如JSON、YAML或专门的提示词管理平台中。为提示词添加版本号便于追踪变更和A/B测试效果。将通用的角色设定、格式要求抽离为可复用的“提示词片段”。Agent与工作流的设计原则单一职责每个Agent或工作流节点应只做好一件事。一个负责搜索一个负责分析一个负责格式化。容错与降级工作流中关键节点要有超时、重试和降级策略。例如搜索失败时可以转而使用LLM的内部知识生成一个备注了“信息可能过时”的回答。可观测性记录Agent的完整思考过程Thought、工具调用记录和结果。这对于调试和优化至关重要。LangChain的verboseTrue和LangGraph的检查点功能是很好的起点。成本与性能优化选择性使用大模型对于创意生成、复杂推理使用GPT-4等强大模型对于简单的文本提取、格式化使用GPT-3.5-turbo或更小、更快的模型。缓存对频繁且结果不变的查询如“什么是机器学习”进行缓存避免重复调用LLM产生费用。流式输出对于需要长时间运行的工作流考虑支持流式输出中间结果提升用户体验。安全与合规输入输出过滤对用户输入和Agent输出进行必要的审查和过滤防止注入攻击或生成不当内容。权限控制工作流中调用外部工具如数据库、内部API时必须遵循最小权限原则。数据隐私明确哪些数据会发送给外部LLM API避免传输敏感个人信息。考虑使用本地化模型或进行数据脱敏。测试与评估单元测试为每个工具函数、节点函数编写单元测试。集成测试模拟完整的工作流执行验证端到端的功能。评估体系建立一套评估标准准确性、相关性、流畅度、成本来量化Agent的表现并持续迭代优化。从精心设计一个提示词开始到构建一个能自主完成复杂任务的AI Agent或工作流是一个能力不断抽象和封装的过程。提示词工程是基础技能循环工程是核心设计思想AI Agent是目标形态而工作流则是高效的实现路径。掌握这一整套技术栈你将能真正开发出解决实际业务问题的、智能的、自动化的AI应用。
返回列表