【chainlit】使用chainlit部署chatgpt

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

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

一.chainlit 简介

1.官方文档

官方文档

github

langchain 方式

python

docker 启动 chainlit

2.python 安装

在 centos 服务器上安装 python3.10

安装依赖

apl 复制代码
#安装依赖库
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

apl 复制代码
#进入目录
cd Python-3.10.0

#校验
./configure --enable-optimizations

#编译
make -j 8

#安装
sudo make altinstall

验证

apl 复制代码
#验证
python3.10 --version

3.安装 chainlit

创建虚拟环境:

python 复制代码
#创建虚拟环境
python3.10 -m venv myenv

#激活虚拟环境
source myenv/bin/activate

#退出虚拟环境
deactivate

安装依赖

apl 复制代码
#安装chainlit
pip install chainlit

#安装langchain
pip install langchain

创建azure_demo.py文件,内容如下

python 复制代码
import os
import chainlit as cl

from 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 answer
    history.append(res)
    await cl.Message(content=f"{res.content}").send()


def sync_func():
    return chat(history)

方式二:

python 复制代码
import openai
import chainlit as cl

openai.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.启动脚本

apl 复制代码
nohup chainlit run azure_demo.py &

5.一键启动

apl 复制代码
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

apl 复制代码
FROM python:3.11-slim-buster as builder

#RUN apt-get update && apt-get install -y git

RUN 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_cache

ENV HOST=0.0.0.0
ENV LISTEN_PORT 8000
EXPOSE 8000

WORKDIR /app

COPY pyproject.toml poetry.lock ./

RUN poetry config repositories.clearlydefined https://pypi.tuna.tsinghua.edu.cn/simple/

RUN poetry config cache-dir /kwan/chainlit/demo

RUN poetry config virtualenvs.create false

RUN 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 runtime

ENV 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.新增依赖

apl 复制代码
#在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.部署步骤

apl 复制代码
#创建缓存目录
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.修改配置

apl 复制代码
#修改chainlit的配置
cd /kwan/chainlit/.chainlit

#修改markdown文件
cd  /kwan/chainlit

6.访问验证

apl 复制代码
#页面验证
http://120.79.36.53:8000/

#公司内网地址
http://10.201.0.6:8000/

觉得有用的话点个赞 👍🏻 呗。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

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

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

相关推荐
LaughingZhu16 小时前
Product Hunt 每日热榜 | 2026-03-28
数据库·人工智能·经验分享·神经网络·chatgpt
Jay叶湘伦18 小时前
【极简】用 Vue 写一个 ChatGPT 前端应用,支持连续对话、Markdown 渲染与本地记忆
前端·vue.js·chatgpt
balmtv18 小时前
从“知识检索”到“深度推理”:Gemini 3.1如何用三层思考模式解决学术难题
人工智能·gpt·chatgpt
刘大大Leo1 天前
大模型、Prompt、Skill、MCP、Agent、OpenClaw啥关系?使用AI效率提升10倍的秘诀
人工智能·chatgpt·prompt
蓝色的杯子1 天前
免费体验GPT5.4效果
python·chatgpt
AI英德西牛仔1 天前
AI复制的文字带星号
人工智能·ai·chatgpt·豆包·deepseek·ds随心转
极客老王说Agent2 天前
别被OpenClaw的30万Star晃了眼!AI产业逻辑重写后,打工人更该看清谁在“真干活”
人工智能·ai·chatgpt
Bruce20489982 天前
OpenClaw 零基础全解析(小白友好版)
人工智能·chatgpt
Agent产品评测局2 天前
企业 AI Agent 落地,如何保障数据安全与合规?——企业级智能体安全架构与合规路径深度盘点
人工智能·安全·ai·chatgpt·安全架构
abigale032 天前
从零实现 AI 聊天助手:可直接复用的前端核心方案
chatgpt·vue·流式输出