【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(2):Agent接口
CangjieMagic框架:使用华为仓颉编程语言编写,专门用于开发AI Agent,支持鸿蒙、Windows、macOS、Linux等系统。这篇文章剖析剖析一下 CangjieMagic 框架中的 Agent 接口设计。
CangjieMagic框架:使用华为仓颉编程语言编写,专门用于开发AI Agent,支持鸿蒙、Windows、macOS、Linux等系统。
这篇文章剖析一下 CangjieMagic 框架中的 Agent 接口设计。
1 Agent 接口概述
首先让我们看看 agent.cj 这个文件定义了什么。这个文件位于 magic.core.agent 包中,定义了一个名为 Agent 的公共接口,代表智能代理的核心抽象。
2 属性详解
这个接口定义了智能代理需要包含的各种核心属性,就像我们人类需要名字、技能、记忆一样,AI Agent 也需要这些关键组件:
2.1 基本属性
- 名称 (name): 每个代理都有自己的名字,就像我们每个人都有名字一样。
- 描述 (description): 代理的功能说明,告诉用户这个代理能做什么。
2.2 思维控制
- 温度值 (temperature): 这是控制 LLM 输出随机性的参数,就像调节人的思维发散程度。
Option<Float64>表示这个属性是可选的,可以为空- 温度值越高,回答越随机创新;越低,回答越确定稳定
2.3 行为指导
- 系统提示 (systemPrompt): 这就像是给代理的工作手册,定义了代理的角色和行为准则。
2.4 工具使用
- 工具管理器 (toolManager): 代理可以使用的工具集合,就像人类使用工具扩展能力一样。
- 工具可以是计算器、搜索引擎、代码执行器等
2.5 思维与执行
- 聊天模型 (model): 代理使用的大语言模型,是代理的"大脑"。
- 执行器 (executor): 代理的执行引擎,负责实际执行代理的决策过程。
2.6 知识获取
- 检索器 (retriever): 可选的检索组件,允许代理从外部知识库获取信息。
- 这就像人类可以查阅资料来增强自己的知识
2.7 记忆存储
- 记忆 (memory): 可选的记忆组件,让代理能够记住过去的对话。
- 这使得代理可以像人类一样,有上下文记忆
2.8 行为监控
- 拦截器 (interceptor): 可选的拦截器,可以在代理执行过程中进行干预。
- 这就像是代理的"自我监督"机制
3 代理的核心功能
Agent 接口定义了两个关键函数:
3.1 同步对话 (chat)
func chat(request: AgentRequest): AgentResponse
这个函数接收一个 AgentRequest 对象,返回一个 AgentResponse 对象。就像我们问一个问题,然后等待回答。
细看 AgentRequest,它包含:
- 当前用户问题 (question)
- 之前的对话历史 (dialog)
- 是否输出详细执行信息的标志 (verbose)
而 AgentResponse 则包含:
- 执行结果内容 (content)
- 执行过程的内部信息 (execInfo)
3.2 异步对话 (asyncChat)
func asyncChat(request: AgentRequest): AsyncAgentResponse
这个函数提供了流式返回的能力,可以逐步看到回答生成的过程,而不必等待完整回答。
4 与执行器的关系
Agent 接口与 AgentExecutor 密切相关:
AgentExecutor 接口定义了执行器的核心功能:
- 同步执行
run函数 - 异步执行
asyncRun函数
这种设计将决策逻辑与代理属性分离,符合单一职责原则。
5 生活中的类比
Agent 就像一位助手:
- 名字和描述就是助手的身份信息
- 温度值就像是助手的性格特点(严谨或创意)
- 系统提示就像是给助手的工作手册
- 工具管理器就像是助手可以使用的工具箱
- 聊天模型就像是助手的大脑和思维方式
- 执行器就像是助手的行动能力
- 检索器就像是助手可以查阅的资料库
- 记忆就像是助手记笔记的能力
- 拦截器就像是助手的自我监督机制
6 实际应用案例
假设我们要创建一个客服助手,我们可以这样配置:
- name: “客服小智”
- description: “专业解答产品问题的AI助手”
- temperature: 0.3(保持回答的确定性)
- systemPrompt: “你是一位专业的客服代表,总是礼貌、准确地回答问题…”
- toolManager: 配置产品查询、订单查询等工具
- model: 选择适合客服场景的LLM
- executor: 使用适合客服场景的执行策略
- retriever: 连接到产品知识库
- memory: 启用对话记忆,记住用户的问题历史
- interceptor: 添加敏感信息过滤
这样配置的Agent就能像真正的客服一样工作,回答用户问题,查询信息,并保持对话的连贯性。
7 总结
仓颉语言的Agent接口设计非常全面,涵盖了构建智能代理所需的各个核心组件。通过这个设计,我们可以:
- 灵活配置代理的各种属性
- 控制代理的思维方式(温度值)
- 为代理赋予工具使用能力
- 实现同步和异步对话模式
- 让代理拥有记忆和知识检索能力
- 监控和干预代理的行为
这种模块化、灵活的设计,使得我们可以根据不同场景和需求,构建出各种功能强大的AI代理。
更多推荐


所有评论(0)