Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

qtencent7/agent-thinking-process

Repository files navigation

agent仓库简要说明

1,本仓库总目标是构建一个类似langchain,crewai,phidata这样的agent framework。 2,本仓库的目标是一步步从最基本的类智能体跑通,到建立智能体的基本概念,到组成成一个基本的智能体,到构建更加健壮,更加灵活,更加可扩展的智能体框架。初始版本就是v1.py,每一个版本都基于上一个版本进行迭代,力图让观众能更加简单,易懂的看懂思路。 注:我曾经尝试过去读懂类似crewai这样的仓库,但是其实概念甚多,之间交互关系错综复杂,因此放弃了。于是决定试着写一个智能体框架,公开思考的过程

v1.py版本的思路介绍

智能体就是一个能够调用工具的系统,工具可以理解为函数,要把llm和函数联系起来,就是说,llm具备调用函数的能力,这里我们用到了openai python库的function call功能。

function call功能简介: function call实际上就是给大模型传一个参数对象,这个对象包含函数名,函数功能表述,函数参数表述。大模型能根据prompt信息,结合function call的参数对象,在prompt中抽取函数参数,给函数去执行。

举个例子,比如,prompt是"从伦敦到巴黎的航班最近一班是几点的",这个时候,函数是查询航班信息的,查询航班信息需要知道起点,终点。因此,大模型可以从prompt中抽取起点和终点,"伦敦","巴黎",然后以一个参数对象的形式给到你,你就可以去调用接口执行查询航班的API请求了。

这样就是构建了一个智能体

v2.py版本的思路介绍

v2版本在v1版本之上,增加了agent的概念,让所有的变量,函数都集中在agent这个类里面,传入参数,实现agent的初始化。后面,调用agent的run方法,就可以实现agent的运行。

v2版本的agent类有四个参数:

1,model:大模型的模型名

2,prompt:总的提示词

3,llm:openai发起请求的客户端

4,tool:智能体需要调用的工具

v3.py版本的思路介绍

v3版本在v2版本之上,整合了tool相关的概念,增加了一个tool类,将函数参数模板生成,注册工具执行函数,获取工具执行函数,都整合到一个类里面,使得管理更加精细。

v4版本的思路介绍

将agent,tool都抽离成单独的文件,方便后续管理

v5版本的思路介绍

该版本调整agent的调用逻辑,使得agent可以灵活顺序调用多个tool,例子中实现了调用两个tool。新增tool类,可以管理多个tool实例。

v6版本的思路介绍

1,增加自定义工具的功能,新增BaseTool类

2,通用化工具的创建过程,参数传递,function call模板创建这些东西,使之更加通用。

3,新增网页搜索,摘要总结的两个tool,跑通agent

v7版本的思路介绍

1,先在test1.py中试验,跑通llm中用rag的整个流程

2,然后,在v7文件夹下,新增chroma_db_rag.py这个文件,在里面对rag进行封装,调试agent,使之跑通。

3,优化这部分代码,使之和之前的tool功能更加和谐

v8版本的思路介绍

1,整个依照langchain,重构。

About

公开类似langchain,crewai,phidata这类agent framework的搭建思路,还原从0到1,从1到100的agentic framework构建过程

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /