用"ADL"Agent声明式语言,让你几分钟上线一个Agent | UCSB最新

搜索
AI-TNT
正文
资源拓展
用"ADL"Agent声明式语言,让你几分钟上线一个Agent | UCSB最新
2025-04-27 13:27

今天的Agent框架虽然功能强大,但对于没有编程经验的客户服务专业人员来说却过于复杂。这些框架如AutoGen、LangGraph、CrewAI等通常将Agent声明嵌入到复杂的Python代码中,使整体工作流程难以把握,门槛过高。对于仅需构建带有业务逻辑的客服聊天机器人的非技术人员而言,这些框架犹如天书,让他们望而却步。


之前我也介绍过IBM的PDL提示词声明语言,今天文章里声明式语言和IBM的重磅!IBM:PDL提示词声明语言,帮你拿回Prompt控制权有些类似,而且IBM又出了一个优化的也不错用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


ADL:Agent声明式语言


用


ADL(Agent Declarative Language)是一种专为构建基于代理的聊天机器人而设计的声明式语言,它彻底改变了Agent开发的游戏规则。这种语言秉持"定义什么是代理及其交互方式,而非如何实现"的原则,将Agent的定义从代码实现中分离出来。ADL通过这种抽象层次,让底层多代理系统(MAS)能够自动优化代理执行,无需当MAS变更时手动重新编程。来自UCSB加州大学芭芭拉分校的研究者也开源了代码:https://github.com/Mica-labs/MICA


用



核心设计理念:让自然语言成为编程主力


ADL将自然语言编程放在设计核心,这一大胆举措有着深远意义:


  • 易于学习
  • :自然语言更易于没有编程经验的专业人员理解和使用
  • 利用LLM优势
  • :随着LLM能力不断增强,它们能够准确理解和执行用自然语言编写的知识和逻辑
  • 处理复杂交互
  • :使用传统编程语言的控制流来硬编码所有可能的用户交互既耗时又几乎不可能完成


这种新范式下,设计者只需提供高级指令和特定领域知识,由语言模型处理用户交互的复杂性。


与传统框架的鲜明对比


用



如图所示,ADL与OpenAI/Swarm在实现相同功能(航班变更助手)时有着天壤之别:


  • Swarm方法:将Agent声明直接集成到Python代码库中,虽然允许轻松访问Python库,但增加了复杂性
  • ADL方法:将Agent声明与代码库分离,保持声明的简洁性,同时将Python实现封装在单独的文件中


这种架构差异体现了ADL"声明式"与"实现式"的根本区别,使Agent定义更加清晰可见。


MICA:ADL的开源实现


研究者已经开发并开源了MICA(Multiple Intelligent Conversational Agents),这是ADL的实际实现系统。MICA提供了一种直观的方式来设计和部署基于ADL的聊天机器人,它能够:


  • 将ADL文件转换为可执行的代码
  • 提供友好的用户界面进行编辑和测试
  • 降低非技术人员的入门门槛


对于想要快速创建自定义聊天机器人的业务专家来说,MICA使他们能够专注于业务逻辑而非技术细节。MICA的设计理念与ADL一致,强调声明式编程和自然语言理解,为创建多代理系统提供了一个简化的框架。


ADL的四种Agent类型详解


ADL包含四种类型的Agent,每种都有特定用途和结构:


  1. KB Agent(知识库Agent):处理信息检索和问答任务
  2. LLM Agent:通过提示编程编码领域知识和约束
  3. Flow Agent:提供类似传统编程语言的流程控制
  4. Ensemble Agent:协调其他Agent


这种分类方法既保持了功能的专一性,又提供了足够的灵活性来满足各种复杂场景的需求。


基础Agent结构:共同属性与独特特性


所有Agent都有一些基本字段:


  • type:定义Agent类型
  • description:对Agent的一般描述
  • args(可选):包含与Agent相关的参数


每种Agent还有各自的"body"来解释其逻辑,这取决于Agent的类型而有不同的描述方式。这种设计使得ADL既保持了语法的一致性,又为不同类型的Agent提供了足够的灵活性。


ADL示例:简单问候Agent和产品客服Agent


下面是两个ADL定义示例,展示了ADL的语法和结构:


示例1:简单问候Agent

# 定义一个简单的问候Agent
greeter:
type:llmagent
description:一个友好的问候agent
prompt:|
你是一个友好的助手,专门负责向用户问好。
使用中文回复,保持简短、友好。
如果用户告诉你他们的名字,要记住并在以后的对话中使用。
memory:true

# 定义主入口
main:
steps:
-call:greeter


示例2:产品客服Agent系统


# 产品信息Agent
product_agent:
type:llmagent
description:提供产品信息的agent
prompt:|
你是一个产品专家,了解我们所有的智能家居产品信息。

产品信息:
-智能音箱:399元,支持语音控制、音乐播放
-智能灯泡:99元,可调亮度和颜色
-智能插座:129元,支持定时和远程控制
-智能门锁:1299元,支持指纹和密码

请专业且友好地回答用户关于产品的问题。
如果用户询问你不知道的产品,请告诉他们我们目前没有该产品。
memory:true

# 入口Agent
customer_service:
type:ensembleagent
contains:
-product_agent
description:智能家居产品客服
steps:
-bot:您好!我是智能家居产品客服。请问有什么可以帮您?

# 主入口
main:
steps:
-call:customer_service


从上面的例子可以看出,ADL使用YAML格式定义Agent,结构清晰且易于理解。即使是没有编程背景的人也能快速掌握如何创建自己的Agent。


KB Agent:知识检索的专家


KB Agent专为执行信息检索和问答而设计,给定信息源后,它能自动搜索相关信息并返回答案。这些源可以包括PDF、DOC、TXT、CSV、URL等各种格式,而faq字段则存储常见问题及其对应答案。

KB Agent的优势:


  • 简单直接:无需复杂的逻辑流程设计
  • 专注性强:理想的知识密集型任务处理工具
  • 适合客服场景:从企业知识库或FAQ文档中提取信息回答问题


LLM Agent:自然语言处理的核心


LLM Agent通过提示编程编码领域知识和约束,并可以利用在uses子句中声明的工具调用用Python编写的函数。

构建LLM Agent需要提供:


  • 简短介绍
  • (description字段)
  • 详细指令
  • (prompt字段)
  • 工具名称
  • (如适用)


这种设计充分利用了LLM的强大能力,同时通过结构化的字段定义保持了可控性和可维护性。LLM Agent的灵活性使其能够处理复杂的对话场景和业务逻辑,成为ADL中最强大的Agent类型之一。


实际运行效果展示


下面是使用ADL定义的Agent的实际运行效果:


用



问候Agent交互示例


===== 测试简单问候Agent =====

用户: 你好!
Agent: 你好!很高兴见到你!😊 你今天过得怎么样?

用户: 我叫小明,很高兴认识你
Agent: 小明你好!很高兴认识你~✨ 我会记住你的名字的!今天有什么可以帮你的吗?

用户: 今天天气怎么样?
Agent: 小明,我其实看不到外面的天气呢~ 🌤️ 不过你可以告诉我你在哪个城市,我可以帮你查查天气预报哦!或者你今天有什么特别的活动安排吗?


产品客服Agent交互示例


===== 测试产品客服Agent =====

用户: 你们有什么产品?
Agent: 您好!我们目前提供以下智能家居产品:

1. **智能音箱** - **399元**
- 支持语音控制、音乐播放
- 可与其他智能设备联动

2. **智能灯泡** - **99元**
- 可调节亮度和颜色(1600万色可选)
- 支持APP或语音控制

3. **智能插座** - **129元**
- 支持定时开关和远程控制
- 兼容主流家电

4. **智能门锁** - **1299元**
- 支持指纹、密码开锁
- 具备防撬报警功能

如果您对某款产品感兴趣,可以告诉我,我会为您详细介绍! 😊

用户: 智能灯泡多少钱?
Agent: 您好!我们的**智能灯泡**售价是 **99元** 💡

**产品亮点:**
✅ **可调亮度**(适合不同场景)
✅ **1600万色可选**(随心切换氛围)
✅ **语音/APP控制**(兼容主流智能音箱)
✅ **节能耐用**(LED光源,寿命长)

需要了解具体功能或购买方式吗? 😊

用户: 你们有智能冰箱吗?
Agent: 您好!目前我们**暂时没有**智能冰箱产品。

不过,我们现有的智能家居设备(如**智能插座、智能音箱**)可以与其他家电联动,提升使用体验。如果未来推出智能冰箱,我们会第一时间通知您! 😊

您是否对其他产品感兴趣?我可以为您详细介绍~


交互式客服会话


开始交互式会话 (输入'退出'结束)
Agent: 您好!我是智能家居产品客服。请问有什么可以帮您?

用户: 介绍一下智能插座
Agent: 当然!很高兴为您详细介绍我们的**智能插座**。

### **产品名称:智能插座**
**价格:129元**

### **核心功能:**
1. **远程控制**:通过手机APP(支持iOS/Android)随时随地控制家中电器开关,即使不在家也能轻松管理。
2. **定时开关**:可设置定时任务,比如让电饭煲定时煮饭、空调提前开启等,省电又省心。
3. **电量统计**:实时监测电器用电量,帮助您优化家庭用电习惯,节能环保。
4. **语音联动**:兼容主流智能音箱(如天猫精灵、小爱同学等),支持语音控制,比如"小爱同学,关闭客厅插座"。
5. **安全防护**:过载保护、防雷设计,保障家庭用电安全。

### **适用场景:**
✅ 控制空调、电热水器等大功率电器
✅ 定时开关灯、鱼缸等设备
✅ 远程管理路由器、充电器等,避免长期通电

### **安装与兼容性:**
- 即插即用,无需复杂设置,适配标准86型插座面板。
- 支持2.4GHz Wi-Fi(需确保家庭网络覆盖)。

如果您对智能插座还有其他疑问,或者需要搭配其他智能设备使用,欢迎随时咨询! 😊


从这些交互示例可以看出,基于ADL定义的Agent能够提供专业、友好且信息丰富的回复,并能记住用户名称等上下文信息,展现了非常优秀的用户体验。


Flow Agent:传统流程控制的桥梁


Flow Agent提供类似传统编程语言的流程控制,但使用YAML形式。虽然Flow Agent不太声明式,但它确保机器人和用户之间的所有交互都严格遵循预定义的流程,这对于需要严格流程的金融、医疗等领域尤为重要。


Flow Agent包含:


  • 用户步骤:定义用户输入的处理方式
  • 机器人步骤:定义机器人的回复内容
  • 控制结构:包括条件判断、循环等


这种结构化的对话流程设计使得业务逻辑清晰可见,便于审查和修改,特别适合有严格合规要求的行业应用。


Ensemble Agent:多Agent协调的指挥官


Ensemble Agent确定给定用户输入和对话上下文下应该响应的Agent。在多代理系统中,需要一个调度策略来管理谁响应什么,Ensemble Agent就扮演这一角色。


ADL允许不同的协调策略:


  • 简单轮询基于规则的分配上下文感知调度


实际上可以在prompt字段中使用自然语言描述这些策略。这种灵活性使得复杂的多代理系统能够协同工作,为用户提供连贯一致的体验。


"main" Agent:程序的入口点


与编程语言类似,ADL需要一个明确的入口点。ADL定义了一个特殊关键字"main",表示声明聊天机器人初始化过程的唯一代理。它可以是名为main的任何类型的代理(流代理、整体代理、LLM代理或KB代理),这种设计使得ADL程序的启动过程清晰明了,避免了歧义和混淆。


main Agent通常负责初始设置和代理选择,确保对话从正确的起点开始。


与外部服务的无缝接口


ADL支持与外部服务交互,这可以通过多种方式实现:


  • 自定义函数:从数据库、API等源检索信息或更新内部状态
  • 工具调用:在LLM代理内集成自定义函数
  • 第三方代理:通过标准化接口在必要时接管对话


这些接口机制极大地扩展了ADL的能力范围,使其能够处理更复杂的实际业务场景和需求。


自定义函数:扩展ADL的能力


在Agent声明中提到的所有函数都必须有相应的Python实现。ADL使用关键字"tools",后跟一个文件名列表,来导入所有相关的Python脚本。


自定义函数必须遵循特定格式,以便调用者能正确解释函数的参数和返回值,这种设计使得函数调用过程透明且一致,减少了错误和歧义的可能性。


自定义函数为ADL提供了扩展性,使聊天机器人能够:


  • 与企业现有系统和数据库集成执行复杂的业务操作访问外部API和服务


工具调用:LLM与外部功能的桥梁


工具调用发生在LLM代理需要调用外部函数时,在这种情况下,函数名应该在LLM代理的提示中明确提及。ADL会读取Python代码并将其转换为LLM所需的格式,无需显式编写符合严格规范的函数请求。


这种自动转换机制大大简化了工具调用的过程,降低了开发人员的负担和出错的可能性。工具调用使LLM Agent能够执行超出语言模型能力范围的操作,如数据库查询、API调用或复杂计算。


第三方代理:扩展ADL的生态系统


ADL在未来可以扩展支持第三方代理,通过利用自定义函数,ADL可以直接支持在执行期间不与用户交互的第三方代理。


对于交互式代理,可以通过在现有四种代理类型中添加另一种代理类型(外部代理)来实现,这将使与外部代理共享对话上下文和状态的方式与内部代理类似。


这种可扩展性为ADL创建了一个开放的生态系统,使其能够与各种专业服务和工具集成。


实际应用案例


用


研究者提供了多个ADL的实际应用案例,展示了其在不同场景下的适用性和灵活性:


  • 购物助手:处理订单、配送和折扣逻辑的电商聊天机器人
  • 知识库应用:使用KB Agent处理文档检索和常见问题解答
  • 零售银行服务:处理严格的金融业务流程和安全要求


这些案例为不同行业的开发者提供了参考和灵感,帮助他们快速理解和应用ADL。


案例研究:自然语言Shell命令器


用


图示对比了使用ADL和传统编程语言实现自然语言Shell命令器的方法:


  • 传统方法:将自然语言理解作为程序的一个组件,通过常规编程显式管理所有其他控制逻辑
  • ADL方法:使用自然语言提示包含所有控制逻辑,只将运行命令部分留给Python程序


这种对比鲜明地展示了ADL的声明式特性和简洁性,以及它如何减少样板代码和复杂控制流。这个案例展示了ADL如何简化自然语言界面的开发,使创建交互式命令行工具变得更加直观和高效。


案例研究:零售银行机器人


研究者详细介绍了在ADL中实现Rasa(一个知名的开源对话AI框架)启动包中的零售银行机器人。这个机器人包括多种功能:


  • 资金转账余额查询管理收款人阻止卡片


这个案例研究展示了ADL如何处理复杂的业务逻辑和工作流程,同时保持代码的简洁性和可读性,这对于需要频繁调整业务规则的金融行业尤为重要。


通过对比ADL和传统方法的实现,可以清楚地看到ADL在降低开发复杂度和提高可维护性方面的优势。


ADL的开发工具与生态系统


除了语言本身,ADL还提供了一套开发工具和生态系统,帮助开发者更高效地创建和管理聊天机器人。


MICA的GUI界面功能丰富:


  • 实时编辑和测试
  • 从本地加载预构建的机器人模板
  • 状态跟踪
  • 功能监控对话状态和代理参数


这些工具大大降低了ADL的学习曲线,使非技术人员也能参与到聊天机器人的开发中来。在企业环境中,这意味着业务部门可以更直接地参与客服机器人的设计和优化,减少了沟通成本和开发周期。


语言规范:确保一致性和互操作性


ADL 1.0是一种符合YAML规范的描述性语言,完整的ADL程序由多个代理对象组成。ADL将继续发展其与工具调用、第三方代理和外部资源的接口,通过诸如模型上下文协议(MCP)等协议。


这确保了ADL代码在不同环境和系统中的一致性和互操作性,增强了其长期价值和适用性。标准化的语言规范也为工具开发和社区贡献创造了条件,为ADL的长期发展奠定了基础。


写在最后:ADL对Agent开发的影响


ADL是一种简单、声明式的语言,旨在为面向任务的聊天机器人提供多代理系统的清晰定义。通过利用自然语言编程,ADL使领域专家能够在不需要广泛编程专业知识的情况下开发和管理复杂的对话系统。


这种设计理念使得构建智能聊天机器人变得前所未有的简单和高效,为非技术背景的人员提供了一个功能强大却易于使用的Agent开发工具,这可能对整个智能助手和客服行业产生深远影响。



文章来自微信公众号 “ AI修猫Prompt ”,作者 AI修猫Prompt


用



1
AI工作流

【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。

项目地址:https://github.com/n8n-io/n8n

在线使用:https://n8n.io/(付费)


【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。

项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file



【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。

项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file

在线使用:https://vectorvein.ai/(付费)

2
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

3
知识库

【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。

项目地址:https://github.com/labring/FastGPT

4
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI

5
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0

IOS下载
安卓下载
微信群
沪ICP备2023015588号