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

news2024/11/25 10:27:34

前言

由于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 os

import aiohttp
import chainlit as cl
import json

coze_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.coloradmin.cn/o/2063579.html

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

相关文章

[Python可视化]空气污染物浓度地图可视化

[Python可视化]空气污染物浓度地图可视化,果然是路边浓度最大 在本篇文章中,我将展示如何使用 Python 结合 OSMnx、NetworkX 和 GeoPandas 等库,计算给定路径的最短路线,并基于该路径穿过的网格单元计算总污染量。最终&#xff0c…

uniapp 修复使用 uni.saveImageToPhotosAlbum 方法在部分安卓手机上保存失败

场景:使用 uni.saveImageToPhotosAlbum 保存图片,其他手机都是可以的,但在鸿蒙系统的手机上出现了bug,报错Object {errMsg:"savelmageToPhotosAlbum:fai..errMsg:savelmageToPhotosAlbum:fail invalid filetype"} 原因&…

数学建模学习(116):全面解析梯度下降算法及其在机器学习中的应用与优化

文章目录 1.梯度下降简介1.1 梯度下降的数学原理1.2 学习率的选择2 梯度下降变体3.梯度下降优化器3.1 动量法(Momentum)3.2 AdaGrad3.3 RMSprop3.4 Adam3.5 Python 使用不同优化器训练线性回归模型4.案例:使用梯度下降优化加利福尼亚房价预测模型4.1. 数据准备4.2. 模型训练…

【dotnet】Ubuntu 24.04安装dotnet 8.0报错

我的环境是Ubuntu 24.04,64位,使用azure的虚拟机。 报错文字如下: kidfuazurefu:~$ sudo apt install dotnet-sdk-8.0 Reading package lists... Done Building dependency tree... Done Reading state information... Done Some packages c…

数学生物学-3-固定点、稳定性和蛛网图(Fixed Points, Stability, and Cobwebbing)

在前一篇博客中,我们研究了一些离散时间模型的例子。特别是,我们推导出了离散逻辑方程的重要例子。 数学生物学-2-离散时间模型(Discrete Time Models)-CSDN博客 在本篇文章中,我们将考虑离散时间模型的一般形式(在数…

超声波水表是什么?量程比又是什么?

一、超声波水表概述 1.定义: 超声波水表是一种利用超声波技术来测量水流速度,进而计算出流经管道的水体积流量的计量设备。它通过发送和接收超声波信号的时间差来确定水流的速度,从而精确地计量水的流量。 2.工作原理: 超声波…

勇闯计算机视觉(第一关--环境激活)

以下内容,皆为原创,制作实属不易,多谢帅锅和镁铝观看和关注。 一.什么是计算机视觉 计算机视觉是人工智能的一个分支,它使计算机能够从图像或多维数据中解释和理解视觉信息。计算机视觉的目标是模拟人类视觉系统的能力&#xff0c…

普元EOS-数据实体运行时动态增加property

1 前言 在Java开发读取数据的时候,一般都采用ORM方式将数据表的字段映射到实体对象中。 数据表中有一个字段,实体对象就有一个字段。 但很多时候,我们在读取的数据和显示的数据不同,比如,读取的是部门id&#xff0c…

java多线程(七)AQS(AbstractQueuedSynchronizer)技术解析:以赛跑起跑场景为例

AQS概括 核心思想 AQS(AbstractQueuedSynchronizer)是Java并发包中的一个核心同步器框架,它定义了一套多线程访问共享资源的同步机制。 其核心思想是:利用一个volatile的int类型的变量state来表示同步状态,并通过一…

微信自动回复,周末也能轻松应对!

相信很多人都有过这样的经历:休息的时候,手机响个不停,生怕漏掉一个客户消息,结果一不小心就让客户流失了! 要想解决这个问题,你只需一个多微管理系统,让我们一起来看看它的自动回复设置吧&…

这个方法完美解决我的Jenkins插件不能下载安装的问题

1、打开这个地址(前提是jenkins是开启的哦)http://localhost:8080/pluginManager/advanced 。 2、在最下面update site 改成http://updates.jenkins.io/update-center.json 。 3、服务列表中关闭jenkins,再重新启动,就能联网下载了…

叉车AI行车防撞监控系统方案,二级报警区域,守护人与车的安全!

九盾叉车AI行车防撞监控系统安装在叉车驾驶室顶的前后单独安装ADAS摄像头,结合深度学习算法以完成机器视觉的识别工作,分别安装在车辆护顶架前后方,进行180二级区域视频监控,同时解决二个方向维度的视野盲区,可根据距离…

数据结构(6.2_4)——图的基本操作

注&#xff1a;只探讨邻接矩阵和邻接表怎么实现图的基本操作 Adjacent(G,x,y):判断图G是否存在边<x,y>或(x,y) 领接矩阵 邻接表 有向图&#xff1a; Neighbors(G,x):列出图G中与结点x邻接的边 有向图 InsertVertex(G,x):在图G中插入顶点x DeleteVertex(G,x):在图G中删除…

【蓝桥杯集训100题】scratch时间计算 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第26题

目录 scratch时间计算 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

125-隧道技术SMBICMP正反向连接防火墙出入规则上线

参考&#xff1a;【内网安全】 隧道技术&SMB&ICMP&正反向连接&防火墙出入规则上线_第125天:内网安全-隧道技术&smb&icmp&正反向连接&防火墙出入规则上线-CSDN博客 怎么知道对方是出站限制还是入站限制呢&#xff1f; 上传正向和反向木马进行测…

面试准备算法

用最少数量的箭引爆气球 class Solution { public:class MyCompare{public:bool operator()(vector<int>& a, vector<int>& b){return a[0] < b[0];}};int findMinArrowShots(vector<vector<int>>& points) {int count 1;MyCompare c…

啥是粘包和半包,咋解决?

写在前面 本文看下半包和粘包。 1&#xff1a;什么是半包和粘包&#xff0c;以及如何解决 因为网络传输数据都是一个数据包一个数据包传输的&#xff0c;就像这样&#xff1a; 在读取这些数据包时如果读到了数据包A的一部分就是半包。如果是读到了数据包A和数据包B&#xf…

从网易云音乐宕机事件看软件危机管理-如何保持服务稳定性

引言:当音乐突然停止 想象一下,你正沉浸在网易云音乐精心为你推荐的歌单中,享受着悠闲的周末下午。突然,音乐戛然而止,App反复崩溃,网页上只剩下冰冷的"502 Bad Gateway"。这不是科幻小说的情节,而是2023年8月19日下午真实发生在数百万网易云音乐用户身上的事。 作…

软考-软件设计师(程序设计语言习题)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

「Java 项目详解」API 文档搜索引擎(万字长文)

目录 运行效果 一、项目介绍 一&#xff09;需求介绍 二&#xff09;功能介绍 三&#xff09;实现思路 四&#xff09;项目目标 二、前期准备 一&#xff09;了解正排索引 二&#xff09;了解倒排索引 三&#xff09;获取 Java API 开发文档 四&#xff09;了解分词…