Es hora de crear un ChatGPT privado para ti hoy

Es hora de crear un ChatGPT privado para ti hoy – Codelivly

Después del lanzamiento de "ChatGPT API" el 1 de marzo de 2023, se han desarrollado miles de aplicaciones en torno a las API, lo que abre una nueva era de posibilidades para empresas y particulares. Gracias a las capacidades de procesamiento de lenguaje natural de GPT-3.5, los usuarios pueden crear chatbots que pueden interactuar sin problemas con las personas, para varios propósitos, como responder preguntas, crear novelas, informar e incluso proporcionar una terapia. Los usos potenciales de esta API solo están limitados por la imaginación de las personas, y es emocionante ver cómo los desarrolladores continuarán ampliando los límites de lo que es posible con la IA en el futuro.

Sé que hay suficientes tutoriales en Internet para la última semana, sin embargo, vale la pena escribir una guía de trabajo integral sobre el uso de la API de ChatGPT, Streamlit y Docker para publicar un sitio web decente para usted, sus amigos o un pequeño negocio, en poco tiempo.

Hay razones por las que necesitamos crear nuestro propio sitio web de chatbot:

Todos somos conscientes de las dificultades para conectarse y utilizar la versión gratuita de ChatGPT, debido a su alto tráfico diario. Aunque la versión pro está disponible por $ 20 por mes, puede que no sea una opción rentable para usuarios ocasionales que no necesitan funciones avanzadas. Un modelo de “pago por uso” sería más atractivo para muchos usuarios que solo necesitan un uso ocasional de la plataforma. Sin embargo, ChatGPT no ofrece esta opción.

Afortunadamente, la API de finalización de chat recientemente lanzada (también conocida como API ChatGPT) utiliza GPT-3.5-turbo modelos a un costo de solo $ 0.002 por 1,000 tokens. Esto presenta una opción mucho más asequible para el uso diario cuando el acceso a la API es mucho más estable sin problemas de tráfico máximo. Además, construir un sitio web para chatear usando GPT 3.5 (el mismo modelo usado por ChatGPT) a través de la API no lo hace tolerar el lento tiempo de respuesta de "pensar" y "escribir" que ChatGPT gasta para imitar a los seres humanos. Todas las respuestas de chat son rápidas y sencillas.

Si bien su sitio web inicial puede parecer básico, una vez que lo haya creado, agregar funciones adicionales se convertirá en una brisa, lo que le permitirá alcanzar su potencial comercial.

Suficiente para la teoría, comencemos.

Si ya solicitó la clave API de OpenAI en su cuenta, puede continuar usando esta en lugar de generar una nueva.

Si es la primera vez que accede a la API de OpenAI, regístrese para obtener una nueva cuenta de OpenAI y busque la página a continuación en el menú de su cuenta:

Tenga en cuenta que la clave API completa solo se mostrará una vez después de la generación, por lo que debe copiarla en un lugar seguro para su uso posterior. (Copié el mío directamente en el código solo con fines de demostración, lo cual no se recomienda para sus aplicaciones)

La API "ChatGPT" lanzada recientemente se denomina finalización de chat y la documentación se puede encontrar aquí.

El uso es muy simple, incluso si no tiene experiencia previa con otras API de OpenAI. Para obtener una respuesta de GPT-3.5, tan pronto como se presente oficialmente, solo necesita:

Índice
  1. Paquete de instalación
  2. importar el modulo
  3. Crear y enviar la invitación
  4. Recibe la respuesta
  5. Paquete de instalación
  6. Cree un archivo Python "demo.py" with the below code
  7. Ejecutar en su máquina local o servidor remoto
  8. Utilice un nombre de dominio en lugar de una dirección IP
  9. Implementar en el puerto 80

Paquete de instalación

!pip install openai

importar el modulo

import openai

Crear y enviar la invitación

complete = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)

Recibe la respuesta

message=complete.choices[0].message.content

Hay un nuevo uso del cuerpo del mensaje en comparación con otros modelos antiguos de GPT. La lista de mensajes contendrá varios objetos de mensaje que realizan la función "Chat".

EL system, user, Y assistant son los tres roles recién definidos en los objetos de mensaje. EL system El mensaje se define para definir el comportamiento del chatbot agregando una instrucción en el contenido. Sin embargo, como se mencionó en la introducción, este poder aún no se ha liberado por completo en gpt-3.5-turbo-0301. EL user mensaje representa una entrada o solicitud del usuario, mientras que el assistant El mensaje hace referencia a la respuesta de la API de GPT-3.5 correspondiente. Este intercambio de diálogo simula una conversación similar a la humana, con el mensaje del usuario iniciando la interacción y el mensaje del asistente brindando una respuesta relevante e informativa para darle al modelo de chat el contexto de esa conversación para generar una respuesta más relevante más adelante. El último user El mensaje se refiere al indicador solicitado actualmente.

Streamlit es un marco de código abierto que permite a los científicos y desarrolladores de datos crear y compartir rápidamente aplicaciones web interactivas para proyectos de aprendizaje automático y ciencia de datos. También ofrece un montón de widgets que solo necesitaban una sola línea de código python para crear como st.table(…). Con el fin de crear un sitio web de Chatbot simple para uso privado, Streamlit es una biblioteca muy adecuada con una biblioteca de terceros Streamlit_chat que proporciona una comodidad adicional para generar una aplicación web "estilo chat" porque no tenemos que lidiar con un muchos elementos HTML y cosas CSS.

Para configurar un sitio web y publicarlo en Internet, solo son necesarios unos pocos pasos:

Paquete de instalación

!pip install streamlit

Cree un archivo Python "demo.py" with the below code

import streamlit as st

st.write("""
# My First App
Hello *world!*
""")


Ejecutar en su máquina local o servidor remoto

!python -m streamlit run demo.py

Después de imprimir este resultado, puede visitar su sitio web a través de la dirección y el puerto que se muestran:

You can now view your Streamlit app in your browser.

Network URL: http://xxx.xxx.xxx.xxx:8501
External URL: http://xxx.xxx.xxx.xxx:8501


Los datos en ejecución para las operaciones web son administrados por el objeto session_state por Streamlit. Definimos prompts lista para almacenar mensajes de solicitud que comienzan desde el system mensaje de rol y son agregados por el user Y assistant en cada chat generado.

Para el system publicación de rol puse instrucciones adicionales "con un poco de expresión de humor" en el contenido y realmente parece funcionar porque cuando pregunto cómo convertirse en multimillonario recomienda robar un banco como una broma... esos parámetros me recuerdan a " TARS" en la película "Interestelar".

otros dos session_state se utilizan para almacenar todas las respuestas de la API (generated) y todas las indicaciones del usuario (past) para mostrar par por par en modo chat con la función Streamlit_chat message().

Hay dos botones creados por el widget Streamlit, Send para habilitar la solicitud de ChatCompletion y New Chat para limpiar el historial de chat en ambos prompts tema de conversación y visualización. Estos comportamientos se definen en la función de devolución de llamada. chat_click() Y end_click().

Para duplicar por completo la experiencia del usuario de ChatGPT, también debemos considerar mostrar funciones de descuento completas de las respuestas de la API, como fragmentos, tablas, etc. Desafortunadamente, la burbuja de chat de streamlit_chat no puede mostrar muy bien el contenido de rebajas. tabs widget para separar el texto sin formato en la visualización de burbujas como normal y mostrando rebajas como rich en el caso de texto estructurado como código.

Todo el código de Python se pega debajo del cual puede copiar directamente:

import openai
import streamlit as st
from streamlit_chat import message

openai.api_key = '{Your API key}'
if 'prompts' not in st.session_state:
st.session_state['prompts'] = [{"role": "system", "content": "You are a helpful assistant. Answer as concisely as possible with a little humor expression."}]
if 'generated' not in st.session_state:
st.session_state['generated'] = []
if 'past' not in st.session_state:
st.session_state['past'] = []

def generate_response(prompt):
st.session_state['prompts'].append({"role": "user", "content":prompt})
completion=openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages = st.session_state['prompts']
)

message=completion.choices[0].message.content
return message

def end_click():
st.session_state['prompts'] = [{"role": "system", "content": "You are a helpful assistant. Answer as concisely as possible with a little humor expression."}]
st.session_state['past'] = []
st.session_state['generated'] = []
st.session_state['user'] = ""

def chat_click():
if st.session_state['user']!= '':
chat_input = st.session_state['user']
output=generate_response(chat_input)
#store the output
st.session_state['past'].append(chat_input)
st.session_state['generated'].append(output)
st.session_state['prompts'].append({"role": "assistant", "content": output})
st.session_state['user'] = ""

st.image("{Your logo}", width=80)
st.title("My ChatBot")

user_input=st.text_input("You:", key="user")

chat_button=st.button("Send", on_click=chat_click)
end_button=st.button("New Chat", on_click=end_click)

if st.session_state['generated']:
for i in range(len(st.session_state['generated'])-1, -1, -1):
tab1, tab2 = st.tabs(["normal", "rich"])
with tab1:
message(st.session_state['generated'][i], key=str(i))
with tab2:
st.markdown(st.session_state['generated'][i])
message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')


Una vez que se ejecuta el comando streamlit, su sitio web de ChatBot se activará http://{Your IP address}:8501 ¡por defecto!

!python -m streamlit run demo.py

Pida a los usuarios o a usted mismo que visiten su ChatBot escribiendo http://111.22.333.44:8501 parece un poco poco profesional, así que considere dos pasos más para finalizar su puesta en marcha.

Utilice un nombre de dominio en lugar de una dirección IP

Puede intentar comprar un dominio económico con una fuerte marca personal en https://www.namecheap.com/ y apuntarlo a la IP de su servidor en el panel de administración de Namesilo.

Implementar en el puerto 80

Como Streamlit no es compatible con el puerto 80 para su puerto de servicio web, si desea evitar que los usuarios escriban algo como:8501 para visitar su sitio web, puede implementar su aplicación Streamlit usando Docker y usar Docker para asignar el puerto 80 a su puerto Streamlit real.

El tutorial para configurar Docker y ejecutar su aplicación Streamlit se puede encontrar aquí.

Siéntase libre de contactarme con cualquier problema de desarrollo y también solicite mi dirección web de demostración (lo siento, no puedo compartirla en el artículo porque usar la API de OpenAI me cuesta dinero...)

Eso es.

Espero que encuentres algo útil en este artículo y gracias por leer!

Si quieres conocer otros artículos parecidos a Es hora de crear un ChatGPT privado para ti hoy puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas