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,如需转载请自行联系原作者

目录
相关文章
|
5月前
|
人工智能 Serverless 数据库
在函数计算上部署专属的Agent平台
Agent 是公认的可以将AI能力跟具体业务结合的技术方案,而Agent Platform 是将Agent开发流程进行整合抽象后的平台工程,能够极大的提升Agent的构建和发布效率,帮助企业获取先机。本篇文章介绍如何在函数计算上部署一套Serverless架构的Agent平台- [AgentCraft](https://agentcraft-docs.serverless-developer.com/)
83386 7
在函数计算上部署专属的Agent平台
|
5月前
|
JSON Serverless API
Agent平台快速体验
通过《智能体(Agent)平台介绍》您了解到Agent及其构建平台的价值,通过《在函数计算上部署专属的Agent平台》你获得了专属的Agent平台,本篇进入更加激动人心的使用阶段,一起探索Agent的魅力吧
773 6
Agent平台快速体验
|
5月前
|
人工智能 自然语言处理 搜索推荐
AI原生企业级Agent构建平台具备哪些特性?一篇文章看明白
AI原生企业级Agent构建平台有哪些特性?澜码正式发布AskXBOT平台为业界揭晓答案。
458 0
|
4月前
|
人工智能 算法 安全
打通智能体自我进化全流程!复旦推出通用智能体平台AgentGym
【6月更文挑战第21天】复旦大学推出AgentGym平台,聚焦通用智能体的自我进化。该平台提供多样环境及任务,使用AgentEvol算法让智能体在学习中进化,提升泛化能力。实验显示智能体性能媲美先进模型,但计算效率和模型扩展性仍是挑战。平台强调伦理安全,推动智能体发展同时确保与人类价值观一致。[论文链接](https://arxiv.org/abs/2406.04151)
123 5
|
1月前
|
人工智能 JSON 数据格式
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
【9月更文挑战第6天】RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
|
2月前
|
机器学习/深度学习 人工智能 Linux
【机器学习】Dify:AI智能体开发平台版本升级
【机器学习】Dify:AI智能体开发平台版本升级
173 0
|
5月前
|
人工智能 运维 安全
智能体(Agent)平台介绍
2023年11月9日,比尔盖茨先生发布了《人工智能即将彻底改变你使用计算机的方式》文章,详尽阐明了Agent(智能体)这个新一代智能应用的技术理念。在个人助理、卫生保健、教育、生产率、娱乐购物、科技等领域有着广泛的应用场景,对于开发者而言是个巨大的机会, 本篇文章尝试从系统化的角度解决构建Agent的问题,探讨Agent平台化的方案。
3477 2
智能体(Agent)平台介绍
|
5月前
|
存储 人工智能 测试技术
【AI智能体】SuperAGI-开源AI Agent 管理平台
【4月更文挑战第9天】智能体管理平台SuperAGI简介及实践
510 0
|
Java 测试技术 Android开发
Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解(下)
Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解
406 0
|
Web App开发 JavaScript Java
Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解(上)
Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解
481 0