测试地址:http://101.43.3.117:8501/

演示网页

注册账户并申请API

由于ChatGPT平台并没有对中国开放,因此我们无法按照正常流程通过OpenAI官网来注册OpenAI账号,但是可以通过一些变通的方法(你懂的)或者请国外的亲朋好友代你注册账号和申请api_key,一旦我们拿到了api_key就不再受网络的限制,可以正常通过api来和ChatGPT机器人聊天了。

安装相关包

pip install openai
pip install streamlit
pip install streamlit_chat

聊天机器人API接口参数说明

model:模型名词

prompt:您对机器人提出的问题

temperature:温度参数,该参数控制生成文本的随机性级别。较高的温度参数会导致更多变化且可能不太连贯的响应,而较低的t温度参数会产生更可预测且可能更连贯的响应。

max_tokens:应答语句的长度

代码

import openai
import streamlit as st
from streamlit_chat import message
# 设置标题, 功能介绍
st.title("和ChatGPT聊天")
st.sidebar.header("功能介绍")
st.sidebar.info(
    '''这是一个web应用程序,通过OpenAI的API和ChatGPT模型实现交互(聊天)功能。在文本框中输入问题,然后按Enter键查询,接收ChatGPT的回答'''
)

#申请的api_key
openai.api_key = "xxxxxxxxxxxxxxxxx" 
def generate_response(prompt):
    completion=openai.Completion.create(
        model='text-davinci-003',
        prompt=prompt,
        max_tokens=1024,
        temperature=0.6
    )
    message=completion.choices[0].text
    return message
 
st.markdown("#### 我是ChatGPT聊天机器人,我可以回答您的任何问题!")
if 'generated' not in st.session_state:
    st.session_state['generated'] = []
if 'past' not in st.session_state:
    st.session_state['past'] = []
user_input=st.text_input("请输入您的问题:",key='input')
if user_input:
    output=generate_response(user_input)
    st.session_state['past'].append(user_input)
    st.session_state['generated'].append(output)
if st.session_state['generated']:
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        message(st.session_state["generated"][i], key=str(i))
        message(st.session_state['past'][i], 
                is_user=True, 
                key=str(i)+'_user')

Docker安装

Dockerfile制作

# 从python3.8镜像基础上创建
FROM python:3.8
ADD ./ /data
WORKDIR /data

# 设置镜像源,提高pip install 速度
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
        && pip install streamlit\
        && pip install openai\
        && pip install streamlit_chat
# streamlit hello创建一个演示页面,映射80端口以便网页访问
#CMD ["streamlit","hello", "--server.port","8501"]
ENTRYPOINT nohup streamlit run index.py
  1. 从项目创建镜像:docker build -t steamlit:1.0 .
  2. 从镜像创建容器:docker run -itd -p 8501:8501 --name steamlit steamlit :1.0
  3. 启动命令 nohup streamlit main.py >steamlit.log 2>&1 &
最后修改:2023 年 02 月 13 日
如果觉得我的文章对你有用,请随意赞赏