David es especialista en discos de vinilo. Puedes pedirle una recomendación o información adicional sobre cualquiera de los discos de tu colección de Discogs. David estará encantado de ayudarte.
Esta aplicación LLM es un ejemplo sencillo de un agente conversacional que utiliza la API de Discogs para proporcionar información sobre discos de vinilo. Consta de 4 bloques de construcción principales:
Actualmente utiliza LangChain4j como marco con GPT-4o como motor asistente de IA, pero se puede adaptar fácilmente para usar otros motores.
La arquitectura de la aplicación del siguiente diagrama es aplicada por el marco ArchUnit a través de pruebas en la clase ArchitectureTest.
La interfaz de usuario para este proyecto se desarrolló utilizando el siguiente mensaje:
I need the code for an HTML 5 page that contains an input field for a Discogs username
and a text area for inserting prompts for the application to send to AI agents.
Above the text area there should be the space in which the AI responses are displayed, in the ChatGPT style
El código HTML5 generado por GitHub Copilot proporcionó las imágenes iniciales para la interfaz de usuario que luego modifiqué para agregar la conexión websocket y la lógica para enviar y recibir mensajes del asistente de IA. Descubrí que este es un enfoque muy rápido para la creación de prototipos. Luego, pasé a componentes más robustos de ant-design, incluido pro-chat.
Inicialmente quería usar llama3. El modelo llama3 actualmente no tiene soporte para herramientas (junio de 2024). Esto significa que el asistente de IA no puede recopilar el nombre de usuario de Discogs y recuperar la colección de registros por sí solo. Pasamos a GPT-4o para que David pueda solicitar información de Discogs y eliminar la necesidad de formularios.
Algunos LLM no son tan inteligentes como otros. Aunque el modelo Mistral 7b admite herramientas, no pude obtener buenas respuestas. Ni siquiera pasaría mis pruebas de integración. Con eso, no pude realizar un LLM con herramientas de forma gratuita.
Las alucinaciones son un dolor. Estoy comenzando mi viaje hacia RAG como una forma de minimizarlo. Dado que David opera en el ámbito de la música, Wikipedia es la primera base de conocimientos que le viene a la mente a RAG. Tal vez pueda aprovechar la API de MediaWiki para buscar páginas de música que sean relevantes para la conversación. Por ahora, estoy usando solo la Búsqueda de Google y a veces ayuda, pero definitivamente no es suficiente para el costo que agrega con los tokens.
Probar la aplicación LLM fue un desafío. Hice más pruebas de integración de lo habitual. Esto condujo a un ciclo de desarrollo más lento. Además, la naturaleza probabilística del asistente de IA dificulta probar la aplicación de forma determinista.
En el mundo del LLM, las pruebas unitarias implican generar un modelo de IA en lugar de simplemente llamar a una unidad de código. Cuando se utiliza un modelo basado en la nube, ejecutar pruebas unitarias tiene un costo. También experimenté con el uso de un segundo agente de IA para ayudarme a afirmar los resultados de la IA principal. Es un enfoque prometedor ya que podemos hacer afirmaciones semánticas y no sólo procesamiento de cadenas. La desventaja aquí es que también genera costos y acumula el riesgo de errores de probabilidad introducidos por los LLM.
Debe tener una clave API de OpenAI válida para ejecutar esta aplicación.
./gradlew bootRun
para iniciar la aplicación.http://localhost:8080
en su navegador para interactuar con el asistente de IA.