2023-06-10 17:48:19 +02:00
|
|
|
"""
|
|
|
|
Chatbot con OpenAI GPT-3
|
|
|
|
"""
|
|
|
|
|
2023-06-10 14:24:18 +02:00
|
|
|
import openai
|
|
|
|
import os
|
|
|
|
from dotenv import load_dotenv
|
2023-06-10 17:48:19 +02:00
|
|
|
from colorama import init, Fore
|
2023-06-10 14:24:18 +02:00
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
api_key = os.getenv("OPENAI_API_KEY")
|
|
|
|
|
|
|
|
openai.api_key = api_key
|
|
|
|
|
|
|
|
preguntas_anteriores = []
|
|
|
|
respuestas_anteriores = []
|
|
|
|
|
2023-06-10 17:48:19 +02:00
|
|
|
# Inicializar colorama
|
|
|
|
init()
|
|
|
|
|
2023-06-10 14:24:18 +02:00
|
|
|
|
|
|
|
def preguntar_chat_gpt(prompt, modelo="text-davinci-002"):
|
|
|
|
"""
|
|
|
|
Pregunta a la API de OpenAI GPT-3
|
|
|
|
"""
|
|
|
|
|
|
|
|
respuesta = openai.Completion.create(
|
|
|
|
engine=modelo,
|
|
|
|
prompt=prompt,
|
|
|
|
n=1,
|
|
|
|
temperature=1,
|
|
|
|
max_tokens=150
|
|
|
|
)
|
|
|
|
|
|
|
|
return respuesta.choices[0].text.strip()
|
|
|
|
|
|
|
|
|
|
|
|
# Bienvenida
|
2023-06-10 17:48:19 +02:00
|
|
|
print(Fore.RED + "Bienvenido al chatbot de OpenAI GPT-3." + Fore.RESET)
|
|
|
|
print(Fore.RED + "Escribe \"salir\" cuando quieras terminar la conversación." + Fore.RESET)
|
2023-06-10 14:24:18 +02:00
|
|
|
|
|
|
|
# Loop para controlar el flujo de la conversación
|
|
|
|
while True:
|
|
|
|
|
|
|
|
conversacion_historica = ""
|
|
|
|
|
2023-06-10 17:48:19 +02:00
|
|
|
ingreso_usuario = input(Fore.MAGENTA + "Tú: " + Fore.RESET)
|
2023-06-10 14:24:18 +02:00
|
|
|
|
|
|
|
if ingreso_usuario == "salir":
|
|
|
|
break
|
|
|
|
|
|
|
|
for pregunta, respuesta in zip(preguntas_anteriores, respuestas_anteriores):
|
2023-06-10 17:48:19 +02:00
|
|
|
conversacion_historica += f"{Fore.BLUE}Usuario pregunta: {Fore.RESET}{pregunta}"
|
|
|
|
conversacion_historica += f"{Fore.GREEN}Bot responde: {Fore.RESET}{respuesta}\n"
|
2023-06-10 14:24:18 +02:00
|
|
|
|
2023-06-10 17:48:19 +02:00
|
|
|
prompt = f"{Fore.CYAN}Usuario pregunta: {Fore.RESET}{ingreso_usuario}"
|
2023-06-10 14:24:18 +02:00
|
|
|
conversacion_historica += prompt
|
|
|
|
respuesta_gpt = preguntar_chat_gpt(conversacion_historica)
|
|
|
|
|
|
|
|
print(f"{respuesta_gpt}")
|
|
|
|
|
|
|
|
preguntas_anteriores.append(ingreso_usuario)
|
|
|
|
respuestas_anteriores.append(respuesta_gpt)
|