coze智能体发布成API并在WEB端进行对话调用

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);
                    }
                  });
                }

注:流式响应事件说明
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值