03-学习Agent开发 2024-05-24

本文是《从零手搓大模型实战》学习的第三篇个人学习笔记,主要通过学习TinyAgent项目来总结开发智能体Agent的相关知识,下面记录下学习内容以及相关心得。

注:TinyAgent相关学习内容来自datawhalechina/tiny-universe

1.什么是智能体Agent? 关于Agent理解

智能体(Agent)是人工智能领域的一个概念,它是一个能够自主运行并具有一定智能的系统或程序,可以在特定的环境(Environment)中通过对环境感知与观察(Observation),根据自身目标和能力进行思考和决策(Decision),并执行相应的动作(Action)达到某种目的或完成任务。

随着大模型LLM发展,基于大语言模型(LLM)的智能体Agent可以被视为一个基于LLM包含多个组件的系统,我们可以把智能体理解为:

智能体 = LLM+观察+思考+行动+记忆

  1. 大模型(LLM):是智能体的核心,可以看作智能体Agent的大脑,它负责处理和理解语言信息。
  2. 观察(Observation):Agent需要能够从环境中获取信息,这可能涉及到通过外部传感器(如摄像头、麦克风等)收集数据,然后使用适当的处理方法(如图像识别、语音识别等)来解析这些数据。
  3. 思考(Thinking) 和推理(Reasoning):在接收到环境信息后,智能体需要能够理解和解释这些信息,进行思考并据此做出决策,通常涉及逻辑推理、规划、问题解决等过程。
  4. 行动(Action):Agent根据决策来执行特定的动作,这些动作可以通过效应器(如机械臂、扬声器等)在环境中产生效果。
  5. 记忆(Memory):Agent还需要能够存储和检索过去的信息,以便从中学习并改进其未来的行为。可以是通过经验学习来实现的,也可以是通过存储先前的交互和知识来实现的。

2. 智能体Agent的模式

Agent的设计模式有很多,ReAct(reasoning + acting)的设计理念很有代表性,它主要结合了推理和行动,让Agent能够以交错的方式生成推理步骤和特定于任务的操作。

ReAct(reasoning + acting)

注意的是:Agent 的行动一般涉及到外部 Tool Use(工具使用),Agent通过利用外部工具来扩展自身功能,这些工具可以是搜索引擎、专业数据库或其他类型的插件,来帮助增强Agent解决问题的能力。

3. TinyAgent的主要架构及一点修改

这里的TinyAgent是一个基于React模式,手动制作的一个最小的Agent结构,主要是演示通过LLM来推理和调用外部自定义工具(这里主要是web 搜索)。

TinyAgent主要包含了3个模块,Agent、LLM、Tool。

  • Agent类主要实现了text_completion方法,通过调用大模型LLM,根据React的Agent的逻辑,来调用Tools中的工具。
  • LLM模块定义大模型使用,这里默认使用InternLM2作 Agent 模型,不过我本地没下载InternLM2,所以这里修改了一下代码,增加了Zhipu API。
  • Tools中定义了一个工具类Tools,初始化时加载了一些工具配置信息,并包含了一个名为google_search的方法,通过serper.dev提供的API接口执行谷歌搜索,我们能够在这个类里面继续扩展增加其他工具,比如计算器、天气查询、特定的数据检索等。

运行测试TinyAgent,如下所示:

agent = Agent()
print(agent.system_prompt)
首次输出

下面进行具体的提问测试,如:

response, _ = agent.text_completion(text='周杰伦的太太和他年龄相差多少?', history=[])
print(response)
问题1回答

换一个问题:

问题2

备注:
论文 ReAct: Synergizing Reasoning and Acting in Language Models

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容