Gen Ai - Ejemplos de Springboot / Langchain4J
La IA generativa se refiere a un subconjunto de inteligencia artificial que puede generar contenido nuevo basado en datos de entrada. Esto abarca modelos que pueden crear texto, imágenes, música e incluso videos. Ejemplos de IA generativa incluyen modelos de lenguaje como GPT-3 y DALL-E de OpenAI, que pueden generar texto e imágenes similares a los humanos a partir de descripciones textuales, respectivamente.
Los modelos de IA generativa suelen entrenarse en grandes conjuntos de datos y utilizan técnicas de aprendizaje profundo para aprender patrones y estructuras en los datos. Tienen una amplia gama de aplicaciones, que incluyen:
- Procesamiento del lenguaje natural (NLP): generación de texto similar al humano para chatbots, traducciones y creación de contenido.
- Artes creativas: creación de obras de arte, música y elementos de diseño.
- Aumento de datos: generación de datos adicionales para entrenar otros modelos de aprendizaje automático.
- Atención médica: ayudar en la obtención de imágenes médicas y crear planes de tratamiento personalizados.
Cómo la API LangChain4J Gen AI ayuda a los desarrolladores a crear aplicaciones Spring Boot AI
LangChain4J es una biblioteca Java diseñada para simplificar la integración de modelos de lenguaje grandes (LLM) y capacidades de IA en aplicaciones Java, incluidas aquellas creadas con Spring Boot. Así es como ayuda a los desarrolladores:
- API unificada para LLM: LangChain4J proporciona una API unificada que admite múltiples proveedores de LLM como OpenAI y Google Vertex AI. Esta abstracción permite a los desarrolladores cambiar entre diferentes LLM sin cambiar significativamente su base de código.
- Integración de almacén de incrustación: se integra con varios almacenes de incrustación, lo que permite un manejo eficiente de datos vectorizados. Esto es particularmente útil para tareas de generación aumentada de recuperación (RAG), donde se obtiene información relevante de una base de conocimientos para mejorar las respuestas de la IA.
- Caja de herramientas de características: la biblioteca incluye un conjunto completo de herramientas para creación de plantillas, administración de memoria y análisis de resultados. Estas herramientas ayudan a crear aplicaciones complejas de IA al proporcionar abstracciones de alto nivel y componentes listos para usar.
- Integración de Spring Boot: LangChain4J es compatible con Spring Boot, lo que facilita a los desarrolladores la creación de aplicaciones de IA sólidas y escalables. La integración permite la incorporación perfecta de servicios de IA en las aplicaciones Spring Boot, aprovechando las funciones de administración de configuración y inyección de dependencias de Spring.
- Ejemplos y documentación: LangChain4J ofrece documentación y ejemplos extensos, que guían a los desarrolladores a través de varios casos de uso y demuestran cómo implementar funcionalidades impulsadas por IA en sus aplicaciones.
Estudio de caso: Aplicación de atención médica: microservicios de diagnóstico habilitados por Gen Ai
Ejemplos de generación de IA: comparación de 8 LLM (3 basados en la nube y 5 locales) sobre funciones empresariales
La siguiente comparación se basa en las funciones disponibles en la API LangChain4J (que es compatible con OpenAI ChatGPT). Estas características son esenciales para el desarrollo de aplicaciones empresariales basadas en Gen AI.
# | Ejemplo | GPT 4º | Metallama3 | Mistral | Microsoft Phi-3 | Google Gemma | TII Halcón 2 | claudio 3 | Géminis 1.5 |
---|
1. | Hola Mundo | ? | ? | ? | ? | ? | ? | ? | ? |
2. | Mundo complejo | ? | ? | ? M1 | ? | ? | ? | ? | ? |
3. | Datos personalizados | ? | ? | ? | ? | ? | ? F1 | ? | ? |
4. | Generación de imágenes | ? | ? L1 | ? M2 | ? P1 | ? | ? F2 | ? | ? |
5. | Plantilla de aviso | ? | ? | ? M3 | ? | ? | ? | ? | ? |
6. | Herramientas | ? | ? L2 | ? M4 | ? P2 | ? G1 | ? F3 | ? | ? G1 |
7. | Memoria de chat | ? | ? | ? | ? P3 | ? G2 | ? | ? | ? G2 |
8. | pocos tiros | ? | ? | ? M5 | ? | ? | ? | ? | ? G3 |
9. | Traductor de idiomas | ? | ? | ? M6 | ? | ? | ? | ? | ? |
10. | Analizador de sentimiento | ? | ? | ? | ? | ? | ? | ? | ? |
11. | Extractor de datos | ? O1 | ? L3 | ? M7 | ? P4 | ? G3 | ? F4 | ? | ? G4 |
12. | Tienda persistente | ? | ? | ? M8 | ? P5 | ? G4 | ? | ? | ? |
Ejemplos de generación aumentada de recuperación (RAG) de 8 LLM
# | Ejemplo | GPT 4º | Metallama3 | Mistral | Microsoft Phi-3 | Google Gemma | TII Halcón 2 | claudio 3 | Géminis 1.5 |
---|
51. | Simple | ? | ? | ? | ? | ? | ? | ? | ? |
52. | Segmentos | ? | ? | ? | ? | ? | ? | ? | ? |
53. | Transformador de consultas | ? | ? | ? | ? | ? | ? | ? | ? |
54. | Enrutador de consultas | ? | ? L4 | ? M9 | ? P6 | ? G4 | ? F5 | ? | ? G5 |
55. | Reclasificación | ? | ? | ? | ? | ? | ? | ? | ? |
56. | Metadatos | ? | ? | ? | ? | ? | ? | ? | ? |
57. | Recuperadores de contenido múltiples | ? | ? | ? | ? | ? | ? | ? | ? |
58. | Saltar la recuperación de contenido | ? | ? | ? | ? | ? | ? | ? | ? |
59. | Aplicación de atención médica | ? | ? | ? | ? | ? | ? | ? | ? |
Principales clasificaciones de LLM basadas en características empresariales
# | Rango | Compañía | LLM | Puntaje | Categoría |
---|
1 | 1 | antrópico | Claude 3 Haiku | 21/21 | Nube |
2 | 2 | IA abierta | Chatear GPT 4o | 20/21 | Nube |
3 | 3 | Meta | Llama 3 | 17/21 | Local |
4 | 4 | TII | Halcón 2 | 16/21 | Local |
5 | 4 | Google | Géminis 1.5 Pro | 16/21 | Nube |
6 | 4 | Google | Gema | 16/21 | Local |
7 | 5 | microsoft | PHI 3 | 15/21 | Local |
8 | 6 | Mistral | Mistral | 21/12 | Local |
Nota: Los LLM basados en la nube tendrán soporte para más de 500 mil millones de parámetros, mientras que los LLM locales se basan principalmente en 8 mil millones de parámetros.
Consulte más detalles sobre los puntajes de las pruebas
Instalar LLM locales
Para instalar los LLM locales usando Ollama
- Metallama3
- Google Gemma
- Microsoft PHI-3
- TII Halcón 2
- Mistral
- Asistente de matemáticas
Consulte la guía de instalación.
Obtenga las claves para probar los LLM en la nube
Regístrese para obtener las claves API
- Open AI - ChatGPT (la clave API se puede crear aquí: https://platform.openai.com/api-keys)
- Anthropic - Claude 3 (la clave API se puede crear aquí: https://console.anthropic.com/settings/keys)
- Google Cloud - (https://console.cloud.google.com/ - Consulte AiConstants.java para obtener instrucciones)
- Cohere: (clave API aquí: https://dashboard.cohere.com/welcome/register)
- HuggingFace: (clave API aquí: https://huggingface.co/settings/tokens)
- Rápido: (clave API aquí: https://rapidapi.com/judge0-official/api/judge0-ce)
Configure estas claves en su entorno
// API Keys -----------------------------------------------------------------------
// OpenAI API key here: https://platform.openai.com/account/api-keys
public static final String OPENAI_API_KEY = System.getenv("OPENAI_API_KEY");
// Cohere API key here: // https://dashboard.cohere.com/welcome/register
public static final String COHERE_API_KEY = System.getenv("COHERE_API_KEY");
// Anthropic API key here:: https://console.anthropic.com/settings/keys
public static final String ANTHROPIC_API_KEY = System.getenv("ANTHROPIC_API_KEY");
// HuggingFace API key here: https://huggingface.co/settings/tokens
public static final String HF_API_KEY = System.getenv("HF_API_KEY");
// Judge0 RapidAPI key here: https://rapidapi.com/judge0-official/api/judge0-ce
public static final String RAPID_API_KEY = System.getenv("RAPID_API_KEY");
Gen AI: estructura del paquete de código
Paquete io.fusion.air.microservice.ai.genai
- controladores (Rest Endpoints para probar los ejemplos)
- centro
- asistentes (Basado en LangChain4J AiService)
- modelos (modelos de datos utilizados en el código)
- mensajes (mensajes estructurados para tener resultados específicos)
- servicios (LLM Specific Business Logic reutilizado en todos los ejemplos).
- herramientas (funciones que se invocan según la búsqueda de LLM)
- ejemplos (Claude 3, Falcon 2, GPT 4o, Gemini, Gemma, Llama3, Mistral, Phi-3, Wizard Math)
- utils (Código genérico para crear modelos y configuraciones de ChatLanguage, claves API y Console Runner)
Estructura del código
Prueba rápida después de iniciar la aplicación SpringBoot
Análisis de sentimiento usando ChatGPT 4o
Moderación de contenido usando ChatGPT 4o
ChatBot usando RAG (datos personalizados): estudio de caso: servicio de alquiler de automóviles
Arquitectura RAG
La generación aumentada de recuperación (RAG) mejora la producción de modelos de lenguaje grandes (LLM) mediante la incorporación de bases de conocimiento externas autorizadas. Si bien los LLM se capacitan en vastos conjuntos de datos y utilizan miles de millones de parámetros para generar respuestas para tareas como responder preguntas, traducir idiomas y completar textos, RAG optimiza estos resultados al hacer referencia a fuentes de información específicas y actualizadas más allá de los datos de entrenamiento del modelo. Este proceso amplía significativamente las capacidades de los LLM para atender dominios especializados o el conocimiento interno de una organización sin necesidad de volver a capacitar el modelo. En consecuencia, RAG proporciona una solución rentable para garantizar que el contenido generado siga siendo relevante, preciso y contextualmente apropiado.
Los modelos de lenguajes grandes (LLM) enfrentan varios desafíos:
- Pueden proporcionar información falsa cuando no tienen la respuesta correcta.
- Pueden ofrecer información obsoleta o genérica cuando el usuario espera respuestas específicas y actuales.
- Podrían generar respuestas basadas en fuentes no autorizadas.
- Pueden producir respuestas inexactas debido a la confusión terminológica, donde diferentes fuentes de capacitación utilizan los mismos términos para describir diferentes conceptos.
La generación aumentada de recuperación (RAG) aborda varios desafíos asociados con los LLM al dirigir el modelo para que obtenga información relevante de fuentes de conocimiento autorizadas y predeterminadas. Este enfoque permite a las organizaciones ejercer más control sobre el contenido generado por el modelo, asegurando precisión y relevancia. Además, proporciona a los usuarios información más clara sobre las fuentes y los procesos que utiliza el LLM para formular sus respuestas.
Conversación sobre LLM con (datos personalizados) Acuerdo de servicio de alquiler de automóviles
Extracciones de datos usando ChatGPT 4o
LangChain4J opera en dos niveles de abstracción:
- Nivel bajo. En este nivel, tiene la mayor libertad y acceso a todos los componentes de bajo nivel, como ChatLanguageModel, UserMessage, AiMessage, EmbeddingStore, Embedding, etc. Estas son las "primitivas" de su aplicación basada en LLM. Tienes control total sobre cómo combinarlos, pero necesitarás escribir más código adhesivo.
- Alto nivel. En este nivel, interactúa con los LLM utilizando API de alto nivel como AiServices y Chains, lo que le oculta toda la complejidad y el texto repetitivo. Aún tiene la flexibilidad de ajustar y afinar el comportamiento, pero se hace de forma declarativa.
Leer más... Introducción a LangChain4J
Estructura del paquete
Requisitos previos
- SpringBoot 3.2.4
- Java 22
- Yakarta EE 10 (jakarta.servlet. , jakarta.persistence. , javax.validation.*)
- Base de datos PostgreSQL 14
- Ollama 0.1.38
De forma predeterminada, la aplicación utilizará la base de datos en memoria H2. No se requiere configuración de base de datos para esto.
Paso 1.1 - Primeros pasos
- clon de git https://github.com/arafkarsh/ms-springboot-324-ai.git
- cd ms-springboot-324-ai
- base de datos del CD
- Lea README.md para configurar su base de datos (base de datos PostgreSQL)
- De forma predeterminada (modo de desarrollo), la aplicación utilizará la base de datos H2 en memoria
Paso 1.2: compilar (una vez que el código esté listo)
1.2.1 Compilar el código
Ejecute la "compilación" desde ms-springboot-324-ai
- compilar O ./compile (se ejecuta en Linux y Mac OS)
- mvn limpio; mvn -e paquete; (Todas las plataformas)
- Utilice las opciones de compilación IDE
1.2.2 Qué hará el script "Compilar"
- Limpiar la carpeta de destino
- Generar el número de compilación. y fecha de compilación (toma la copia de seguridad de application.properties)
- construir el resultado final SpringBoot Fat Jar y Maven Thin Jar
- copie los archivos jar (y las dependencias) a la carpeta src/docker
- copie el archivo application.properties a la carpeta actual y a la carpeta src/docker
En el paso 1.2.2, el archivo application.properties será generado automáticamente por el script de "compilación". Este es un paso crítico. Sin el archivo application.properties generado, el servicio NO se ejecutará. Hay un archivo de propiedades de la aplicación prediseñado.
Paso 1.3 - Ejecutar
1.3.1 Iniciar el servicio
- ejecutar O ./run (se ejecuta en Linux o Mac OS)
- ejecutar prod (para ejecutar el perfil de producción, el valor predeterminado es el perfil de desarrollo)
- mvn spring-boot:run (Todas las plataformas - Base de datos en memoria H2 de desarrollo de perfiles)
- mvn spring-boot:run -Dspring-boot.run.profiles=prod (Todas las plataformas - Perfil prod PostgreSQL DB)
1.3.2 Probar el servicio
- test O ./test (se ejecuta en Linux o Mac OS)
- Ejecute los comandos curl directamente (desde el script de prueba)
Modelos de chat
- OpenAI (Ejemplos disponibles)
- Ollama: ejecute modelos de IA en su máquina local (ejemplos disponibles)
- IA abierta de Azure
- Roca Amazónica
- Comando de Cohere
- Jurásico-2 de los laboratorios AI21
- La Llama de Meta 2
- El titán del Amazonas
- Palma de Google Vertex AI
- Google Géminis
- HuggingFace: acceda a miles de modelos, incluidos los de Meta como Llama2
- Mistral AI
Modelos de texto a imagen
- OpenAI con DALL-E (Ejemplos disponibles)
- EstabilidadAI
Modelos de transcripción (audio a texto)
Incrustar modelos
- Abierto AI
- Ollama
- Azure abierto AI
- ONNX
- PostgresML
- Cohesión de lecho rocoso
- Titán de roca
- Google VertexAI
- IA de niebla
La API Vector Store proporciona portabilidad entre diferentes proveedores y presenta una novedosa API de filtrado de metadatos similar a SQL que mantiene la portabilidad.
Bases de datos vectoriales
- Búsqueda de vectores azules
- croma
- milvus
- neo4j
- PostgreSQL/PGVector
- Piña
- Redis
- Weaviate
- Qdrant
Los modelos compatibles son
- Abierto AI
- Azure abierto AI
- VérticeAI
- Mistral AI
Consulte los ejemplos de operación CRUD
- Configuración de Postman con puntos finales REST para pruebas
- Ejemplos de CRUD
- Ejemplos de tokens JWT
Verifique CRUD_Examples.md
(C) Copyright 2024: Licencia Apache 2: Autor: Araf Karsh Hamid
* Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia");
* No puede utilizar este archivo excepto de conformidad con la Licencia.
* Puede obtener una copia de la Licencia en
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* A menos que lo exija la ley aplicable o se acuerde por escrito, el software
* distribuido bajo la Licencia se distribuye "TAL CUAL",
*SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas.
* Consulte la Licencia para conocer el idioma específico que rige los permisos y
* limitaciones bajo la Licencia.