chatgpt开发原代码 AI Agent应用——AgentGPT技术详解

默认分类1个月前发布 admin
4,493 0
ChatGPT国内版

作者:yeyan,中国地质大学 工程硕士 来自:青稞AI

1.背景

由于的发展,除了基础的问答需求,利用完成一系列复杂任务的需求也应用而生,产生了很多关于ai agent的应用框架,具体应用如下图,包括开源和商业的。

图来自

得益于llm模型的强大能力,将llm作为大脑,ai agent可以做到根据任务目标,进行思考,分解任务,然后调用相应工具完成任务。

一般ai agent的结构如下:

一个agent(智能体)主要包含以下3个部分:

•(1) :感知,主要就是信息的输入,比如文本,语言等信息。•(2) Brain:这个是核心,基于llm,根据输入信息,制定任务计划等。•(3) :执行,根据计划执行对应的任务,比如调用第三方api,从工具集(tools)选中合适的tool执行任务。

支持多种形式,如下图所示, anget就是将anget作为一个ai助手,类似目前gpt的问答操作;agent-agent就是多个agent可以相互交互,比如,定义了多个角色,实现了一个虚拟的开发公司;human-agent就是加入人工提示或者反馈,根据人工信息,agent可以调整任务,实现更好的完成任务。

2.技术介绍

目前开源的ai agent有很多,如,,等,本文以为例,介绍一下其大概流程和结构。

主要包含3个部分,其他如,等llm-based agent基本结构都是类似的。

• and :推理和计划,如果定义一个目标,只是简单的输入给llm模型,只能得到一个粗略的答案;如果使用” “(提示工程),则可以将目标分解成多个更容易理解的步骤,并用思维链提示的方法进行反思。•** **:记忆,分为短期记忆和长期记忆。短期记忆是根据上下文学习,受限于llm的token长度;长期记忆是当执行一个复杂任务时,需要考虑到历史任务的情况,当代理的任务长时间运行时,超过token长度时,就会会过期的记忆,此处采用了向量数据库存储历史信息的特征向量。•Tools:工具集,llm只支持文本的输出,对于复杂任务,比如定个机票,llm就无法完成。解决方法就结合” “,定义一系列工具集,通过和工具功能的描述,agent就可以根据任务调用相应的工具,比如定义一个“”工具,功能描述是用“ ”的api搜索内容,描述中还可以可以包含api调用的输入输出以及内容格式等。

2.1

的重点就是设计合适的模板,不同的llm对的格式可能不同。

常用的方法如下:

•zero-shot方法(只提供,不提供示例)

Prompt:
Classify the text into neutral, negative or positive. 
Text: I think the vacation is okay.
Sentiment:
Output:
Neutral

•one-shot,two-shot,N-shot等方法,即提供1、2 或 N 个示例,以提高模型的准确性

•Chain-of- (CoT) (思维链),通过在增加逻辑推理步骤,实现比较复杂的任务。

•ReAct技术( + ) ReAct是将推理和执行合并,可以动态推理和执行,通过不断的think和,获取最终的答案。

•Plan and Solve(sp任务) 也是一种思维链方法,主要要求模型理解问题,提取变量和相关值,并逐步指定计划。

具体的技术可以参考以下文章,有很详细的例子。

• Guide

chatgpt开发原代码 AI Agent应用——AgentGPT技术详解

•Learn : Your Guide to with AI

也可以参考代码库的.py文件,里边有一些的模板。

# 分析任务的prompt
analyze_task_prompt = PromptTemplate(
    template="""
    High level objective: "{goal}"
    Current task: "{task}"
    Based on this information, use the best function to make progress or accomplish the task entirely.
    Select the correct function by being smart and efficient. Ensure "reasoning" and only "reasoning" is in the
    {language} language.
    Note you MUST select a function.
    """,
    input_variables=["goal", "task", "language"],
)

2.2

agent执行多次时,会忘记之前的操作,用向量数据库解决这个问题,向量数据库能够存储任务执行的历史记录作为,agent就在任务循环中访问的数据。

向量数据库简介如下图:

关于,可以参考种的机制:用户输入之后,再执行核心逻辑之前,先从中读取之前的信息,作为,修改用户输入,然后再一起送入llm模型,得到当前任务的输出,再得到最终任务的结果前,将输入输出先存入,在之后的任务中可以参考这部分任务的信息。

2.3

中关于promt的思维链技术采用了,目前基本这块都使用,具体可以参考文章【Kevin::一个让你的LLM变得更强大的开源框架】,写得很详细,也可以看官网文档【 | ️ 】。

3.实测

目前仅支持模型,暂时不支持本地llm模型,不过可以参考代码.py#L37和er.py#L18,修改此处,添加本地模型的调用接口。

测试,以获取网站最新目标检测的sota算法为例。

(1)打开网站,输入任务

输入对应的任务“Get the sota on the paper with code about on coco ”。

(2)任务分解过程

搜索网站->进入网站->网站内部搜索->过滤->排序

(3) 将任务转换成代码

(4)解析代码结果

(5)过滤内容

chatgpt开发原代码 AI Agent应用——AgentGPT技术详解

(6)对搜索到的模型排序

(7)检索模型的相关内容

(8)总结得到答案

4.参考链接

[1]AgentGPT原文blog: Autonomous AI in your browser
https://reworkd.ai/blog/Understanding-AgentGPT
[2]agentgpt demo网址
https://agentgpt.reworkd.ai/zh
[3]Plan-and-Solve-Prompting技术
https://github.com/AGI-Edgerunners/Plan-and-Solve-Prompting
[4]Prompt Engineering Guide文档
https://www.promptingguide.ai/
[5]Learn Prompting: Your Guide to Communicating with AI
https://learnprompting.org/docs/intro
[6]kevin:LangChain:一个让你的LLM变得更强大的开源框架
https://zhuanlan.zhihu.com/p/636043995
[7]Memory | ️ Langchain
https://python.langchain.com/docs/modules/memory/
[8]开源ai-agents列表:awesome-ai-agents
https://github.com/e2b-dev/awesome-ai-agents
[9]叶赛文:ChatGPT api里的system,user,assistant有什么作用?如何使用?
https://zhuanlan.zhihu.com/p/638552350
[10]AutoGPT
https://github.com/Significant-Gravitas/AutoGPT
[11]BabyAGI
https://github.com/yoheinakajima/babyagi
[12]openagents
https://github.com/xlang-ai/openagents
[13]langchain中文教程
https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide
[14]awesome-langchain
https://github.com/kyrolabs/awesome-langchain

备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

id:,记得备注呦

323AI导航网发布

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...