Veo que hay algunos temas interesantes sobre la integración de bots en varios niveles en Discourse, pero no vi ningún tema sobre la integración de los grandes bots de IA de modelos de memoria grande como GPT-3, BlenderBot, etc. ¿Alguien ha pensado en esto? ¿O incluso ha progresado en la implementación de la idea?
Estoy pensando en configurar otra instancia de Discourse con uno de los grandes bots de IA como un usuario normal en el sistema que participa como cualquier otro usuario humano, pero quizás solo responde cuando se le dirige una publicación específicamente o cuando se menciona su nombre en una publicación.
Antes de volver a empezar con una nueva instancia, pensé que podría obtener algunos comentarios primero esta vez. . .
¡Excelente! Mi idea en este momento es poder agregar muchas aplicaciones de IA diferentes a la entidad central a medida que pase el tiempo, de manera similar a como evolucionó el cerebro mamífero / humano con duplicación y especialización.
¿Quizás debería crear la instancia de Discourse para empezar?
Quizás empecemos primero con un diseño técnico. ¿A qué tipo de API nos conectamos? ¿Necesitamos una pieza de software entre ambos sistemas o sería suficiente un plugin que llame a la API de GPT?
Ya había visto las publicaciones de Hubot y había pensado en experimentar con esa opción como ejercicio de aprendizaje antes de lanzarme a algo que requiriera inventar la rueda. ¿Crees que sería útil?
Sí, absolutamente. Estaré fuera durante aproximadamente una semana y después de eso podré dedicar tiempo a experimentar. Sin embargo, no soy un gran fan de Node, preferiría hacerlo en Python, Ruby o PHP. Pero primero, vamos a adquirir algo de experiencia con esto.
He estado desconectado de internet la mayor parte de los últimos dos meses y he vuelto para ver mucho entusiasmo en torno a GPT-3. Eso me hizo pensar en cómo podría aplicarse a Discourse.
He estado jugando con la idea de crear un bot de “asistente del personal” usando OpenAI. Lo estoy probando con el modelo text-davinci-003 por ahora. Creo que el diseño básico será un webhook de eventos de publicación de Discourse que apunte a un servidor con la biblioteca de Python OpenAI instalada.
La primera tarea en la que estoy trabajando es conseguir que el bot devuelva consultas de Data Explorer a partir de descripciones en texto plano. Aún no he intentado ajustar un modelo, pero si se proporciona información sobre la estructura de la base de datos de Discourse con el prompt de la solicitud, está devolviendo resultados sorprendentemente buenos.
Puede resultar que usar OpenAI para este tipo de cosas sea demasiado caro, o que los resultados no sean lo suficientemente precisos para usarlos en un sitio de producción.
Solo estoy trabajando en esto por diversión. La otra cosa obvia a considerar es entrenar un bot de atención al cliente con las respuestas existentes en un foro de Discourse. Este parece un problema más difícil (tanto en términos de costo como de precisión) que simplemente configurar un bot para usuarios del personal.
Tengo un caso de uso diferente (el bot DEBE recordar conversaciones anteriores con los miembros de nuestras organizaciones sin fines de lucro). He progresado un poco en la última semana con varias versiones de BlenderBot; publicaré más aquí, donde hemos configurado Discourse específicamente para el proyecto:
Iba a preguntar lo mismo, un bot de ChatGPT para poder hacer preguntas en un chat o en un hilo sería muy útil. Aquí hay un tutorial para ejecutarlo en una VM
Me complacería estar equivocado en esto, pero mi entendimiento es que ChatGPT solo “recuerda” el texto de la indicación más reciente que le has enviado. Puedes probar esto en el Playground de OpenAI iniciando un chat y luego haciendo clic en el botón “Ver código” después de enviar tu texto. Verás que cada vez que envías más texto, se agrega a la indicación:
prompt="La siguiente es una conversación con un asistente de IA. El asistente es útil, creativo, inteligente y muy amigable.\n\nHumano: Solo estoy probando para ver cómo se establece la indicación.\nIA: ¡Hola! Parece que estás intentando averiguar cómo configurar las indicaciones. ¿Hay algo más en lo que pueda ayudarte hoy?\nHumano: Si uso la funcionalidad de chat de OpenAI en mi propia aplicación, ¿debo seguir actualizando la indicación cada vez que un usuario publica una nueva pregunta? Definitivamente es una buena idea mantener tus indicaciones actualizadas, ya que ayudará a garantizar que tus usuarios obtengan la información más relevante para cada pregunta que publiquen. Dependiendo del tamaño de tu aplicación y la complejidad de tus conversaciones, es posible que desees actualizar tus indicaciones regularmente o desarrollar un sistema más sofisticado para determinar cuándo son necesarias las actualizaciones. Hazme saber si hay algo más en lo que pueda ayudarte."
Esto puede continuar hasta que alcances el límite de 4000 tokens (~3000 palabras) que se menciona en la documentación que enlazaste. Ten en cuenta que enviar indicaciones grandes podría resultar costoso. Creo que actualmente cuesta $0.02 por cada 1000 tokens con el modelo Davinci.
Si mi entendimiento es correcto, una aplicación o un plugin de Discourse que maneje ChatGPT para Discourse necesitaría agregar cada nueva pregunta y respuesta a la indicación. Podría hacerlo hasta que alcanzara los 4k tokens (~3k palabras). Si se excede ese límite, parece que se devuelve un error de OpenAI. Ese error debería ser manejado por la aplicación que realiza las solicitudes a OpenAI.
Una posible solución alternativa para el límite de tokens sería encontrar una manera de extraer los detalles clave de una conversación y luego actualizar la indicación solo con esos detalles. Podría ser posible realizar una solicitud en nombre del usuario para obtener esta información. Algo como:
Esos detalles podrían luego guardarse en la aplicación que realiza las solicitudes a OpenAI y usarse para reiniciar la conversación en una fecha posterior.
Obtendrás respuestas mucho más definitivas sobre esto aquí: https://community.openai.com/. ¡Es genial ver que usan Discourse para su comunidad!
Creo que tienes razón, pero el enlace que proporcioné dice básicamente que ChatGPT NO tiene memoria entre sesiones, lo cual necesito para mi caso de uso.
Cuando interactúas con ChatGPT y miras las solicitudes de red, puedes ver que también se proporciona un conversation_id que se envía al backend. Creo que la documentación de OpenAI también menciona esto.