【服务器部署】从0-1进行部署Gradio情感聊天AI bot云端应用(ubuntu服务器+Nginx反向代理+内网穿透)
Gradio是一个常用于创建机器学习和深度学习的Web应用程序,它提供了一个用户友好的界面,允许开发者进行快速构建和部署并制作可视化界面,本文会介绍如何将Gradio应用部署到云服务器上,并使用反向代理来实现外链访问
Step1:先准备一台能够运行代码环境的服务器
流程:服务器租用→ssh连接→环境搭建→检查环境
服务器租借购买可以参考该教程阿里云服务器租用搭建教程,可以根据自身实际需要选择需要的服务器,选择服务器后使用Xshell远程连接云服务器配置环境(Xshell自行在网络中下载),打开Xshell输入服务器的公网ip 输入要登录的账户名(主机名)
输入在云服务器中设置的登录密码,密码正确即完成SSH连接
开始配置应用所需要的python环境,如果需要配置java或者c++环境也可以参考其它的服务器配置教程
安装python虚拟环境所需要的依赖包
sudo apt update
sudo apt-get install python3-venv
创建python虚拟环境并激活
环境创建:python3 -m venv my-venv (环境名可自定)
激活环境:source work/bin/activate(改为你的路径,linux默认~为起始目录)
安装应用所需要的依赖包,目前安装有两种策略,一种直接用pip install packge进行安装或者将所需要包写入requirements.txt,或者使用以下语句进行安装
nano requirements.txt
这里所需要安装的包写进去
pip install -r requirements.txt
安装完后可以用pip list查看所需要的包是否安装完成
Step 2:搭建一个Gradio应用,这里以文心一言的Enrie SDKt为例
流程:编写一个Gradio应用→上传应用文件→配置后台服务→测试Gradio应用
首选在服务器上创建一个用于测试应用的文件目录
mkdir gradio_test/bot
要编写一个Gradio Web应用,本文通过使用Enrie的sdk实现一个实现一个情感伙伴bot聊天,其代码如下举例介绍:
import gradio as gr
import json
import erniebot
history = []
# 导入角色设置
with open(\’../config/enireRoleConfig.json\’, \’r\’, encoding=\’utf-8\’) as file:
role_config = json.load(file)
# 角色和描述
roles = role_config[\’roles\’]
# css样式
custom_css = \”\”\”
<style>
@import url(\’https://fonts.googleapis.com/css2?family=Pacifico&family=Permanent+Marker&family=Roboto+Slab&family=Dancing+Script&display=swap\’);
body, .gradio-container {
display: flex;
flex-direction: column;
min-height: 100vh;
margin: 0;
}
.main {
flex-grow: 1;
display: flex;
flex-direction: column;
}
.contain {
flex-grow: 1;
display: flex;
flex-direction: column;
}
#component-0 {
flex-grow: 1;
display: flex;
flex-direction: column;
}
#component-0 > .chat-interface {
flex-grow: 1;
display: flex;
flex-direction: column;
}
#component-0 > .chat-interface > .message-list {
flex-grow: 1;
overflow-y: auto;
}
</style>
\”\”\”
def predict(message, history, option, api_key, role_selector):
model = \”ernie-bot\”
erniebot.api_type = \’aistudio\’
erniebot.access_token = api_key
# 模型选择
if option == \”ernie-bot\”:
model = \’ernie-bot\’
elif option == \”ernie-bot-turbo\”:
model = \’ernie-bot-turbo\’
elif option == \”ernie-bot-4\”:
model = \’ernie-bot-4\’
# 角色选择
system_prompt = roles[role_selector][\’prompt\’]
# 输入消息
json_str = {
\’role\’: \’user\’, \’content\’: message}
messages = \”\”
history = [{
k: v for k, v in item.items() if k != \’metadata\’} for item in history]
history
评论前必须登录!
注册