游戏开发与网站开发就业情况wordpress 爬虫插件
游戏开发与网站开发就业情况,wordpress 爬虫插件,网上做名片的网站,广州和信建设公司网站本文系统介绍AI Agent的9种设计模式#xff0c;从基础的Few-Shot模式到复杂的Self-Discover模式#xff0c;详细解析了每种模式的工作原理、代码实现和适用场景。通过思考-行动-观察循环、并行执行、自我优化等机制#xff0c;让大模型更智能高效地执行任务。文章最后针对不…本文系统介绍AI Agent的9种设计模式从基础的Few-Shot模式到复杂的Self-Discover模式详细解析了每种模式的工作原理、代码实现和适用场景。通过思考-行动-观察循环、并行执行、自我优化等机制让大模型更智能高效地执行任务。文章最后针对不同任务特点提供模式选择建议帮助开发者根据实际需求灵活应用提升AI系统性能。AI Agent 9种设计模式随着大语言模型的快速发展如何让AI更好地理解和执行复杂任务成为了开发者们关注的焦点。Agent设计模式应运而生它们就像是给大模型装上大脑让AI能够像人类一样思考、规划和执行任务。今天我们就来深入探讨9种主流的Agent设计模式看看它们是如何让大模型变得更智能、更高效的。一、Few-Shot模式让AI学会举一反三Few-Shot模式是最基础也是最常用的Agent范式之一。它的核心思想是通过提供少量示例让大模型学会如何完成任务。核心组成Few-Shot模式包含三个关键部分角色描述明确告诉大模型需要扮演什么角色具备哪些能力指令任务描述清晰说明需要完成的任务可以是一句话也可以是多步骤引导样例提供完整的任务-解决方案示例或者输入输出的格式规范实际应用在B端开发场景中Few-Shot模式使用频率最高。比如你可以让大模型扮演网络安全专家分析Java漏洞调用堆栈找出用户业务代码所在的类。通过提供格式示例和堆栈日志大模型就能按照你期望的格式输出结果。这种模式的最大优势是工程师可以通过大模型的指令遵循能力将原本需要复杂规则定义和处理的环节都交给大模型来处理大大提升了工作效率。代码示例以下是一个Few-Shot模式的提示词示例# 定义提示词模板prompt 你是一个网络安全专家我这里一份RASP上报的Java漏洞调用堆栈请帮我找出用户业务代码所在的类。请按照下面的格式输出[ {{ javaFile: LinkedHashSet.java, method: LinkedHashSetE(HashSetE).readObject(ObjectInputStream), codeline: 40 }}, {{ javaFile: AnnotationInvocationHandler.java, method: AnnotationInvocationHandler.invoke(Object, Method, Object[]), codeline: 133 }}]堆栈日志如下{stack_trace}# 使用示例stack_trace Runtime.exec(String) line: 345EvilCodes.init() line: 17NativeConstructorAccessorImpl.newInstance0(Constructor, Object[])...response llm.generate(prompt.format(stack_tracestack_trace))通过提供格式示例大模型就能按照期望的JSON格式输出结果大大简化了后续的数据处理工作。二、ReAct模式思考-行动-观察的循环ReAct模式将推理Reasoning和行动Acting结合起来形成了一个思考-行动-观察的循环过程。工作原理ReAct针对给出的问题先进行思考Thought再根据思考的结果行动Act然后观察行动的结果Observation。如果不满足要求再进行思考、行动直至得到满意的结果为止。三个核心概念Thought思考由LLM生成是LLM产生行为的依据。可以根据LLM的思考来衡量他要采取的行为是否合理。这就像人类在做决策前的思考过程让AI的决策变得更有可解释性和可信度。Act行动LLM判断本次需要执行的具体行为。一般由两部分组成行为和对象用编程的说法就是API名称和对应的入参。LLM可以根据Thought的判断选择需要使用的API并生成需要填入API的参数。Obs观察LLM框架对于外界输入的获取。就像LLM的五官将外界的反馈信息同步给LLM模型协助LLM模型进一步做分析或者决策。执行流程一个完整的ReAct行为包含以下流程输入目标任务的起点可以是用户的手动输入也可以是系统故障报警等触发器循环执行LLM模型开始分析问题需要的步骤Thought按步骤执行Act根据观察到的信息Obs循环执行这个过程直到判断任务目标达成完成任务最终执行成功返回最终结果代码示例以下是一个简化的ReAct模式实现示例classReActAgent:def__init__(self, llm, tools):self.llm llmself.tools tools # 工具字典如 {search: search_tool, calculator: calc_tool}defrun(self, question, max_iterations5): context f问题: {question}\nfor i inrange(max_iterations):# Thought: 生成思考过程 thought_prompt f{context}\n思考: thought self.llm.generate(thought_prompt) context f\n思考: {thought}# Act: 决定要执行的动作 act_prompt f{context}\n行动: action self.llm.generate(act_prompt) context f\n行动: {action}# 解析动作并执行 tool_name, tool_input self._parse_action(action)if tool_name 完成:returnself._extract_answer(context)# Observation: 执行工具并观察结果if tool_name inself.tools: observation self.tools[tool_name](tool_input) context f\n观察: {observation}else: context f\n观察: 工具 {tool_name} 不存在return达到最大迭代次数未能完成任务def_parse_action(self, action):# 解析动作字符串提取工具名和输入# 例如: 搜索[Python教程] - (搜索, Python教程)if完成in action:return完成, None# 简化的解析逻辑return搜索, action.strip()def_extract_answer(self, context):# 从上下文中提取最终答案returnself.llm.generate(f{context}\n最终答案:)这个示例展示了ReAct模式的核心循环思考-行动-观察直到任务完成。三、Plan and Solve模式先规划再执行Plan and Solve模式解决了多步推理的步骤缺失问题。它的核心思想是先设计计划将整个任务划分为多个更小的子任务然后根据计划执行子任务。适用场景如果说ReAct更适合完成厨房拿酱油这样的简单任务那么Plan Solve更适合完成西红柿炒鸡蛋这样的复杂任务。你需要计划并且过程中计划可能会变化比如你打开冰箱发现没有西红柿时你将购买西红柿作为新的步骤加入计划。核心组件规则器Planner负责让LLM生成一个多步计划来完成一个大任务。代码中有Planner和ReplannerPlanner负责第一次生成计划Replanner是指在完成单个任务后根据目前任务的完成情况进行重新规划。执行器Executor接受用户查询和规划中的步骤并调用一个或多个工具来完成该任务。提示词示例Plan and Solve模式通常需要调用两次LLM• 第一次生成推理过程通过提示词如Let’s think step by step模型会生成解决问题的推理过程• 第二次提取最终答案使用生成的推理过程和原始问题模型再次被调用以提取或生成最终的答案代码示例以下是一个Plan and Solve模式的实现示例classPlanAndSolveAgent:def__init__(self, llm):self.llm llmdefsolve(self, problem):# 第一步生成计划 plan_prompt f让我们首先理解问题并制定解决问题的计划。然后让我们一步一步地执行解决问题的计划。问题: {problem}请先制定一个详细的计划 plan self.llm.generate(plan_prompt)# 第二步执行计划并生成推理过程 solve_prompt f问题: {problem}计划:{plan}现在让我们按照计划一步一步地解决问题 reasoning self.llm.generate(solve_prompt)# 第三步提取最终答案 answer_prompt f问题: {problem}推理过程:{reasoning}基于以上推理过程请给出最终答案 answer self.llm.generate(answer_prompt)return {plan: plan,reasoning: reasoning,answer: answer }# 使用示例agent PlanAndSolveAgent(llm)result agent.solve(如果一个数的3倍加上5等于20这个数是多少)print(f计划: {result[plan]})print(f推理: {result[reasoning]})print(f答案: {result[answer]})这种两阶段方法规划执行能够更好地处理复杂的多步骤问题。四、Reason without Observation模式推理与观察分离Reason without ObservationREWOO模式的核心思想是将推理Reasoning过程与外部观察Observation分离以此来提高模型的效率和性能。为什么需要REWOO在传统的LLM增强系统中如ReAct模式模型的推理过程是与外部工具的调用和观察结果紧密交织在一起的。这种模式虽然简单易用但往往会导致计算复杂性高因为需要多次调用语言模型LLM并重复执行操作这不仅增加了计算成本也增加了执行时间。三个核心组件Planner规划器接收用户输入的任务并将其分解为一系列的计划。每个计划都详细说明了需要使用哪些外部工具以及如何使用这些工具。负责生成一个相互依赖的链式计划定义每一步所依赖的上一步的输出。Worker执行器根据规划器提供的计划调用相应的外部工具来执行任务并获取必要的信息或证据。循环遍历每个任务并将任务输出分配给相应的变量。Solver合并器将所有计划的执行结果整合起来形成对原始任务的最终解决方案。优势这种模块化的设计显著减少了令牌消耗和执行时间因为它允许一次性生成完整的工具链而不是在每次迭代中都重复调用LLM。此外由于规划数据不依赖于工具的输出因此可以在不实际调用工具的情况下对模型进行微调进一步简化了微调过程。提示词模板示例REWOO模式的关键在于定义步骤间的依赖关系以下是一个提示词模板示例REWOO_PROMPT_TEMPLATE 对于以下任务制定可以逐步解决问题的计划。对于每个计划指示检索证据的具体工具和工具输入您可以存储将证据转换为变量以后的工具可以调用该变量。(Plan.#E1, Plan.#E2, Plan.#E3...)问题{question}计划示例问题科罗拉多造山带南东段延伸到的地区的海拔范围是多少计划搜索更多关于科罗拉多造山运动的信息。#E1维基百科[科罗拉多造山运动]计划找出科罗拉多造山运动东段延伸到的区域。#E2LLM[科罗拉多州东部延伸到的地区名称是什么?给定上下文:#E1]计划搜索有关该地区的更多信息。#E3维基百科[#E2]计划找出该区域的标高范围。#E4LLM[区域#E2的标高范围是多少?给定上下文:#E3]# 使用示例question 北京和上海哪个城市的人口更多prompt REWOO_PROMPT_TEMPLATE.format(questionquestion)plan llm.generate(prompt)# 解析计划并执行# Planner生成计划后Worker按顺序执行Solver合并结果这种设计允许一次性生成完整的工具调用链大大提高了执行效率。五、LLMCompiler模式并行执行提升效率LLMCompiler模式的核心思想是通过并行Function calling来提高效率。工作原理比如用户提问Scott Derrickson和Ed Wood是否是同一个国家的国民传统方式可能需要先搜索Scott Derrickson的国籍再搜索Ed Wood的国籍。而LLMCompiler可以让planner同时搜索两人的国籍最后合并结果即可。架构组成LLMCompiler由三个组件组成Planner规划器将原始问题分解为一个DAG有向无环图的任务列表Task Fetching Unit并行执行器根据任务的依赖调度任务并行执行Joiner合并器综合DAG执行结果反馈给用户如果没达预期可以重新规划任务这种设计大大提升了处理效率特别是在需要多个独立查询的场景下。代码示例以下是一个简化的LLMCompiler模式实现示例import asynciofrom typing importList, DictclassLLMCompilerAgent:def__init__(self, llm, tools):self.llm llmself.tools toolsasyncdefsolve(self, question):# 第一步Planner生成DAG任务列表 plan_prompt f问题: {question}请将这个问题分解为可以并行执行的任务并标识任务间的依赖关系。输出格式任务列表每个任务包含id、描述、依赖的任务id列表。示例任务1: 搜索Scott Derrickson的国籍依赖: []任务2: 搜索Ed Wood的国籍依赖: []任务3: 比较两个国籍是否相同依赖: [任务1, 任务2] plan self.llm.generate(plan_prompt) tasks self._parse_plan(plan)# 第二步并行执行独立任务 results {}while tasks:# 找出可以并行执行的任务无依赖或依赖已完成 ready_tasks [t for t in tasks ifall(dep in results for dep in t[dependencies])]# 并行执行这些任务if ready_tasks: task_results await asyncio.gather(*[self._execute_task(task) for task in ready_tasks ])for task, result inzip(ready_tasks, task_results): results[task[id]] result tasks.remove(task)else:break# 第三步Joiner合并结果 join_prompt f原始问题: {question}任务执行结果: {results}请综合所有结果给出最终答案 final_answer self.llm.generate(join_prompt)return final_answerdef_parse_plan(self, plan):# 解析计划提取任务列表# 这里简化处理实际需要更复杂的解析逻辑 tasks []# ... 解析逻辑return tasksasyncdef_execute_task(self, task):# 执行单个任务 tool_name self._identify_tool(task[description])if tool_name inself.tools:returnawaitself.tools[tool_name](task[description])returnNone# 使用示例asyncdefmain(): agent LLMCompilerAgent(llm, tools) answer await agent.solve(Scott Derrickson和Ed Wood是否是同一个国家的国民)print(answer)# asyncio.run(main())这种并行执行的设计能够显著提升处理多个独立查询的效率。六、Basic Reflection模式左右互搏的自我优化Basic Reflection可以类比于学生Generator写作业老师Reflector来批改建议学生根据批改建议来修改如此反复。核心原理Basic Reflection可以类比于左右互搏• 左手是Generator负责根据用户指令生成结果• 右手是Reflector来审查Generator的生成结果并给出建议在左右互搏的情况下Generator生成的结果越来越好Reflector的检查越来越严格输出的结果也越来越有效。执行流程Generator接收来自用户的输入输出initial responseReflector接收来自Generator的response根据开发者设置的要求给出Reflections即评语、特征、建议Generator再根据Reflector给出的反馈进行修改和优化输出下一轮response循环往复直到达到循环次数或满足要求代码示例以下是一个Basic Reflection模式的实现示例classBasicReflectionAgent:def__init__(self, llm, max_iterations3):self.llm llmself.max_iterations max_iterationsdefgenerate(self, user_input):# Generator生成初始响应 generator_prompt f用户输入: {user_input}\n\n请生成响应: response self.llm.generate(generator_prompt)for i inrange(self.max_iterations):# Reflector审查响应 reflector_prompt f用户输入: {user_input}当前响应: {response}请审查这个响应给出以下方面的反馈1. 准确性2. 完整性3. 清晰度4. 改进建议 reflection self.llm.generate(reflector_prompt)# Generator根据反馈改进响应 generator_prompt f用户输入: {user_input}之前的响应: {response}审查反馈: {reflection}请根据反馈改进你的响应: improved_response self.llm.generate(generator_prompt)# 如果响应没有显著改进可以提前结束if improved_response response:break response improved_responsereturn response# 使用示例agent BasicReflectionAgent(llm)result agent.generate(请解释什么是机器学习)print(result)这种左右互搏的方式能够不断优化输出质量直到达到满意的结果。七、Reflexion模式从失败中学习的反思机制Reflexion模式使用语言反馈信号来帮助agent从前失败的经验中学习。具体地Reflexion将传统梯度更新中的参数信号转变为添加在大模型上下文中的语言总结使得agent在下一个episode中能参考上次执行失败的失败经验从而提高agent的执行效果。四个核心组件Actor由LLM担任主要工作是基于当前环境生成下一步的动作Evaluator主要工作是衡量Actor生成结果的质量。就像强化学习中的Reward函数对Actor的执行结果进行打分Self-reflexion一般由LLM担任是Reflexion框架中最重要的部分。它能结合离散的reward信号如success/fail、trajectory轨迹也就是推理上下文等生成具体且详细语言反馈信号这种反馈信号会储存在Memory中启发下一次实验的Actor执行动作Memory分为短期记忆short-term和长期记忆long-term。在一次实验中的上下文称为短期记忆多次试验中Self-reflexion的结果称为长期记忆与Basic Reflection的区别Reflexion会把之前的生成-tool调用结果-评价的所有过程数据当做下次生成的prompt可以通过外部工具查询数据来作为评价修正的依据Reflexion在决策、推理和代码生成任务上均取得了不错的效果特别是在代码生成任务上成为了最新的SOTA。代码示例以下是一个简化的Reflexion模式实现示例classReflexionAgent:def__init__(self, llm, evaluator, max_episodes3):self.llm llmself.evaluator evaluator # 评估函数self.max_episodes max_episodesself.memory [] # 长期记忆存储历史反思defsolve(self, task):for episode inrange(self.max_episodes):# Actor: 基于当前环境和记忆生成动作 actor_prompt f任务: {task}历史经验长期记忆:{self._format_memory()}请基于任务和历史经验生成解决方案 solution self.llm.generate(actor_prompt)# Evaluator: 评估解决方案质量 evaluation self.evaluator(solution, task)# Self-reflexion: 生成语言反馈信号ifnot evaluation[success]: reflection_prompt f任务: {task}生成的解决方案: {solution}评估结果: {evaluation}请分析失败的原因并给出具体的改进建议 reflection self.llm.generate(reflection_prompt)# 将反思存入长期记忆self.memory.append({episode: episode,solution: solution,evaluation: evaluation,reflection: reflection })else:# 成功则返回解决方案return {solution: solution,episode: episode,evaluation: evaluation }# 达到最大episode数返回最后一次的解决方案return {solution: solution,episode: self.max_episodes - 1,evaluation: evaluation,memory: self.memory }def_format_memory(self):ifnotself.memory:return暂无历史经验 formatted []for mem inself.memory: formatted.append(fEpisode {mem[episode]}:- 解决方案: {mem[solution]}- 评估: {mem[evaluation]}- 反思: {mem[reflection]})return\n.join(formatted)# 使用示例defcode_evaluator(code, task):代码评估函数示例# 实际应用中这里会运行代码并检查结果return {success: len(code) 100, # 简化示例score: 0.8,feedback: 代码基本正确但需要优化 }agent ReflexionAgent(llm, code_evaluator)result agent.solve(编写一个快速排序算法)print(f最终解决方案: {result[solution]})print(f经过 {result[episode]} 次迭代)Reflexion模式通过记忆机制让Agent能够从历史失败中学习不断改进解决方案。八、Language Agent Tree Search模式树搜索反思的融合LATSLanguage Agent Tree Search简单来说是Tree search ReAct Plansolve的融合体。核心特点与传统的基于MCTS的推理决策框架相比LATS的主要改进在于• 使用了蒙特卡罗树搜索算法可以有效地探索可能的解决方案• 利用了预训练的语言模型来评估节点的价值从而更好地指导搜索过程• 引入了自我反思机制可以从失败的轨迹中学习并提高决策能力主要步骤选择根据总奖励选择最佳的下一步行动。要么做出响应如果找到解决方案或达到最大搜索深度要么继续搜索扩展和执行生成N个潜在操作以并行执行它们反思评估观察这些行动的结果并根据反思以及可能的外部反馈对决策进行评分反向传播根据结果更新根轨迹的分数总结一下选择当前节点行动、反思、评分并将结果反向传播给父节点同时根据节点数量是否达到上限以及结果情况决定是否继续向下延伸或输出结果。九、Self-Discover模式自动发现推理结构SELF-DISCOVER旨在使模型能够自动发现用于解决复杂推理问题的任务内在推理结构。这类问题对于传统的提示方法来说构成了挑战。核心思想SELF-DISCOVER的核心是一个自我发现过程。LLMs在这一过程中选择多个原子推理模块如批判性思维和逐步思考并将它们组合成一个明确的推理结构供LLMs在解码时遵循。优势SELF-DISCOVER增强LLM处理复杂推理问题的能力尤其是那些传统提示方法难以应对的问题在基于理论的代理推理和MATH等具有挑战性的推理基准测试上的表现相比链式推理CoT提高了32%在效率上也超过了推理密集型方法如CoT-Self-Consistency同时所需的推理计算量减少了10到40倍展示了自我发现的推理结构在不同的模型家族之间具有普适性两阶段方法第一阶段-发现推理结构包括三个操作选择Select从39个预定义的推理模块中选择几个关键模块这些模块可以帮助解决特定的任务适应Adapt选择完关键推理模块后调整和完善每个模块的描述使其更好地适应待解决的具体任务实施Implement将调整后的推理模块组合成一个JSON格式的分步推理计划第二阶段-应用推理结构完成阶段一之后模型将拥有一个专门为当前任务定制的推理结构。在解决问题的实例时模型只需遵循这个结构逐步填充JSON中的值直到得出最终答案。总结选择合适的Agent模式通过以上9种Agent设计模式的介绍我们可以看到不同的模式适用于不同的场景•Few-Shot模式适合需要格式化和结构化输出的简单任务•ReAct模式适合需要交互式探索和工具调用的任务•Plan and Solve模式适合需要多步骤规划的复杂任务•REWOO模式适合需要减少计算成本和提高效率的场景•LLMCompiler模式适合可以并行执行的独立查询任务•Basic Reflection模式适合需要自我优化和迭代改进的任务•Reflexion模式适合需要从失败经验中学习的长期任务•LATS模式适合需要探索多个解决方案路径的复杂问题•Self-Discover模式适合需要自动发现推理结构的复杂推理问题在实际应用中开发者可以根据具体需求选择合适的Agent模式或者将多种模式组合使用以达到最佳的效果。随着大模型技术的不断发展相信未来还会涌现出更多创新的Agent设计模式让我们拭目以待。最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念通过动态追踪大模型开发、数据标注伦理等前沿技术趋势构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能 突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**