免费的真是太香了!Chainlit接入抖音 Coze AI知识库接口快速实现自定义用户聊天界面

前言

由于Coze 只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPT web/open webui等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办?于是,我使用Chainlit实现了一个无缝快速接入Coze 实现自定义用户使用界面的应用,代码清晰简单。还可以自定义logo、欢迎语、网站图标、语言输入、语音设别、文件上传等。

Coze国内版可以免费使用 豆包模型、通义千问 qwen-max , 智谱 GLM-4 128K 、MiniMax 、月之暗面(kimi)、百川智能等llm大模型。这些在他们各自平台上都是收费使用,大约都在0.2元/1000 tokens左右,能免费使用真的太香了!

快速开始

获取coze 的base_url和api_key

coze 国际官网地址 https://coze.com/
coze 国内官网地址 https://coze.cn/

登录Coze 后台,在团队空间里,创建的AI应用,创建完毕后点击进入。
在这里插入图片描述

  • 注意 一定要团队空间里创建,个人空间创建的ai影响,无法通过API访问。

点击发布按钮,进入发布界面。
在这里插入图片描述
勾选,Bot as API,然后点击配置,进入配置界面。

在这里插入图片描述
创建个人访问令牌,拿到令牌token,后面需要配置到环境变量配置文件中。
在这里插入图片描述
最后,返回到发布页面,点击右上角的,发布按钮。每次发布都需要审核,首次发布后,需要等带审核完毕后,才能通过API访问。
在这里插入图片描述

chainlit网页搭建

创建一个文件,例如“chainlit_chat”

mkdir chainlit_chat

进入 chainlit_chat文件夹下,执行命令创建python 虚拟环境空间(需要提前安装好python sdkChainlit 需要python>=3.8。,具体操作,由于文章长度问题就不在叙述,自行百度),命令如下:

python -m venv .venv
  • 这一步是避免python第三方库冲突,省事版可以跳过
  • .venv是创建的虚拟空间文件夹可以自定义

接下来激活你创建虚拟空间,命令如下:

#linux or mac
source .venv/bin/activate
#windows
.venv\Scripts\activate

在项目根目录下创建requirements.txt,内容如下:

chainlit~=1.1.306
aiohttp

在项目根目录下创建app.py文件,代码如下:

import osimport aiohttp
import chainlit as cl
import jsoncoze_bot_id = os.environ["COZE_BOT_ID"]
coze_api_key = os.environ["COZE_API_KEY"]@cl.on_chat_start
def start_chat():cl.user_session.set("message_history", [])@cl.on_message
async def main(message: cl.Message):message_history = cl.user_session.get("message_history")message_history = message_history[-8:]message_history.append({"role": "user", "content": message.content, "content_type": "text"})msg = cl.Message(content="")url = "https://api.coze.cn/v3/chat"headers = {"Authorization": f"Bearer {coze_api_key}","Content-Type": "application/json"}data = {"bot_id": coze_bot_id,"user_id": cl.context.session.id,"stream": True,"auto_save_history": True,"additional_messages": message_history}async for delta in fetch_sse(url, headers=headers, data=json.dumps(data)):await msg.stream_token(delta['content'])await msg.send()message_history.append({"role": "assistant", "type": "answer", "content": msg.content, "content_type": "text"})async def fetch_sse(url, headers, data):async with aiohttp.ClientSession() as session:async with session.post(url, headers=headers, data=data) as response:async for line in response.content:if line:  # 过滤掉空行data = line.decode('utf-8').rstrip('\n\r')# print(f"Received: {data}")# 检查是否为事件类型行if data.startswith('event:'):event_type = data.split(':', 1)[1].strip()  # 提取事件类型# 检查是否为数据行,并且是我们感兴趣的事件类型elif data.startswith('data:') and event_type == 'conversation.message.delta':data = data.split(':', 1)[1].strip()  # 提取数据内容# 如果数据包含换行符,可能需要进一步处理(这取决于你的具体需求)# 这里我们简单地打印出来# print(f"Received data for event 'conversation.message.delta': {data}")yield json.loads(data)
  • coze api文档地址 https://www.coze.cn/docs/developer_guides/coze_api_overview

在项目根目录下创建.env环境变量,配置如下:

COZE_BOT_ID="7361599102180065321"
COZE_API_KEY="pat_key"
  • 如何是私有化部署,COZE_BOT_ID 替换成你创建应用的bot_id
  • bot_id:Bot ID。进入 Bot 的开发页面,开发页面 URL 中 bot 参数后的数字就是 Bot ID。例如https://www.coze.cn/space/341****/bot/73428668***,bot ID 为73428668*****。**
  • COZE_API_KEY 替换成你自己创建的个人访问令牌密匙

执行以下命令安装依赖:

pip install -r .\requirements.txt
  • 安装后,项目根目录下会多出.chainlit.files文件夹和chainlit.md文件

运行应用程序

要启动 Chainlit 应用程序,请打开终端并导航到包含的目录app.py。然后运行以下命令:

 chainlit run app.py -w   
  • -w标志告知 Chainlit 启用自动重新加载,因此您无需在每次更改应用程序时重新启动服务器。您的聊天机器人 UI 现在应该可以通过http://localhost:8000访问。
  • 自定义端口可以追加--port 80

启动后界面如下:
在这里插入图片描述

  • chainlit 可以实现聊天的界面的完全自定义
  • chainlit 可以整理整合开源语音识别、语音播放、文件上传管理等功能
  • 本代码只整合了coze api的对话接口,后续可以接入文件图片上传的接口、历史会话记录等。
  • 当前扣子 API 免费供开发者使用,发起对话 API 的请求频率限制如下:
    • QPS(每秒发送的请求数):2
    • QPM(每分钟发送的请求数):60
    • QPD(每天发送的请求数):3000

相关文章推荐

《Chainlit快速实现AI对话应用的界面定制化教程》
《Chainlit接入DifyAI知识库接口快速实现自定义用户聊天界面》
《Chainlit接入FastGpt接口快速实现自定义用户聊天界面》
《使用 Xinference 部署本地模型》
《Fastgpt接入Whisper本地模型实现语音输入》
《Fastgpt部署和接入使用重排模型bge-reranker》
《Fastgpt部署接入 M3E和chatglm2-m3e文本向量模型》
《Fastgpt 无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题这里)》
《vllm推理服务兼容openai服务API》
《vLLM模型推理引擎参数大全》
《解决vllm推理框架内在开启多显卡时报错问题》
《Ollama 在本地快速部署大型语言模型,可进行定制并创建属于您自己的模型》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源代码一定要加密!10款超级好用的源代码加密软件排行榜

在当今高度竞争的商业环境中,源代码不仅是软件产品的基础,更是企业的核心资产之一。保护源代码免受未经授权的访问和盗窃至关重要。为此,许多企业采用源代码加密软件来为这一重要资产增加额外的安全层。以下是2024年企业通用的十大源代码加密…

SNMP入门笔记

简介 SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于…

session、cookie、token概念介绍

一、Cookie 1、cookie介绍 Cookie是网站为了辨别用户身份而储存在用户本地终端(Client Side)上的小型文本文件。 作用:Cookie主要用于保存用户登录信息、浏览记录等,以便用户再次访问时能够自动识别并提供个性化服务。存储位置…

汽车电子 -- python脚本组包软件版本号

python脚本组包软件版本号 import pandas as pd import click import os import datetimedef cmdGetSwInfo():targetFilePath ../APP.htargetKeyWord #definetargetProgType PROJECT_TYPEtargetSoftware SOFTWARE_VERSIONtargetVersionInfo VERSION_INFO fileRead …

SEO优化:如何优化自己的文章,解决搜索引擎不收录的问题

可以使用bing的URL检查,来检查自己的文章是不是负荷收录准测,如果页面有严重的错误,搜索引擎是不会进行收录的,而且还会判定文章为低质量文章! 检查是否有问题。下面的页面就是有问题,当然如果是误报你也可…

【与C++的邂逅】--- 类和对象(上)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客将讲解C中的类和对象,C是面向对象的语言,面向对象三大特性是封装,继承,多态。学习类和对象,我们可…

[数据集][目标检测]集装箱缺陷检测数据集VOC+YOLO格式4127张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4127 标注数量(xml文件个数):4127 标注数量(txt文件个数):4127 标注…

echart改变legend样式及分页

legend: {type: "scroll",orient: horizontal, // 纵向,默认横向不用写pageIconColor: #1b9aee, //翻页下一页的三角按钮颜色pageIconInactiveColor: #7f7f7f, //翻页(即翻页到头时)// 配置滚动类型的图例pageTextStyle: {color: &…

C语言每日好题(3)

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 #define _CRT_SECURE_NO_WARNING #include <stdio.h> #include <string.h> int main(void) {if ((strlen("abc") - strlen("abcdef")) > 0)printf(">\n")…

十三、OpenCVSharp的目标检测

文章目录 简介一、传统目标检测方法1. 基于滑动窗口的检测2. 特征提取与分类器结合(如 HOG + SVM)3. 级联分类器二、基于深度学习的目标检测1. YOLO 系列算法2. SSD 算法3. Faster R-CNN 算法三、深度学习目标检测模型的训练和部署四、目标检测的性能评估指标1. 准确率、召回…

C++_进阶:AVL树

文章目录 1. AVL树的概念2. AVL树节点的定义3. AVL树的插入4. AVL树的旋转4.1 右单旋4.2 左单旋4.3 左右双旋4.4 右左双旋 5.AVL树的验证6. AVL树模拟实现 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#…

git 学习--GitHub Gitee码云 GitLab

1 集中式和分布式的区别 1.1 集中式 集中式VCS必须有一台电脑作为服务器&#xff0c;每台电脑都把代码提交到服务器上&#xff0c;再从服务器下载代码。如果网络出现问题或服务器宕机&#xff0c;系统就不能使用了。 1.2 分布式 分布式VCS没有中央服务器&#xff0c;每台电脑…

JavaScript === 和 ==

JavaScript 中&#xff0c; 和 是比较操作符。 &#xff08;严格等于&#xff09; 功能&#xff1a;比较两个值是否相等&#xff0c;同时要求它们的类型也必须相同。示例&#xff1a; 5 5 // true&#xff0c;因为类型和数值都相同 5 5 // false&#xff0c;因…

LeetCode 热题100-30 两两交换链表中的节点

两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4…

Elasticsearch 实现距离查询、排序和筛选

Elasticsearch 实现距离查询、排序和筛选 前言 在现代应用中&#xff0c;位置相关的查询需求越来越普遍。无论是查找附近的餐厅、计算两个地点之间的距离&#xff0c;还是根据用户位置进行排序和筛选&#xff0c;Elasticsearch 都提供了强大的地理位置查询功能。本文将介绍如…

将 hugo 博客搬迁到服务器

1. 说明 在 Ubuntu 22.04 上使用 root 账号&#xff0c;创建普通账号&#xff0c;并赋予 root 权限。 演示站点&#xff1a;https://woniu336.github.io/ 魔改hugo主题: https://github.com/woniu336/hugo-magic 2. 服务器配置 建立 git 用户 adduser git安装 git sudo apt …

docker升级docker pull mysql:5.7.37异常

一、使用背景 我们在使用docker拉取mysql命令时&#xff0c;数据库服务器&#xff0c;网络未开通外网&#xff0c;拉取镜像失败 但是我们还是想用docker部署则可以通过以下方式获取 前提&#xff1a;环境网络通可以pull mysql镜像 [rootVM-20-10-centos opt]# docker ps CO…

python | 图片转换为 pdf 实现方法

目录 一、PIL 库简介及安装使用方法 &#xff08;一&#xff09;python 不同版本下 PIL 的使用方法 二、图片转换为 pdf 的两种实现方法 &#xff08;一&#xff09;简易版——pdf 页面尺寸跟随图片大小 &#xff08;二&#xff09;常用版——pdf 每页尺寸统一为 A4 一、P…

ECMAScript 性能优化技巧与陷阱

ECMAScript 性能优化技巧与陷阱 在现代Web开发中&#xff0c;JavaScript&#xff08;ECMAScript的实现&#xff09;已成为构建高性能应用的核心语言。随着应用规模的扩大和复杂性的增加&#xff0c;性能优化变得尤为重要。本文将深入探讨ECMAScript性能优化的技巧与常见陷阱&a…

c++指南 继承和多态

继承和多态 继承的概念 继承是面向对象编程的一个重要特性&#xff0c;它允许新创建的类&#xff08;称为子类或派生类&#xff09;继承现有类&#xff08;称为基类或父类&#xff09;的属性和方法。 基类与子类 基类&#xff1a;提供了可以被继承的属性和方法。 子类&…