Crea la tua app Web GPT-3 per chat con Streamlit in Python

Jan 27 2023
Non solo per l'hype Il ChatGPT-3 (Generative Pre-trained Transformer) di OpenAI è uno dei chatbot più potenti disponibili al momento della stesura di questo articolo. Puoi chiedere qualsiasi cosa e fornirà risposte accurate.

Non solo per l'hype

Immagine realizzata dall'autore con Stable Diffusion

Il ChatGPT-3 (Generative Pre-trained Transformer) di OpenAI è uno dei chatbot più potenti disponibili al momento della stesura di questo articolo. Puoi chiedere qualsiasi cosa e fornirà risposte accurate. Inoltre, OpenAI offre un'API da utilizzare nella programmazione. Stiamo prendendo in considerazione le applicazioni supportate date queste funzionalità, anche se questo è per un altro articolo. Per iniziare, in questo tutorial vedremo come utilizzare l'API Python per creare un'app Web Chat GPT-3. Al momento della stesura di questo tutorial, l'API ChatGPT completa non è stata ancora rilasciata e c'è una lista d'attesa .

SEMPLICE

Streamlit è un framework di app open source ideale per Machine Learning e Data Science. Consente agli sviluppatori di creare applicazioni interattive basate sul Web per la visualizzazione e l'analisi dei dati, senza dover scrivere codice HTML, CSS o JavaScript esteso. Streamlit utilizza Python per creare le app, rendendo facile per i data scientist e gli ingegneri utilizzare le loro conoscenze e competenze esistenti per creare strumenti personalizzati e interattivi per l'esplorazione e l'analisi dei dati. È molto facile integrare codice Python e persino grafici interattivi simili a Matplotlib. Una piccola seccatura è il caricamento dei dati da utilizzare per motivi di sicurezza.

Esistono 2 modi per utilizzare Streamlit, all'interno del proprio cloud o installandolo localmente (sul proprio computer o sul proprio server Web).

Per la prima opzione è necessario creare un account su streamlit.io e da lì collegare un repository Github. È importante elencare le librerie necessarie nei file requirements.txt altrimenti la distribuzione non andrà a buon fine. Se il piano prevede di utilizzare Streamlit Cloud con la chiave OpenAI, potrebbero esserci ulteriori problemi poiché la chiave privata viene pubblicata su Github (OpenAI lo rileverà immediatamente e si lamenterà).

La seconda soluzione richiede risorse proprie ma offre più libertà. Devi installare quelle librerie nella macchina definita:

  • Illuminato ( pip install streamlit)
  • Chat semplificata ( pip install streamlit_chat)
  • IA aperta( pip install openai)
  • Dotenv( pip install python-dotenv) (facoltativo)

Per utilizzare Chat GPT-3 avrai bisogno della chiave API. Per ottenerlo dovrai andare sul sito web di OpenAI . Dopo l'accesso, vai a Visualizza chiavi API.

Schermata dell'autore

Ora devi creare uno script Python Streamlit.

Dopo aver importato le librerie richieste, incolla la chiave API memorizzata nel file openai.api_key. Quindi genera la risposta da GPT-3 generate_response prendendo il prompt dell'utente come parametro. Qui viene specificato anche il modello GPT-3 'text-davinci-003', anche se possono essere utilizzati altri modelli. È anche possibile impostare un limite al prompt ( max_tokens).

La variabile temperatura è molto rilevante, in quanto definisce sostanzialmente la quantità di creatività nella risposta ( anche se a nessuno piace semplificare eccessivamente la creatività con questo ), può essere impostata tra 0 e 1. 0 produce output stabili, mentre 1 è altamente creativo. Più formalmente, la temperatura determina quanto sia avido il modello generativo.

import openai
import streamlit as st
from streamlit_chat import message
import os 
from dotenv import load_dotenv
load_dotenv('api_key.env')
openai.api_key = os.environ.get('API_KEY')
def generate_response(prompt):
    completion=openai.Completion.create(
        engine='text-davinci-003',
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.6,
    )
    message=completion.choices[0].text
    return message

st.title("ChatGPT-like Web App")
#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'] = []
user_input=st.text_input("You:",key='input')
if user_input:
    output=generate_response(user_input)
    #store the output
    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')

Codifica di livello superiore

Grazie per far parte della nostra comunità! Prima che tu vada:

  • Batti le mani per la storia e segui l'autore
  • Visualizza altri contenuti nella pubblicazione Level Up Coding
  • Seguici: Twitter | Linkedin | Notiziario