TinyAgent学习心得

一、Agent介绍

LLM Agent基本框架

        AI Agent,或者说LLM Agent,是一种基于大模型的智能体,具有感知、记忆、思考、行动的功能,与基于prompt的与大模型互动这种静态且被动的方式不同,Agent系统是能够主动地执行行动并从错误中吸取教训的独立代理(还是需要一些人工介入)。简单地讲,Agent能够在一定程度上发挥到人的作用,发现问题、思考问题、制定决策、选择方法、进行行动。

二、ReAct

        ReAct是在大模型中结合“Reason(推理)”和“Act(行动)”的新范式。

ReAct: Synergizing Reasoning and Acting in Language Models

        ReAct 新范式结合了Reason only和Act only的优点,一方面,推理Reasoning会根据上下文轨迹利用有效信息对语言模型LM进行更新;另一方面,动作Actions会影响外部环境Env,从而返回Observations观察反馈,进而作用到LM上。

HotpotQA Example & ALFWorld Example

        从上图可以看出来,面对火锅问答问答数据集中的问题:

        Aside from the Apple Remote, what other device can control the program Apple Remote was originally designed to intect with?(除了苹果遥控器,还有什么其他设备可以控制苹果遥控器最初设计用来检测的程序?)

        Standard也就是直接Query大模型是这样的:iPod(×).

        CoT(思维链,Reason-only)由于不能基于外部环境来获取和更新知识而不得不依赖于有限的内部知识,导致受到红色区域信息的误导,给出了错误的回答。【真是应了那句 “吾尝终日而思矣,不如须臾之所学也”

        Act-only因为根本不关注内部信息本身,全靠外部信息引导,那就只能南辕北辙,不知道往哪个方向走出了个“yes”的回答。

        ReAct则反复进行 “思考——行动——获取外部信息——思考” 这一步骤实现了较为正确的回答。

        后面针对ALFWorld数据集问答也可以说是基于外部世界的决策任务时,ReAct的优势更是可见一斑。

三、TinyAgent

        最近几天学习的TinyAgent,算是基于“ReAct”的方式手动制作的一个微型“Agent”架构。

TinyAgent流程图

        TinyAgent的基本流程是:首先解析用户的Query,让LLM根据Query确定回答问题所要的工具,进而解析出这些工具的名字与所需要的参数,返回到调用工具的函数,system_prompt中的observation就会有关于“调用哪些工具,以什么样的方式输出,以及工具的描述信息和工具应该接受什么样的参数”的信息,大模型会将调用工具的结果与用户的提问结合。也就是说,这里调用了两次大模型。 

Observation: the result of the action

        对应有三个py文件:Agent.py,LLM.py,tool.py。

        Agent.py主要实现了与工具调用相关的函数。

        LLM.py主要定义了大模型,并在demo文件中实现load与chat。

        tool.py主要定义里能使用的工具,这里用到了Google search引擎,所以对应的使用

url = "https://google.serper.dev/search"

         后面的API也是在google的serper中进行申请。如果要使用其它搜索引擎,比如

url = "https://api.bing.microsoft.com/v7.0/search"

        对应的可以在Azure门户上注册Bing Search API,并获取API密钥。

        这样做的话还有一点值得注意,Bing搜索API通常使用GET请求,而Google的示例使用的是POST请求。所以response句也应根据实际的API文档进行修改。

        

四、Run Demo

        在选择agent时,我使用的是`InternLM2-chat-7B`模型,因为租用的实例数据盘没法容纳big cup的20B,甚至在下载Agent模块阶段就断了线:

        

       从这张图可以看出system_prompt也可以说后面response的格式。

               对于这种问题,LLM显然没有调用Google Search这一工具,也就是能根据内部信息直接回答。

        对于无法从内部获取的信息,调用外部搜索的工具,查询并输出结果。这里给出是“2022”年,估计是agent模型的问题。

        

        和上图进行对比,还是有点区别的。这个问题下,模型的thought是有内容的,说明其有相关内部信息。

        这个就是在乱说了。。。

        

        在输出的地方加上history得到的结果,说明具有记忆性。

五、总结

        总的来说,Agent算是未来大模型发展的一个重要方向,发展前景好,发展空间也大,了解一些这方面的知识还是很有必要的。

        最后分享一篇关于agent的综述:WooooDyy/LLM-Agent-Paper-List: The paper list of the 86-page paper "The Rise and Potential of Large Language Model Based Agents: A Survey" by Zhiheng Xi et al. (github.com)icon-default.png?t=N7T8https://github.com/WooooDyy/LLM-Agent-Paper-List

 参考资料:

datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe (github.com)

ReAct: Synergizing Reasoning and Acting in Language Models (react-lm.github.io)        

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值