新闻  |   论坛  |   博客  |   在线研讨会
使用Streamlit和OpenAI搭建一个ChatGPT聊天机器人(附代码)
大数据文摘 | 2023-02-18 18:27:49    阅读:3313   发布文章

大数据文摘授权转载自法纳斯特

作者:小F


ChatGPT是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体,GPT-3经过训练,可以在对话中生成类似人类的文本响应。


ChatGPT旨在用作聊天机器人,我们可以对其进行微调,以完成各种任务,如回答问题、提供信息或参与对话。


与许多使用预定义的响应或规则生成文本的聊天机器人不同,ChatGPT经过了训练,可以根据接收到的输入生成响应,从而生成更自然、更多样化的响应。


图片


小F也是去注册并且试用了一下,确实很酷!


图片

图片


ChatGPT可以联系上下文,然后给出回答。


Streamlit则是一个搭建网页的Python库,只需几行代码就可以创建一个交互式、可视化的仪表板。


简单直观,无需相关的Web开发经验,即可轻松创建功能强大的Web页面。


本期,小F就通过这两来搭建一个聊天机器人~


注册OpenAI


首先需要注册OpenAI,这样就可以使用ChatGPT,以及获取api密钥。


图片


网上有很多注册教程,附上链接,小F就不细说了。


如果有问题可以来咨询小F,我都已经实验过啦~


注册教程:

https://sms-activate.org/cn/info/ChatGPT


接入微信


一并附上微信聊天机器人教程,需要安装golang和docker环境,然后进行部署。


图片


先使用Dockerfile创建一个镜像,在Dockerfile所在目录终端下运行如下命令。


其中镜像名称是可以自定义修改的。

docker build -t xiaomoinfo/wechatgpt:latest .

Dockerfile内容如下。

FROM golang:1.19-alpineENV api_key=""RUN export GOPRIVATE=github.com/houko/wechatgptWORKDIR /appCOPY . /appRUN go mod download && go build -o server main.goCMD ./server

Docker启动容器,可以设置关键字,比如「小F」这个词。


图片


经过使用,发现通过接口获取的回答和网页上不一样。


微信教程:

https://github.com/houko/wechatgpt


微信教程介绍完了,就来看看聊天机器人吧~


聊天机器人


安装两个要用到的Python库。


# 安装streamlit和openaipip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlitpip install -i https://pypi.tuna.tsinghua.edu.cn/simple openai

其中openai库在文档上有一个简单的说明。


图片


文档地址:

https://platform.openai.com/docs


引入Python库,通过Streamlit设置页面信息。


import streamlit as stimport openai

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


查看文档后得知,text-davinci-003是我们所能用到最好的模型了。


图片


密匙信息在个人设置中获取,首次需要自己创建。


图片


添加我们选择的模型以及密匙信息。

# 设置模型和密匙model_engine = "text-davinci-003"openai.api_key = "你的密匙"

通过翻阅个人设置项信息,发现接口调用也是有限制的。


图片

图片


一共18刀的免费额度,小F已经使用了快1美刀了,还剩不少~


使用OpenAI API生成回答,相关参数可以自行看文档。


def ChatGPT(user_query):    """    使用OpenAI API生成回答, 选择模型, 设置参数    """    # 使用OpenAI API生成回答    completion = openai.Completion.create(        engine=model_engine,        prompt=user_query,        max_tokens=1024,        n=1,        temperature=0.5,    )    response = completion.choices[0].text    return response

主函数,问题输入和回答输出显示。

















def main():    """    获取用户输入, 提交给ChatGPT, 打印输出    """    # 获取问题信息    user_query = st.text_input("在这里输入问题,回车查询", "Python是什么?")    if user_query != ":q" or user_query != "":        # 将问题提交给ChatGPT, 返回结果        response = ChatGPT(user_query)        return st.write(f"{response}")



# 主函数main()

最后就可以在终端运行下面的代码了。

streamlit run example.py

结果如下。


图片


点击本地地址,浏览器就会跳转到新的页面。


刚开始应该是这样的,右上角处于RUNNING状态,表示正在查询。


图片


过一小会就会有结果返回。


图片


问一下「如何制作一个聊天机器人」。


图片


发现ChatGPT真的很会做拆解,真的不错。


最后,从页面上看,有点不像一个聊天机器人,感觉就是一问一答而已。


其实只是没把问题一个一个显示而已,机器人实际还是可以联系上下文的。


只不过确实没有网页版的ChatGPT好使,看看后续会不会更新咯。


此外本期也只是调用API接口而已,至于如何真正的建立聊天机器人,就涉及到数据算法模型训练了,大家感兴趣可以自行去学习~



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客