【ai_agent】从零写一个agent框架(一)打造最强开放agent编辑框架,拳打dify,脚踩coze

前言

之前我们讲过了想将LLM能力在具体的应用中实践,最好的方法是做成一个agent,具体参考大模型应用

本系列我们就从零写一个agent框架,方便我们构造和运行agent。

coze dify 等agent编排框架探索

动手之前先看看目前比较好的这些agent编排框架。

首先我认为最好的是字节的coze :https://www.coze.com它以bot(agent)为主体,在其上增加了一些RAG,workflow等等功能。并且提供了single和multi两种模式。

用起来很简单,只需要少量的编辑,就能够快速将应用搭建起来。

当然这种设计也导致它的编排能力非常弱,尤其是对于CoT这种场景。它的workflow也不支持嵌入bot,只提供了一些简单节点。多bot的场景只能用multi agent模式,但这个模式也只是简单的编排。做一些复杂操作非常勉强。

但我最喜欢的是它的workflow能嵌workflow,属实是能力无限。

dify: github地址在线能力体验

可以理解为开源,低配版coze

其他有 FlowiseAI,kuafu,Boxcars等等

还有一个比较另类的Stable Diffusion ,我非常喜欢他的ComfyUI,这也算是一种workflow,非常的比较open,且能够导来导入,且不拘一格,可以任意流转。

目标

那我们这个ai_agent框架目标如下:

  1. 编排式agent,不应该拘泥于某一范式来编排agent,而应该是一个开放的能力。这主要是因为在解决复杂问题时固定范式会限制我们的思路。
  2. BaaS Solution 服务和编排分离,基于一个的中间层的协议通信。在应用发布后,只需要调用服务的api即可。
  3. 能力无限 workflow和agent都可以作为一个新的agent的子节点。

架构设计

简略的划分为两个模块,agent服务和webui,一个用来运行agent,一个用来编排agent。

  • webui:用来编排agent的ui界面,编排后的结果是一个执行计划plan。
  • agent serve:agent服务,能够加载各种service(llm,workflow等),并根据plan执行这些service。
  • python_rt: python运行环境,就是说可以直接将py代码作为service执行,以后还会有wasm_rt等等。
  • agent_rt: agent运行时,是调度plan的核心。

快速体验

项目地址 传送门

启动服务

启动需要示例

  • python_rt : 是为了能够远程调用python,并保证一个安全和沙盒环境,版本使用的3.11.9
  • webui : 用的wasm制作的编辑器,需要trunk绑定,trunk安装教程
  • openai:我这里llm主要用的openai,如果你需要llm能力,则需要先设置appkey到环境变量中。
bash 复制代码
// 启动python运行时,我这里直接打包成了docker,python版本3.11.9
docker run -itd -p 50001:50001 wdshihaoren/python_rt:16896997

//运行实例,就是起一个rpc服务,能够运行plan
cd example
cargo run --bin serve

//运行webui
cd webui/server
go run main.go

cd webui
trunk serve 

加载plugin

project->LOAD,从webui/server中加载所有的plugin插件,插件地址,其实就是一堆json,定义插件的视图长啥样。

到这里可以自己拖拽一些节点制作workflow了。

upload plugin

我们这里直接上传一个做好的agent: single agent。将内容粘贴到plan-text-view窗口中,up plugin上传。可以看到所有的流程节点。

执行流程

打开work-flow-view视图,可以看到single agent执行流程非常简单。

  • 注意: 一个流程总是以start节点开始,以end节点结束。
  1. 根据用户输入,调用llm,
  2. 如果需要调用tool,则用python执行tool,然后将结果追加到llm的上线文中。继续调用llm。
  3. 如果不需要执行tool,则流程结束,返回答案answer

debug

点击debug,查看关键流程的执行结果是否符合预期。

至此,一个简单的流程就体验完了。

尾语

我会继续完善这个项目相关的文档,每个模块都会有一篇文章介绍,同时诚邀感兴趣的小伙伴们的参与,一个人工作量有点大。

项目目前刚开始做,还有很多功能没有完善,之后可能会有大的改动。

关于能力无限,其实上面这个workflow可以导出来作为一个workflow被其他的agent调用。可以在workflow->custom_workflow中体验。

如果不想用webui这么复杂的东西,可以直接用rust,引用crate.io上的agent_rtwd_agentlib,然后编码体验。

相关推荐
他日若遂凌云志2 小时前
深入剖析 Fantasy 框架的消息设计与序列化机制:协同架构下的高效转换与场景适配
后端
快手技术2 小时前
快手Klear-Reasoner登顶8B模型榜首,GPPO算法双效强化稳定性与探索能力!
后端
二闹2 小时前
三个注解,到底该用哪一个?别再傻傻分不清了!
后端
用户49055816081252 小时前
当控制面更新一条 ACL 规则时,如何更新给数据面
后端
林太白2 小时前
Nuxt.js搭建一个官网如何简单
前端·javascript·后端
码事漫谈2 小时前
VS Code 终端完全指南
后端
机器之心2 小时前
7年了,OpenAI官方给出五代GPT对比,网友却怀念起「狂野」初代
人工智能·openai
该用户已不存在3 小时前
OpenJDK、Temurin、GraalVM...到底该装哪个?
java·后端
怀刃3 小时前
内存监控对应解决方案
后端
码事漫谈3 小时前
VS Code Copilot 内联聊天与提示词技巧指南
后端