本篇为一个基于调用商用大模型API的自用GPT部署教程
环境配置
阿里云服务器
这里选择阿里云ECS,后续购买,配置等步骤,请自行baidu
进入控制台页面,找到自己的ECS服务器,进入安全组,放行防火墙端口,streamlit默认端口为8501
按顺序依次填写,最后保存即可
Anaconda
安装
如有需要可自行选择安装包下载地址
# 获取Anaconda安装包
wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
# 解压安装
bash Anaconda3-2024.02-1-Linux-x86_64.sh
# 后面按照安装步骤一步一步安装即可
# 安装成功后,刷新环境配置
source ~/.bashrc
创建 虚拟环境
# llm为指定虚拟环境名字,3.10为指定python版本
conda create -n llm python=3.10
# 进入刚刚创建的环境
conda activate llm
Python
pip install streamlit
pip install dotenv
pip install zhipuai
部署
API调用
这里以智谱AI为例
注册账号
点击开始使用,即可跳转到登陆or注册页面
获取API密匙
选择调用方式
这里选择基于SDK的调用,如有其他调用需求可自行查看文档
在当前页面往下翻,找到SSE调用
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="") # 请填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4", # 填写需要调用的模型名称
messages=[
{"role": "system", "content": "你是一个乐于解答各种问题的助手,你的任务是为用户提供专业、准确、有见地的建议。"},
{"role": "user", "content": "我对太阳系的行星非常感兴趣,特别是土星。请提供关于土星的基本信息,包括其大小、组成、环系统和任何独特的天文现象。"},
],
stream=True,
)
# 这是查看调用返回结果示例,后面会用到
for chunk in response:
print(chunk.choices[0].delta)
编写脚本
先创建一个名为.env的文件,然后在文件中写入下述内容
vim .env
# 智谱 API 访问密钥配置
ZHIPUAI_API_KEY = "请填写您自己的APIKey"
model
这里只对模型调用部分作简要说明,关于前端页面的搭建,可自行查看文档streamlit——Build a simple chatbot GUI with streaming
import os
import streamlit as st # 导入前端框架streamlit
from dotenv import load_dotenv, find_dotenv # 导入环境配置包
from zhipuai import ZhipuAI # 导入智谱AI包
_ = load_dotenv(find_dotenv()) # 加载环境变量
api_key = os.environ["ZHIPUAI_API_KEY"] # 读取调用API密匙
client = ZhipuAI(api_key=api_key) # 加载智谱AI模型
st.title("A Simple ChatGPT")
def stream_data(stream_in): # 将列表转为流式数据
for word in stream_in:
yield word.choices[0].delta.content + " " # 调用返回结果
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt := st.chat_input("What is up?"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
stream = client.chat.completions.create( # SSE调用
model="glm-4",
messages=[
{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages
],
stream=True,
)
response = st.write_stream(stream_data(stream)) # 以流式写入数据
st.session_state.messages.append({"role": "assistant", "content": response})
运行
# nohup为当关闭终端时,仍保持进程运行
nohup streamlit run model.py
在浏览器输入 服务器的公网IP:8501 ,运行结果如图所示
参考文献
1.动手学大模型开发应用——https://github.com/datawhalechina/llm-universe
2.智谱接口文档——https://open.bigmodel.cn/dev/api
3.dotenv文档——https://www.dotenv.org/docs/