Crea la tua app Web GPT-3 per chat con Streamlit in Python
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. 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.
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

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































