coze智能体发布成API并在WEB端进行对话调用
1、发布coze智能体
在coze平台“项目开发”菜单,点击要发布的智能体进入详情页面,在详情页面右上角点击“发布”按钮,打开发布页面,选择发布渠道为API。



2、获取API调用所需token
1.下载示例文件,并解压


2.powershell运行示例文件,打开coze授权页面,获取token



3、封装方法进行对话调用
/**
* 获取扣子模型应答数据
* @param {string} inputTxt 用户输入的文本
* @param {string} fileId 文件ID, 文件上传扣子平台后返回的ID
* @param {string} token 授权TOKEN
* @param {string} botId 智能体ID,智能体的开发页面URL中bot参数后的数字就是智能体ID
*/
const getCozeChatlData = async (inputTxt, fileId, token, botId) => {
const additionalMessages = []; // 对话的附加信息
if(inputTxt){
additionalMessages.push({
"content": inputTxt,
"content_type": "text",
"role": "user",
"type": "question"
});
}
if(fileId){
additionalMessages.push({
"content": JSON.stringify([
{
"type": "image",
"file_id": fileId
}
]),
"content_type": "object_string",
"role": "user",
"type": "question"
});
}
const response = await fetch('https://api.coze.cn/v3/chat', {
method: 'POST',
body: JSON.stringify({
bot_id: botId,
user_id: '123456789', // 标识当前与智能体对话的用户
stream: true,
additional_messages: additionalMessages,
}),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer '+token,
}
});
// 创建一个可读流
const reader = response.body.getReader();
const decoder = new TextDecoder();
// 循环读取数据
while (true) {
const { done, value } = await reader.read();
if (done) { break; }
// 解码并处理数据
const chunk = decoder.decode(value, { stream: true });
// 流式数据(实际应用中数据可能已经是分块的)
const lines = chunk.split('\n');
for(let i = 0; i < lines.length; i++){
if(lines[i].trim()){
try {
// conversation.message.completed对话完成事件。
if(lines[i] == 'event:conversation.message.completed'){
// 进行相关数据处理
break;
}
} catch (error) {
console.log(error);
}
}
}
}
}
/**
* 获取扣子上传文件数据
* @param {File} tempFile 文件对象
* @param {string} token 授权TOKEN
*/
const getCozeFilelData = (tempFile, token) => {
const formData = new FormData();
formData.append('file', tempFile);
fetch('https://api.coze.cn/v1/files/upload', {
method: 'POST',
body: formData,
headers: {
// 'Content-Type': 'multipart/form-data',
'Authorization': 'Bearer '+token,
}
}).then(res =>{
return res.json();
}).then(res =>{
// 存储上传到扣子平台的文件信息
// 返回数据格式如下示例:
// {
// "bytes": 19287,
// "created_at": 1758525881,
// "file_name": "出差单.jpg",
// "id": "7552810760939323455"
// }
// 上传成功,进行相关数据处理
if(res.code === 0){
// 示例:发送消息给扣子模型
getCozeChatlData('', res.data.id);
}
});
}
注:流式响应事件说明

1259

被折叠的 条评论
为什么被折叠?



