Agent编程平台的实现

简介:
该平台于2005年基于DOTNET V1.1实现,版本号V1.0,本文描述一下实现的方案。目前,我正在升级V2.0,该版本Agent将完全兼容OOP,采用面向上下文编程方法实现。这玩意比较抽象,估计你会晕,如果有晕的地方,就多看几遍,我一开始自己都被自己搞糊涂了。底层应用的技术有DynamicProxy,ObjectBuilder,Agent技术和面向上下文编程模型。

Object和Agent

什么是Agent?为社么需要Agent?Agent属于人工智能的范畴,它也被称为“代理人”。Agent能够在一定程序上模拟了人类社会的行为和关系,具有一定的智能并能够自主运行。通俗的将,Agent相当于“人”。先用一个场景来看一下为什么需要Agent。

场景为“人物A让人物B关门”,Object模拟:用对象A模拟人物A,对象B模拟人物B,对象B具有关门的方法。在对象A中调用“B.关门()”方法对该场景进行模拟。

该模拟的缺陷如下:
缺陷一:对象是静态的,并不能贴切模拟人的思维等。
缺陷二:“对象A中调用‘B.关门()’方法”模拟该场景时,实际上是对象 A的线程执行“B.关门()”方法的代码 (与人类活动相左),而现实中是B来执行的。
缺陷三:在该模拟中,对象A调用“B.关门()”方法后,它必须等待该方法执行完毕后才能执行其它操作,这与现实是不一致的( 需要异步支持 )。

Object用于模拟只能实体,天生就有一些缺陷,相比Agent,它是静态的、被动的和没有思维的。本文针对利用Object模拟现实的缺陷,提出了改进的方案——将Object包装成Agent,使Object具有Agent的特性,方案如下。

缺陷一改进:将消息队列和消息处理器(作用相当于大脑)与Object绑定,使得对象能够模拟人的思维来接收消息并处理。这个消息处理器是一个线程。
缺陷二改进:设计一个调用拦截体系。当一个对象调用另一个对象的方法时,拦截体系能够拦截当前调用,并将该调用封装成一个消息包,发送给目标对象。目标对象的消息处理器从消息队列中获取该消息并处理。
缺陷三改进:拦截体系拦截调用后会根据调用方法的性质(同步或者异步)决定调用线程是否要等待调用结果或直接返回。

本文把基于拦截体系的OOP平台称为AOP平台。该平台把基于拦截体系改进后的Object称为Agent。在该平台,Agent的本质是基于拦截体系的与消息队列和消息处理器绑定的对象。上述的Agent能够模拟人与人之间的合作,但是在现实社会,不仅有单个人之间的合作,还存在团队合作。因此,本文提出了一个Agent组(AgentGroup)概念。利用AgentGroup来模拟一个团队,一个AgentGroup由多个Agent组成。AgentGroup的本质是与消息队列、消息处理器和消息路由器绑定的Object,并且由一个或几个Agent组成。

Agent和AgentGroup结构


在本平台,Agent本质上是基于拦截体系的与消息队列和消息处理器绑定的对象。一个Agent至少包含一个消息队列和一个消息处理器。AgentGroup的本质是与消息队列、消息处理器和消息路由器绑定的Object。一个AgentGroup至少包含一个消息队列、一个消息处理器、一个消息路由器以及所包含的Agent。AgentGroup的消息队列用来接收、保存和读取与该AgentGroup相关的消息。当系统给一个Agent发送消息时,如果该Agent属于一个AgentGroup,则这个消息会发送给该Agent所属的组。AgentGroup消息处理器本质也是一个线程,它的状态图与Agent不同的是它没有“等待调用结果”状态和与该状态相关的转换。AgentGroup消息处理器主要是用来循环的从消息队列读取消息,然后将该消息发送给消息路由器。消息路由器的作用是将该消息根据某种路由方式路由给该AgentGroup的一个或几个Agent。

拦截体系的实现

该改进方案的实现依赖于一个拦截体系。拦截体系由3部分组成:(1)目标对象。(2)拦截机对象。(3)目标对象代理。拦截体系的工作机制如下:(1)利 用动态代理技术建立目标对象的代理,该代理暴露了与目标对象相同的接口;(2)调用对象调用目标对象的代理的接口时,拦截体系首先将当前调用封装成调用消 息包,然后建立一个相应拦截机对象,将当前消息作为参数传递给拦截机对象的Invoke方法,由拦截机对象决定如何调用目标对象的方法。

用户注册一个Agent时,本平台首先创建该Agent的代理对象以及相应的拦截机对象。用户要调用一个Agent方法时,它首先从本平台获取需要调用的Agent,本平台将会返回该Agent相应的动态代理对象给用户,此时,用户并非获取了Agent,而是Agent的代理对象;当用户调用代理对象的方法时,拦截体系会从堆栈中取出当前调用信息,并将当前调用转换成一个调用消息包,传递给拦截机对象,拦截机对象会根据当前调用消息包的信息路由给被调用的Agent或者被调用Agent所在的AgentGroup。因此,要实现一个拦截体系,必须实现:动态代理技术和拦截机。

动态代理技术可以利用当前流行的OOP平台现成的反射机制和代码生成来完成,它的实现过程如下:(1)利用反射机制获取目标对象的描述信息,这些描述信息包括目标对象的所有成员和方法的信息;(2)利用代码生成,动态的构建与目标对象的所有成员和方法信息一致的代理对象,并插入相应的拦截机对象。拦截机的作用是在将拦截体系发送的调用消息包进行处理和路由。拦截机将根据不同的调用方式进行不同的处理。

基于拦截体系的AOP平台,Agent与Agent、Agent与AgentGroup的调用将不同于Object间的调用。在AOP平台中,因为有了拦截体系,调用者的线程不再进入被调用者的方法,而是转到拦截机,执行拦截机代码然后等待结果或者返回。该平台允许Agent、AgentGroup间共4种不同的调用方式:Agent与Agent的同步调用、Agent与Agent的异步调用、Agent与AgentGroup的同步调用和Agent与AgentGroup的异步调用。




本文转自道法自然博客园博客,原文链接:http://www.cnblogs.com/baihmpgy/archive/2009/09/04/1560631.html,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
人工智能 Serverless 数据库
在函数计算上部署专属的Agent平台
Agent 是公认的可以将AI能力跟具体业务结合的技术方案,而Agent Platform 是将Agent开发流程进行整合抽象后的平台工程,能够极大的提升Agent的构建和发布效率,帮助企业获取先机。本篇文章介绍如何在函数计算上部署一套Serverless架构的Agent平台- [AgentCraft](https://agentcraft-docs.serverless-developer.com/)
83406 7
在函数计算上部署专属的Agent平台
|
7月前
|
JSON Serverless API
Agent平台快速体验
通过《智能体(Agent)平台介绍》您了解到Agent及其构建平台的价值,通过《在函数计算上部署专属的Agent平台》你获得了专属的Agent平台,本篇进入更加激动人心的使用阶段,一起探索Agent的魅力吧
817 6
Agent平台快速体验
|
7月前
|
人工智能 自然语言处理 搜索推荐
AI原生企业级Agent构建平台具备哪些特性?一篇文章看明白
AI原生企业级Agent构建平台有哪些特性?澜码正式发布AskXBOT平台为业界揭晓答案。
481 0
|
6月前
|
人工智能 算法 安全
打通智能体自我进化全流程!复旦推出通用智能体平台AgentGym
【6月更文挑战第21天】复旦大学推出AgentGym平台,聚焦通用智能体的自我进化。该平台提供多样环境及任务,使用AgentEvol算法让智能体在学习中进化,提升泛化能力。实验显示智能体性能媲美先进模型,但计算效率和模型扩展性仍是挑战。平台强调伦理安全,推动智能体发展同时确保与人类价值观一致。[论文链接](https://arxiv.org/abs/2406.04151)
147 5
|
29天前
|
存储 Serverless API
基于百炼平台构建智能体应用——十分钟构造能主动提问的导购智能体
本文介绍了如何使用阿里云百炼大模型服务平台构建一个多智能体的智能导购应用,并将其部署到钉钉。通过百炼的Assistant API,您可以快速构建一个包含规划助理、手机导购、冰箱导购和电视导购的智能导购系统。文章详细讲解了从创建函数计算应用、访问网站、验证智能导购效果到将商品检索应用集成到智能导购中的全过程,帮助您快速实现智能导购功能。
基于百炼平台构建智能体应用——十分钟构造能主动提问的导购智能体
|
1月前
|
数据采集 人工智能 弹性计算
从零到英雄:利用百炼平台打造高效情感分析智能体的全攻略
百炼平台是阿里巴巴推出的面向开发者的AI模型训练和推理平台,提供丰富工具和服务,支持从需求分析到部署上线的全流程。本文以构建情感分析系统为例,详细介绍如何利用百炼平台完成数据准备、模型选择与训练、评估调优及最终部署。
|
3月前
|
人工智能 JSON 数据格式
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
【9月更文挑战第6天】RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
|
4月前
|
机器学习/深度学习 人工智能 Linux
【机器学习】Dify:AI智能体开发平台版本升级
【机器学习】Dify:AI智能体开发平台版本升级
252 0
|
7月前
|
人工智能 运维 安全
智能体(Agent)平台介绍
2023年11月9日,比尔盖茨先生发布了《人工智能即将彻底改变你使用计算机的方式》文章,详尽阐明了Agent(智能体)这个新一代智能应用的技术理念。在个人助理、卫生保健、教育、生产率、娱乐购物、科技等领域有着广泛的应用场景,对于开发者而言是个巨大的机会, 本篇文章尝试从系统化的角度解决构建Agent的问题,探讨Agent平台化的方案。
3899 2
智能体(Agent)平台介绍
|
7月前
|
存储 人工智能 测试技术
【AI智能体】SuperAGI-开源AI Agent 管理平台
【4月更文挑战第9天】智能体管理平台SuperAGI简介及实践
589 0