赞
踩
基于大模型的 Agent 基本组成应该包含规划(planning),工具(Tools),执行(Action),和记忆(Memory)四个方面,本节将从 Agent 的概念、ReAct 框架、示例、以及一些论文思路来具体聊下任务规划的话题,同时会辅以代码帮助理解,欢迎大家一起探讨。
在日常工作中,我们通常将一项任务拆解成几个步骤:制定计划、执行计划、检查结果,然后将成功的作为标准,未成功的则留待下一次循环解决,这种方法已经被证明是高效完成任务的经验总结。
而这就是[PDCA],是美国质量管理专家休哈特博士提出的,由戴明采纳、宣传,获得普及,所以又称戴明环。基于 PDCA 模型可以将一般项目分为四个阶段,即 Plan(计划)——Do(执行)——Check(检查)—— Act(处理)。把一件事情做出计划、然后实施计划、检查计划分析哪些出现了问题并提出解决方案、然后成功的纳入标准,不成功的进入下一个循环去解决,循环往复,从而形成一套标准化的流程。
而 Agent 的执行过程与人做事的方式类似,其中最有名的就是 ReAct 框架的思路,它来自论文[《ReAct:在语言模型中协同推理与行动》],作者发现让 Agent 执行下一步行动的时候,加上大模型自己的思考过程,并将思考过程、执行的工具及参数、执行的结果放到提示词中,就能使得模型对当前和先前的任务完成度有更好的反思能力,从而提升模型的问题解决能力。
比如[斯坦福 AI 小镇项目]等去年大火的 Agent 的项目,都可看到 ReAct 的思路,LangChain 框架中直接以 ReAct 为基础定义了几种代表性 Agent (CONVERSATIONAL_REACT_DESCRIPTION、ZERO_SHOT_REACT_DESCRIPTION 等)。
Thought: …
Action: …
Observation: …
…(重复以上过程,即表示 ReAct 的工作过程)
下面通过代码构建一个最基本的 Agent,不过这里有必要提前了解几个关键概念,有助于更好地理解 Agent 的工作过程。
AgentAction:它主要包含两部分信息,tool表示 Agent 将要调用的工具的名称,tool_input表示传递给这个工具的具体输入。
AgentFinish:它有一个 return_values
参数,是一个字典,该字典的 output
值表示要返回给用户的字符串信息。
intermediate_steps:表示 Agent 先前的操作及其相应的结果。它是一个列表,列表中的每个元素是一个包含AgentAction
和其执行结果的元组,这些信息对于未来的决策非常重要,因为它让 Agent 了解到目前为止已经完成了哪些工作。
定义 Agent 要调用的工具,一个用于获取句子中不同汉字的数量的函数,同时将工具函数绑定到模型上
def count_unique_chinese_characters(sentence):
"""用于计算句子中不同汉字的数量"""
unique_characters = set()
for char in sentence:
if '\u4e00' <= char <= '\u9fff':
unique_characters.add(char)
return len(unique_characters)
# 将工具函数绑定到模型上
llm_with_tools = llm.bind(functions=[format_tool_to_openai_function(count_unique_chinese_characters)])
定义一个 Agent,用于处理用户输入、大模型输出及对输出内容解析:
prompt = ChatPromptTemplate.from_messages( [ ("user", "{input}"), MessagesPlaceholder(variable_name="agent_output"), ] ) llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0) # 构建一个Agent,它将处理输入、提示、模型和输出解析 agent = ( { "input": lambda x: x["input"], "agent_output": lambda x: format_to_openai_function_messages( x["intermediate_steps"] ), } | prompt | llm_with_tools | OpenAIFunctionsAgentOutputParser() )
下面就是 Agent 的执行过程,主体实际是一个主循环,直到输出预期结果,实际情况中会对循环次数进行控制,以防止无休止执行下去,耗光资源
# 用于存储中间结果 intermediate_steps = [] while True: # 调用Agent并处理输出 output = agent.invoke( { "input": sentence, "intermediate_steps": intermediate_steps, } ) # 检查是否完成处理,如果完成则退出循环 if isinstance(output, AgentFinish): final_result = output.return_values["output"] break else: print(f"工具名称: {output.tool}") print(f"工具输入: {output.tool_input}") tool = {"count_unique_chinese_characters": count_unique_chinese_characters}[output.tool] observation = tool.run(output.tool_input) intermediate_steps.append((output, observation)) # 打印最终结果 print(final_result)
一个最基本的 Agent 就构建结束了,这就是当下大家在各种文章上看到的产品层面构建 Agent(代理、智能体、智能代理、AI 代理等)的底层原理,其实很简单。
领取方式在文末
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
①智能客服:某科技公司员工在学习了大模型课程后,成功开发了一套基于自然语言处理的大模型智能客服系统。该系统不仅提高了客户服务效率,还显著降低了人工成本。
②医疗影像分析:一位医学研究人员通过学习大模型课程,掌握了深度学习技术在医疗影像分析中的应用。他开发的算法能够准确识别肿瘤等病变,为医生提供了有力的诊断辅助。
③金融风险管理:一位金融分析师利用大模型课程中学到的知识,开发了一套信用评分模型。该模型帮助银行更准确地评估贷款申请者的信用风险,降低了不良贷款率。
④智能推荐系统:一位电商平台的工程师在学习大模型课程后,优化了平台的商品推荐算法。新算法提高了用户满意度和购买转化率,为公司带来了显著的增长。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
整个学习分为7个阶段
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
从入门到进阶这里都有,跟着老师学习事半功倍。
如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。