【chainlit】使用chainlit部署chatgpt

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐: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

image-20230718175357634

6.访问验证

#页面验证
http://120.79.36.53:8000/#公司内网地址
http://10.201.0.6:8000/

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

HCQ1-1300-D【高速输入】

因为我的PLC固件比较旧。所以有些限制。【比如:编译不报错,下载PLC程序就报故障】我的PLC的高速输入类型只能是【hsi_ref】 所以,程序添加的高速输入模块只能是【1.0.1.0】版本 如果固件版本低,看下固件能支持的类型。选错的话&am…

串口数据包收发

数据包 把属于同一批的数据进行打包和分割,方便接收方进行识别 HEX数据包 思路:一个数据规定四个字节,以0xFF为包头,0xFE为包尾,当检测到0xFF时,接下来四个数据就是数据,接收到0xFE时&#x…

FFMPEG 视频类过滤器学习整理

addroi 作用 在视频帧上标记一块感兴趣的区域。 帧数据被原封不动地传递,但元数据被附加到帧,指示可能影响后续编码行为的感兴趣区域。可以通过多次应用过滤器来标记多个区域。 参数 qoffset: 应用在此区域的量化偏移。 参数范围:-1 ~ …

【JVM】第五篇 垃圾收集器G1和ZGC详解

导航 一. G1垃圾收集算法详解1. 大对象Humongous说明2. G1收集器执行一次GC运行的过程步骤3. G1垃圾收集分类4. G1垃圾收集器参数设置5. G1垃圾收集器的优化建议6. 适合使用G1垃圾收集器的场景?二. ZGC垃圾收集器详解1. NUMA与UMA2. 颜色指针3. ZGC的运作过程4. ZGC垃圾收集器…

开发中的前端和后端

一、引言 前端和后端是Web开发中两个不同的领域。 前端开发主要负责实现用户界面的设计和功能,包括网页的布局、样式和交互效果。前端开发使用HTML、CSS和JavaScript等技术来构建用户在浏览器中直接与之交互的界面。前端开发人员需要关注网页的可视化效果和用户体验…

【软件测试】自动化测试selenium(一)

文章目录 一. 什么是自动化测试二. Selenium的介绍1. Selenium是什么2. Selenium的特点3. Selenium的工作原理4. SeleniumJava的环境搭建 一. 什么是自动化测试 自动化测试是指使用软件工具或脚本来执行测试任务的过程,以替代人工进行重复性、繁琐或耗时的测试活动…

排序算法之【希尔排序】

📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

[管理与领导-112]:IT人看清职场中的隐性规则 - 9 - 付出与回报的关系:先付出,后回报,不行就止损,这才是职场价值交换的本质

目录 一、职场中付出与回报的先后关系 二、付出与回报四象限模型 三、职场专业性的本质 一、职场中付出与回报的先后关系 在职场中,个人的付出和回报之间存在着先后关系。以下是按照先后关系划分的四种类型: 先付出后回报型,不回报&#…

【数据结构和算法】--N叉树中,返回某些目标节点到根节点的所有路径

目录 一、前言二、具体实现及拓展2.1、递归-目标节点到根节点的路径数据2.2、list转换为tree结构2.3、tree转换为list结构 一、前言 这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gogs介绍2.1 Gogs简介2.2 Gogs特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、远程登录华为云云耀云…

基于Java的无人仓库自动补货管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【DRAM存储器九】SDRAM介绍-read、write、Precharge、DQM、Power down、Clock Suspend命令

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光SDRAM数据手册》、《PC SDRAM specification》 目录…

[Linux] 5.Linux虚拟机和Windows文件共享

一、拖拽 如果安装了VMware Tool可以从Windows直接拖进Linux中共享文件,通过拖拽的方式可以把文件从Linux 传输到Windows 二、 文件共享 需要安装VMware Tool点击添加,选择Windows文件的路径,名称作为Linux访问的路径 cd什么都不加&#xff…

<C++> STL_bitset使用和模拟实现

bitset的介绍 位图的引入 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中? 要判断一个数是否在某一堆数中,我们可能会想到如下方法: 将这一堆数进行排序&#xff0…

【python海洋专题九】Cartopy画地形等深线图

【python海洋专题九】Cartopy画地形等深线图 水深图基础差不多了,可以换成温度、盐度等 本期加上等深线 本期内容 1:地形等深线 cf ax.contour(lon, lat, ele[:, :], levelsnp.linspace(-9000,-100,10),colorsgray, linestyles-,linewidths0.25, t…

用python表格初级尝试

Excel,我的野心 当我输入3,2 就表示在第3行第2列。的单元格输入数据input输入表头 (input内除了/,空格 回车 标点符号等 全部作为单元格分隔符)由我设置input输入的是行or列 给选项 1. 行 2. 列默认回车或没输入值是列由我设置起…

数据结构 B树 B+树 B*树 特性与规则说明 图解

文章目录 前言B树基本规则B树的数据插入(文字描述图解)B树数据查找B树效率分析B树的作用B树基本规则B树 与 B树对比B*树基本规则B*树 与 B树对比拓展 前言 B树基本规则 每个节点最多有m个子节点,其中m是一个正整数。根节点除外,其…

聊聊并发编程——线程池

目录 Java线程池 处理流程 线程池主要参数 常见的拒绝策略 execute和submit区别 关闭线程池 常见的线程池 newSingleThreadExecutor newFixedThreadPool newCachedThreadPool newScheduledThreadPool 线程池的状态 Java线程池 运用场景最多的并发框架,…

阿里巴巴K8S集成seata

正文 在K8S集成seata,官方配置 代码 apiVersion: v1 kind: Service metadata:name: seata-servernamespace: wmz-devlabels:k8s-app: seata-server spec:type: NodePortports:- port: 8091nodePort: 30091protocol: TCPname: httpselector:k8s-app: seata-server-…

Java练习题-键盘录入字符串实现大小写转换

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又…