扣子coze 智能体 创建AI会话
不同用户登录,都能看到所有的会话记录——实现会话隔离(纯js)
1.访问Coze官网(www.coze.cn),注册并登录
2.进入主界面后,点击左侧(创建)

扣子 Coze 教程3. 配置智能体基础信息(根据个人需求进行配置,在写人设与回复逻辑的过程中,简单描述角色、要求,再利用扣子(coze)的AI优化功能进行相关的完善。)

4.创建知识库(支持丰富的导入途径,涵盖了本地文档、网络数据源、Notion和飞书等多种选择)

5.工作流配置请参考(https://blog.csdn.net/calmkey/article/details/)
6.点右上角发布之后,进入api就可以拿到代码在自己项目中使用




7.智能体就运行起来了




1 .创建 Oauth 应用并授权,跟着文档一步步操作(文档地址:https://www.coze.cn/open/docs/developer_guides/oauth_jwt)
第五步会生成一个公钥指纹,另外会默认下载一个是要文件(这个一定要保存好)

![]()
Header、Payload,以及私钥(我理解这个就是进行加密,最终会生成一个JWT token)


用这个替换CozeWebSDK.WebChatClient中的auth.token
Payload中的session_name,用户在业务侧的 UID,针对不同用户使用不同的session_name
所以按照以上思路,
1、我们需要找到一个加密工具,把这三者(Header、Payload,以及私钥)进行加密,这个用到了jsrsasign(cdn地址:https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/8.0.20/jsrsasign-all-min.js)

2、拿到JWT token 进行api请求,并创建智能体

上面我用了一个cozeWeb,因为我的业务需求是只用用户登录了才显示智能体,退出登录了需要注销,所以当用户退出登录之后,调用cozeWeb.destroy()
源码:
// 先引入cdn库
https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/8.0.20/jsrsasign-all-min.js
https://lf-cdn.coze.cn/obj/unpkg/flow-platform/chat-app-sdk/1.2.0-beta.10/libs/cn/index.js
// js文件
let cozeWeb = null
// 配置参数(替换为你的实际信息)
const COZE_CONFIG = {
botId: ”, //智能体 ID
appId: ”,//OAuth ID 第五步创建应用的ID
publicKey: ”, //OAuth 公钥
privateKey:“ //OAuth 私钥,全复制进来
};
// 生成符合Coze要求的JWT
function generateCozeJwt(userUid) {
const header = {
alg: ‘RS256’,
typ: ‘JWT’,
kid: COZE_CONFIG.publicKey
};
const currentTime = Math.floor(Date.now() / 1000);
const payload = {
iss: COZE_CONFIG.appId,
aud: “api.coze.cn”,
jti: Math.random().toString(36).substr(2, 32) + Date.now(),
iat: currentTime,
exp: currentTime + 3600,
session_name: userUid
};
const formattedPublicKey = COZE_CONFIG.privateKey;
return window.KJUR.jws.JWS.sign(
header.alg,
JSON.stringify(header),
JSON.stringify(payload),
formattedPublicKey
);
}
// 获得Token并创建Coze智能体界面
async function getAccessToken(jwt) {
try {
const response = await fetch(“https://api.coze.cn/api/permission/oauth2/token”, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘Authorization’: `Bearer ${jwt}`
},
body: JSON.stringify({
grant_type: ‘urn:ietf:params:oauth:grant-type:jwt-bearer’,
duration_seconds: 900
})
});
if (!response.ok) {
throw new Error(`获取token失败,HTTP状态码: ${response.status}`);
}
const data = await response.json();
cozeWeb = new CozeWebSDK.WebChatClient({
config: {
bot_id: COZE_CONFIG.botId
},
auth: {
type: ‘token’,
token: data.access_token,
onRefreshToken: () => data.access_token
},
ui: {
// 基础UI配置:应用图标、布局类型、语言及层级
base: {
icon: CozeLogo, // 应用图标URL
layout: ‘pc’, // 布局类型:’pc’适配电脑端,’mobile’适配移动端
lang: ‘zh-CN’, // 系统语言:’en’英文,’zh-CN’中文
zIndex: 1000 // 聊天框层级
},
// 控制标题栏及关闭按钮显示
header: {
isShow: true, // 是否显示顶部标题栏
isNeedClose: true, // 是否显示关闭按钮
},
// 控制右下角悬浮球显示
asstBtn: {
isNeed: true // 展示悬浮球
},
// 底部文案配置(修复:补充linkvars和footer的闭合括号+逗号)
footer: {
isShow: false, // 是否显示底部版权模块
}, // 修复:补充footer的闭合括号
// 会话列表配置:控制会话列表显示
conversations: {
isNeed: true, // 是否需要显示会话列表
},
}
});
} catch (error) {
throw new Error(`获取Access Token失败: ${error.message}`);
}
}
// 获取用户唯一标识
function getUserUid() _${Math.random().toString(36).slice(-6)}`;
localStorage.setItem(‘coze_visitor_id’, visitorId);
}
return visitorId;
}
// 初始化Coze聊天
function initCozeChat()
const userUid = getUserUid();
const jwtToken = generateCozeJwt(userUid);
getAccessToken(jwtToken);
}
// 初始化流程
export const init = async () => {
try {
initCozeChat()
} catch (error) {
console.error(‘初始化失败:’, error.message);
}
}
export const destroy = () => {
cozeWeb.destroy()
}
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/263864.html原文链接:https://javaforall.net
