跳到主要内容

介绍

本文档主要介绍了基于 云函数2.0 开发AI智能体,了解 云函数2.0,可查看文档:https://docs.cloudbase.net/cbrf/intro

云开发目前支持两种类型的智能体服务:

  • 云开发Agent:基于平台预设智能体服务快速搭建的AI智能体,无需代码开发,通过可视化界面配置人设、知识库、开场白、推荐问题等,5分钟即可完成基础智能体部署,适合通用场景快速上线。
  • 函数型Agent:基于 云函数2.0 开发AI智能体。该类型的开发的AI智能体,开发者能够完全掌控业务逻辑,满足高度个性化的需求。在函数中,可以调用第三方模型、设计复杂的决策流程、使用开源的智能体开发框架,实现智能体的感知(Perception)规划(Planning)行动(Action) 等方面的能力,从而更好地实现个性化需求。

两种智能体的技术架构如图所示:

cbrf-aiagent

对前端来说,两种智能体的使用方式是一致的,都可以通过 Agent UI 组件SDKHTTP API 等方式对接智能体后端服务。开发者可以根据业务需求选择契合业务场景的智能体开发方式。

基于云函数开发一个AI智能体,是一个后端适配前端的过程,即,云函数中实现与前端约定好的 API接口,即可实现与前端的适配对接。

借助云开发提供的AI智能体开发框架 @cloudbase/aiagent-framework,仅需几行代码,即可快速实现一个基于 云函数2.0 的简单空白智能体,示例代码如下:

const { IBot } = require("@cloudbase/aiagent-framework");
const { BotRunner } = require("@cloudbase/aiagent-framework");

const ANSWER = "你好,我是一个智能体,但我只会说这一句话。";

/**
* @typedef {import('@cloudbase/aiagent-framework').IAbstractBot} IAbstractBot
*
* @class
* @implements {IAbstractBot}
*/
class MyBot extends IBot {
async sendMessage() {
return new Promise((res) => {
// 创建个字符数组
const charArr = ANSWER.split("");

const interval = setInterval(() => {
// 定时循环从数组中去一个字符
const char = charArr.shift();

if (typeof char === "string") {
// 有字符时,发送 SSE 消息给客户端
this.sseSender.send({ data: { content: char } });
} else {
// 字符用光后,结束定时循环
clearInterval(interval);
// 结束 SSE
this.sseSender.end();
res();
}
}, 50);
});
}
}

/**
* 类型完整定义请参考:https://docs.cloudbase.net/cbrf/how-to-writing-functions-code#%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B
* "{demo: string}"" 为 event 参数的示例类型声明,请根据实际情况进行修改
* 需要 `pnpm install` 安装依赖后类型提示才会生效
*
* @type {import('@cloudbase/functions-typings').TcbEventFunction<unknown>}
*/
exports.main = function (event, context) {
return BotRunner.run(event, context, new MyBot(context));
};