使用 openAI GPT-3 和 Streamlit 构建您自己的聊天机器人

时间:2024-10-27 07:52:03

长话短说

Streamlit 用于创建聊天机器人界面并初始化变量以存储聊天记录。
通过遍历generated和past列表并使用message函数显示每条消息来显示聊天记录。
本教程提供了有关如何使用 OpenAI 的 GPT-3 API 和 Streamlit 构建聊天机器人的详细指南。

导入库

第一步是导入必要的库。我们将使用它openai来访问文本生成 API 并streamlit创建聊天机器人界面。

import openai import streamlit as st
  • 1

接下来,我们需要为 OpenAI 设置 API 密钥。此密钥用于验证我们对 API 的请求。

openai.api_key = [ "api_secret" ]
  • 1

从 API 生成响应

我们创建一个名为的函数,该函数generate_response接收提示并使用 OpenAI API 生成响应。该函数允许我们通过为其提供启动提示来生成文本。我们可以指定engine要使用的、prompt从中生成文本的、用 生成的最大标记数(单词和标点符号)、用 生成max_tokens的响应数n,以及在用 处停止生成文本的字符串stop。我们还可以调整temperature参数,它控制生成文本的随机性。

def generate_response(prompt):
    completions = (
        engine = "text-davinci-003",
        prompt = prompt,
        max_tokens = 1024,
        n = 1,
        stop = None,
        temperature=0.5,
    )
    message = [0].text
    return messageCreating the chatbot interface
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

我们将使用 Streamlit 创建聊天机器人界面——通过设置页面标题并初始化一些变量来存储聊天记录。

("chatBot : Streamlit + openAI")

# Storing the chat
if 'generated' not in st.session_state:
    st.session_state['generated'] = []

if 'past' not in st.session_state:
    st.session_state['past'] = []
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

接下来,创建一个名为的函数get_text,它返回用户从文本输入字段输入的内容。

# We will get the user's input by calling the get_text function
def get_text():
    input_text = st.text_input("You: ","Hello, how are you?", key="input")
    return input_text
  • 1
  • 2
  • 3
  • 4

如果user_input不为空,我们将使用该函数生成响应generate_response并将其存储在名为 的变量中output。我们还将分别将用户的输入和生成的响应附加到past和generated列表,以跟踪聊天历史记录。

user_input = get_text()

if user_input:
    output = generate_response(user_input)
    # store the output 
    st.session_state.(user_input)
    st.session_state.(output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后,我们将通过遍历generated和past列表并使用库中的message函数streamlit_chat显示每条消息来显示聊天记录。

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')
  • 1
  • 2
  • 3
  • 4
  • 5

结论

总之,我们已经使用 OpenAI 的 GPT-3 API 和 Streamlit ???? 成功构建了一个聊天机器人????!只需几行代码,我们就能够创建一个简单但功能强大的聊天机器人,它可以对用户输入做出响应。