小程序/小组件从基础库从 x.x.x 版本开始内置了 Agent 对话能力,开发者可以直接通过小程序/小组件内,通过 xhs.cloud.AI 调用 agent 进行对话
... existing code ... async onLoad() { console.log("页面加载"); await this.initAgent(); }, // 初始化agent async initAgent() { try { const agentId = "921e2e0eaf004d7aa376ee8985e929bb"; this.agent = xhs.cloud.AI.createAgent({ agentId, env: 'production', version: 'latest' }); console.log("Agent初始化成功"); } catch (error) { console.error("Agent初始化失败:", error); xhs.showToast({ title: "Agent初始化失败", icon: "none", }); } } ... existing code ...
开发者调用 xhs.cloud.AI.createAgent 可以得到一个智能体 Agent。Agent 上一共挂载了3个实例属性和7个实例方法,方法的具体参数见JS API文档。
使用示例
... existing code ... async onLoad() { console.log("页面加载"); await this.initAgent(); }, // 初始化agent async initAgent() { try { const agentId = "921e2e0eaf004d7aa376ee8985e929bb"; this.agent = xhs.cloud.AI.createAgent({ agentId, env: 'production', version: 'latest' }); console.log("Agent初始化成功"); } catch (error) { console.error("Agent初始化失败:", error); xhs.showToast({ title: "Agent初始化失败", icon: "none", }); } } ... existing code ...
开发者调用 xhs.cloud.AI.createAgent 可以得到一个智能体 Agent
xhs.cloud.AI.createAgent({ agentId, accessToken, env: 'production', version: 'latest' });
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
agent | Agent | Agent实例 | x.x.x |
agentId | 属性 | 智能体ID | x.x.x |
agentVersion | 属性 | 智能体版本 | x.x.x |
env | 属性 | 环境 | x.x.x |
sendMessage | 同步方法 | 与智能体进行对话 | x.x.x |
getAgentInfo | 异步方法 | 获取智能体信息 | x.x.x |
getHistoryMessages | 异步方法 | 获取历史对话信息 | x.x.x |
getConversations | 异步方法 | 获取当前智能体会话 | x.x.x |
属性名 | 是否必传 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|---|
agentId | 是 | string | 智能体agentid开放平台获取 | x.x.x |
env | 是 | string | 环境变量,可选值:development 开发环境智能体、production 生产环境智能体 | x.x.x |
version | 当 env 为 development 必传、当 env 为 production,默认 latest | string | 智能体函数版本:development - 可能存在多个开发版本,不同智能体存在差异、production - 仅存在一个版本,默认 latest | x.x.x |
使用示例
async sendMessage() { const agent = this.getAgent(); if (!agent) return; // 重置状态 this.setData({ thinkingText: "", streamText: "", isThinkingCollapsed: false, thinkingScrollIntoView: "", replyScrollIntoView: "", }); // 显示加载中 xhs.showLoading({ title: "正在调酒中...", }); const content = '{"user_taste": "酸", "user_mood": "开心"}'; console.log("准备调用 Agent AI API,参数:", content); let thinkingText = ""; let result = ""; // 使用回调方式发送消息 const { message, onMessage, onSuccess, onError } = agent.sendMessage({ msg: content, history: [], }); onSuccess((result) => { console.log("请求成功:", result); console.log("API调用成功,返回结果:", result); xhs.hideLoading(); // 检查是否需要自动折叠思考卡片 this.checkAutoCollapse(); }); // 监听流式消息 onMessage((chunkStr) => { console.log("收到消息块:", chunkStr, "api-message", message); xhs.hideLoading(); if (chunkStr === "[DONE]") { return; } let chunk = ""; try { chunk = JSON.parse(chunkStr); } catch (error) { console.error("解析消息块失败:", error); return; } // 解析消息块 if (chunk.choices && chunk.choices[0] && chunk.choices[0].message) { const message = chunk.choices[0].message; // 处理思考内容 if (message.reasoning_content) { thinkingText += message.reasoning_content; this.setData({ thinkingText: thinkingText, }); this.scrollThinkingToBottom(); } // 处理回复内容 if (message.content) { result += message.content; this.setData({ streamText: result, }); this.scrollReplyToBottom(); } } }); // 监听错误回调 onError((error) => { console.error("请求失败:", error); xhs.hideLoading(); xhs.showToast({ title: "生成失败,请重试", icon: "none", }); }); },
function sendMessage(props: { botId: string; msg: string; history?: Array<{ role: string; content: string; }>; });
属性名 | 类型 | 说明 |
---|---|---|
onMessage | function | 消息回调 |
onError | function | 失败回调 |
onSuccess | function | 成功回调 |
abort | function | 中断消息收发 |
message | object | 当前发送的消息 |
// 使用回调方式发送消息 const { message, onMessage, onSuccess, onError, abort } = agent.sendMessage({ msg: content, history: [], }); abort()
使用示例
const agent = this.getAgent(); if (!agent) return; const agentInfo = await agent.getAgentInfo(); console.log("res", agentInfo);
const agentInfo = await agent.getAgentInfo();
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
agentInfo | object | 智能体信息 | x.x.x |
hasConversation | boolean | 是否存在会话 | x.x.x |
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
agent_name | string | 智能体名称 | x.x.x |
agent_id | string | 智能体id | x.x.x |
agent_icon | string | 智能体图标 | x.x.x |
使用示例
// 获取历史记录 async getChatRecords() { const agent = this.getAgent(); if (!agent) return; const response = await agent.getConversations(); console.log("=== conversations", response); if (response.code !== 0) { xhs.showToast({ title: "获取历史记录失败", icon: "none", }); return; } const conversations = response.data.conversations; if (conversations && conversations.length > 0) { const res = await agent.getHistoryMessages({ conversation_id: conversations[0].id, cursor: 1, count: 10, sort: "desc", }); console.log("=== getHistoryMessages", res); } },
const agentInfo = await agent.getHistoryMessages({ conversation_id: conversations[0].id, cursor: 1, count: 10, sort: "desc" });
属性名 | 类型 | 字段描述及类型 | 最低支持版本 |
---|---|---|---|
conversation_id | string | 会话 id | x.x.x |
cursor | string | 请求的游标 | x.x.x |
count | number | 分页大小 | x.x.x |
sort | string | 历史记录排序 | x.x.x |
export interface UserRecord { content: string; role: 'user'; } export interface AssistantRecord { content: string; role: 'assistant'; reasoningContent: string; type: MessageType; } export type CreateRecordPairResponse = BaseResponse; export interface ParticipantInfo { id: string; name: string; desc: string; avatar_url: string; } export interface GetHistoryMessagesData { message_list: (UserRecord | AssistantRecord)[]; conversation_id: string; participant_info_map: Record<string, ParticipantInfo>; next_cursor: number; has_more: boolean; }
使用示例
const agent = this.getAgent(); if (!agent) return; const agentInfo = await agent.getConversations(); console.log("res", agentInfo);
const agentInfo = await agent.getConversations();
export interface Conversation { id: string; createAt: string; } export interface GetConversationsData { conversations: Conversation[]; }
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
conversations | 数组 | 会话列表 | x.x.x |
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
id | string | 会话 id | x.x.x |
createAt | string | 会话创建时间 | x.x.x |