【chainlit】使用chainlit部署chatgpt
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
- 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一.chainlit 简介
- 1.官方文档
- 2.python 安装
- 3.安装 chainlit
- 4.启动脚本
- 5.一键启动
- 二.docker 部署
- 1.github 地址
- 2.Dockerfile
- 3.新增依赖
- 4.部署步骤
- 5.修改配置
- 6.访问验证
一.chainlit 简介
1.官方文档
官方文档
github
langchain 方式
python
docker 启动 chainlit
2.python 安装
在 centos 服务器上安装 python3.10
安装依赖
#安装依赖库
sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget sqlite-devel#下载python
wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz#解压
tar -zxvf Python-3.10.0.tgz
安装python3.10
#进入目录
cd Python-3.10.0#校验
./configure --enable-optimizations#编译
make -j 8#安装
sudo make altinstall
验证
#验证
python3.10 --version
3.安装 chainlit
创建虚拟环境:
#创建虚拟环境
python3.10 -m venv myenv#激活虚拟环境
source myenv/bin/activate#退出虚拟环境
deactivate
安装依赖
#安装chainlit
pip install chainlit#安装langchain
pip install langchain
创建azure_demo.py文件,内容如下
import os
import chainlit as clfrom langchain.chat_models import ChatOpenAI
from langchain.schema import (HumanMessage,SystemMessage
)# 公司的key
os.environ["OPENAI_API_KEY"] = 'xxxxx'
os.environ["OPENAI_API_BASE"] = 'https://opencatgpt.openai.azure.com/'
os.environ["OPENAI_API_TYPE"] = 'azure'
os.environ["OPENAI_API_VERSION"] = '2023-05-15'chat = ChatOpenAI(model_name="gpt-35-turbo", engine="gpt-35-turbo")
history = [SystemMessage(content="你是一个聊天机器人,请回答下列问题。\n")]@cl.on_message # this function will be called every time a user inputs a message in the UI
async def main(message: str):# history = [SystemMessage(content="你是一个聊天机器人,请回答下列问题。\n")]history.append(HumanMessage(content=message))res = await cl.make_async(sync_func)()# res = chat(history)# print(res.content)# this is an intermediate step# await cl.Message(author="Tool 1", content=f"Response from tool1", indent=1).send()# send back the final answerhistory.append(res)await cl.Message(content=f"{res.content}").send()def sync_func():return chat(history)
方式二:
import openai
import chainlit as clopenai.proxy = 'http://127.0.0.1:7890'
openai.api_key = "xxxx"
# model_name = "text-davinci-003"
model_name = "gpt-3.5-turbo"
settings = {"temperature": 0.7,"max_tokens": 500,"top_p": 1,"frequency_penalty": 0,"presence_penalty": 0,
}@cl.on_chat_start
def start_chat():cl.user_session.set("message_history",[{"role": "system", "content": "You are a helpful assistant."}],)@cl.on_message
async def main(message: str):message_history = cl.user_session.get("message_history")message_history.append({"role": "user", "content": message})msg = cl.Message(content="")async for stream_resp in await openai.ChatCompletion.acreate(model=model_name, messages=message_history, stream=True, **settings):token = stream_resp.choices[0]["delta"].get("content", "")await msg.stream_token(token)message_history.append({"role": "assistant", "content": msg.content})await msg.send()
4.启动脚本
nohup chainlit run azure_demo.py &
5.一键启动
echo `ps -ef | grep azure_demo | grep -v grep | awk '{print $2}'`
kill -9 `ps -ef | grep azure_demo | grep -v grep | awk '{print $2}'`
cd /kwan/chainlit
python3.10 -m venv myenv
source myenv/bin/activate
nohup chainlit run azure_demo.py >/dev/null 2>&1 & exit
二.docker 部署
1.github 地址
Github
gitcode
2.Dockerfile
FROM python:3.11-slim-buster as builder#RUN apt-get update && apt-get install -y gitRUN pip install poetry==1.4.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ \
&& pip install DBUtils==3.0.3 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ \
&& pip install PyMySQL==1.1.0 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ENV POETRY_NO_INTERACTION=1 \POETRY_VIRTUALENVS_IN_PROJECT=1 \POETRY_VIRTUALENVS_CREATE=1 \POETRY_CACHE_DIR=/tmp/poetry_cacheENV HOST=0.0.0.0
ENV LISTEN_PORT 8000
EXPOSE 8000WORKDIR /appCOPY pyproject.toml poetry.lock ./RUN poetry config repositories.clearlydefined https://pypi.tuna.tsinghua.edu.cn/simple/RUN poetry config cache-dir /kwan/chainlit/demoRUN poetry config virtualenvs.create falseRUN poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR# The runtime image, used to just run the code provided its virtual environment
FROM python:3.11-slim-buster as runtimeENV VIRTUAL_ENV=/app/.venv \PATH="/app/.venv/bin:$PATH"COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}COPY ./demo_app ./demo_app
COPY ./.chainlit ./.chainlit
COPY chainlit.md ./CMD ["chainlit", "run", "demo_app/main.py"]
3.新增依赖
#在pyproject.toml中新增依赖
[tool.poetry.dependencies]
python = "^3.10"
langchain = "0.0.199"
openai = "0.27.8"
chainlit = "0.5.2"
DBUtils = "3.0.3"
PyMySQL = "1.1.0"#执行poetry update会更新poetry.lock文件
poetry update
4.部署步骤
#创建缓存目录
mkdir -p /kwan/chainlit#进入目录
cd /kwan/chainlit#下载源码
git clone https://github.com/amjadraza/langchain-chainlit-docker-deployment-template#进入目录
cd /kwan/chainlit/langchain-chainlit-docker-deployment-template#修改代码
/kwan/chainlit/langchain-chainlit-docker-deployment-template/demo_app#构建镜像
DOCKER_BUILDKIT=1 docker build --target=runtime . -t langchain-chainlit-chat-app:latest#启动容器
docker run -d --name langchain-chainlit-chat-app -p 8000:8000 langchain-chainlit-chat-app#删除容器
docker rm -f langchain-chainlit-chat-app#容器日志
docker logs -f langchain-chainlit-chat-app#所有容器
docker ps -a
5.修改配置
#修改chainlit的配置
cd /kwan/chainlit/.chainlit#修改markdown文件
cd /kwan/chainlit
6.访问验证
#页面验证
http://120.79.36.53:8000/#公司内网地址
http://10.201.0.6:8000/
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:

【chainlit】使用chainlit部署chatgpt
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

测开 | Vue速查知识点
文章目录 Vue知识1. Vue 概述2. Vue 代码格式3. Vue 指令3.1 v-bind & v-model3.2 v-on3.3 v-if和v-show3.4 v-for 4. 生命周期 Vue知识 1. Vue 概述 简介: Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他…...

数据结构——二叉树的基本概念及顺序存储(堆)
目录 一.前言 二.树概念及结构 2.1 树的概念 2.2 树的相关概念 2.3 树的表现 2.4 树在实际中的应用(表示文件系统的目录树结构) 三.二叉树的概念及结构 3.1 概念 3.2 特殊的二叉树 3.3 二叉树的性质 3.4 二叉树的存储结构 3.4.1 顺序存储 3…...
acwing算法基础之基础算法--整数二分算法
目录 1 知识点2 代码模板 1 知识点 有单调性一定可以二分,但在某些情况下,不具有单调性也可以二分。 单调性也可以抽象成某类性质,分界点左边不满足此性质,而右边满足此性质。当然也可以分界点左边满足此性质,而右边不…...
windows C 开发
在win下用C/C开发 非图形界面 应用程序 基础环境包括3个内容1. API : 一般是系统(包括c标准库和其他dll)提供的2. 编译器 : 可以是gnu的,可以是微软提供的3. 编辑器 : 随意都可以 // 不再考虑范围开发方式(API编译器) 原生windows API 使用 Windows API 来编写非视窗代码。…...

C语言——动态内存管理详解(内存结构、动态内存函数、易错题、柔性数组)
本篇概要 本篇文章从基本出发讲述为什么要存在动态内存分配,动态内存函数有哪些,常见的动态内存错误,一些关于内存分配的练习题以及柔性数组的相关知识。 文章目录 本篇概要1.为什么存在动态内存分配1.1为什么要动态分配内存1.2内存结构 2.常…...

2023年全国控制科学与工程学科评估结果 - 自动化考研
考研选择学校时,控制科学与工程考研学校排名情况怎样是广大考研学子十分关心的问题,以下是我们自动化考研联盟为大家整理得最新控制科学与工程学科评估结果情况,还比较权威,供大家参考。 最后祝大家一战成硕,有其他问题欢迎评论区…...
React wangEditor5 使用说明
1、支持包安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangeditor/editor-for-react # 或者 npm install wangeditor/editor-for-react --save2、使用 import wangeditor/editor/dist/css/style.css // 引入 cssimport { useState…...

vue 实现数字验证码功能
需求:写了一个 手机发送验证码后 输入固定验证码的功能 封装成一个组件,如下: <template><div class"conts"><div class"box"><div class"code_list"><div :class"[ code_item, hideIndex 0 ? co…...

【计算机网络】HTTP协议详解(举例解释,超级详细)
文章目录 一、HTTP协议简单介绍 1、1 什么是HTTP协议 1、2 再次理解“协议” 二、HTTP请求 2、1 HTTP的工作过程 2、1、1 demo代码 2、2 URL 介绍 2、2、1 urlencode 和 urldecode 2、3 HTTP 请求格式 三、HTTP响应 3、1 响应demo 3、2 HTTP 响应格式 四、HTTP 请求和响应中的…...

PCB放置过孔技巧
合理的放置过孔能有效的节约面积。 我们根据嘉立创的pcb工艺能力中写出单双面板最小过孔为0.3mm(内径)/0.5mm(外径) 设置过孔尺寸外直径为24mil(0.61mm))内直径为12mil(0.305mm) 嘉立创PCB工艺加工能力范围说明-嘉立…...

淘宝商品详情接口数据采集用于上货,无货源选品上货,采集淘宝天猫商品详情数据
淘宝商品详情接口数据采集可用于上货。先通过关键字搜索接口,抓取到批量的商品ID,再将商品ID传入商品详情数据采集接口的请求参数中,从而达到批量抓取商品详情数据的功能。 接口名称:item_get,获取商品详情数据&#…...
DoS和DDos攻攻击
介绍 DDoS 和 DoS 攻击是我们最常见的网络攻击之一,而且历史相当悠久,算是很经典的两种攻击方式,但它们实际上是如何运作的呢? 虽然两者基本上都能够让工作停摆,但其中有很大的差异,接下来我们将逐一说明&a…...

Python实时采集Windows CPU\MEMORY\HDD使用率
文章目录 安装psutil库在Python脚本中导入psutil库获取CPU当前使用率,并打印结果获取内存当前使用率,并打印结果获取磁盘当前使用情况,并打印结果推荐阅读 要通过Python实时采集Windows性能计数器的数据,你可以使用psutil库。psut…...
【改造中序遍历算法】1038. 从二叉搜索树到更大和树
1038. 从二叉搜索树到更大和树 解题思路 改造中序遍历算法先遍历右子树 然后累加当前节点的值 再遍历左子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode…...

克服网络安全压力:如何掌控无限的云数据
管理云中的数字风险比以往任何时候都更加重要。数字化转型引发的云数据呈指数级增长,为安全分析师创造了一个更大的威胁环境。随着威胁行为者继续危害组织最敏感的数据,这一挑战将会加剧。 预计未来五年全球网络犯罪成本将激增,从 2022 年的…...

【数据结构和算法】--N叉树中,返回某些目标节点到根节点的所有路径
目录 一、前言二、具体实现及拓展2.1、递归-目标节点到根节点的路径数据2.2、list转换为tree结构2.3、tree转换为list结构 一、前言 这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的…...
进程和线程的区别 线程之间共享的资源
线程和进程都是操作系统中的执行单位,但它们在以下几个方面存在区别: 相同处: 1.执行环境:线程和进程都有自己的执行上下文,包括程序计数器、寄存器和栈,可以独立执行指令。 2.并发性:线程和进…...
基于Matlab实现logistic方法(源码+数据)
Logistic回归是一种常用的分类算法,适用于二分类问题。本文将介绍如何使用Matlab实现Logistic回归方法,并通过一个示例演示其应用。 文章目录 引言实现步骤1. 数据准备2. 特征缩放3. 模型训练4. 模型评估 源码数据下载 引言 Logistic回归是一种广泛应用…...

leetCode 121. 买卖股票的最佳时机 贪心算法
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...