Gen Ai — примеры Springboot/Langchain4J
Генеративный ИИ относится к подмножеству искусственного интеллекта, который может генерировать новый контент на основе входных данных. Сюда входят модели, которые могут создавать текст, изображения, музыку и даже видео. Примеры генеративного ИИ включают такие языковые модели, как GPT-3 и DALL-E от OpenAI, которые могут генерировать человеческий текст и изображения из текстовых описаний соответственно.
Генеративные модели ИИ обычно обучаются на обширных наборах данных и используют методы глубокого обучения для изучения закономерностей и структур данных. Они имеют широкий спектр применения, в том числе:
- Обработка естественного языка (NLP): создание человеческого текста для чат-ботов, переводов и создания контента.
- Творческое искусство: создание произведений искусства, музыки и элементов дизайна.
- Увеличение данных: создание дополнительных данных для обучения других моделей машинного обучения.
- Здравоохранение: помощь в медицинской визуализации и создании индивидуальных планов лечения.
Как LangChain4J Gen AI API помогает разработчикам создавать приложения AI Spring Boot
LangChain4J — это библиотека Java, предназначенная для упрощения интеграции больших языковых моделей (LLM) и возможностей искусственного интеллекта в приложения Java, в том числе созданные с помощью Spring Boot. Вот как это помогает разработчикам:
- Единый API для LLM: LangChain4J предоставляет унифицированный API, который поддерживает нескольких поставщиков LLM, таких как OpenAI и Google Vertex AI. Эта абстракция позволяет разработчикам переключаться между различными LLM без существенного изменения их кодовой базы.
- Интеграция хранилища встраивания: оно интегрируется с различными хранилищами встраивания, обеспечивая эффективную обработку векторизованных данных. Это особенно полезно для задач генерации с расширенным поиском (RAG), когда соответствующая информация извлекается из базы знаний для улучшения реакции ИИ.
- Набор функций: библиотека включает в себя полный набор инструментов для создания шаблонов подсказок, управления памятью и анализа вывода. Эти инструменты помогают создавать сложные приложения искусственного интеллекта, предоставляя абстракции высокого уровня и готовые к использованию компоненты.
- Интеграция Spring Boot: LangChain4J поддерживает Spring Boot, что упрощает разработчикам создание надежных и масштабируемых приложений искусственного интеллекта. Интеграция позволяет беспрепятственно интегрировать службы искусственного интеллекта в приложения Spring Boot, используя функции внедрения зависимостей Spring и управления конфигурацией.
- Примеры и документация: LangChain4J предлагает обширную документацию и примеры, помогая разработчикам разобраться в различных вариантах использования и демонстрируя, как реализовать функции искусственного интеллекта в их приложениях.
Практический пример: приложение для здравоохранения — диагностические микросервисы с поддержкой Gen Ai
Примеры искусственного интеллекта поколения: сравнение 8 LLM (3 облачных и 5 локальных) по корпоративным функциям
Следующее сравнение основано на функциях, доступных в API LangChain4J (который поддерживается OpenAI ChatGPT). Эти функции необходимы для разработки корпоративных приложений на основе искусственного интеллекта.
# | Пример | GPT 4o | Мета Лама3 | Мистраль | Майкрософт Фи-3 | Гугл Джемма | ТИИ Сокол 2 | Клод 3 | Близнецы 1.5 |
---|
1. | Привет, мир | ? | ? | ? | ? | ? | ? | ? | ? |
2. | Сложный мир | ? | ? | ? М1 | ? | ? | ? | ? | ? |
3. | Пользовательские данные | ? | ? | ? | ? | ? | ? Ф1 | ? | ? |
4. | Генерация изображений | ? | ? Л1 | ? М2 | ? П1 | ? | ? Ф2 | ? | ? |
5. | Шаблон подсказки | ? | ? | ? М3 | ? | ? | ? | ? | ? |
6. | Инструменты | ? | ? Л2 | ? М4 | ? П2 | ? Г1 | ? Ф3 | ? | ? Г1 |
7. | Память чата | ? | ? | ? | ? П3 | ? G2 | ? | ? | ? G2 |
8. | Фьюшот | ? | ? | ? М5 | ? | ? | ? | ? | ? G3 |
9. | Языковой переводчик | ? | ? | ? М6 | ? | ? | ? | ? | ? |
10. | Анализатор настроений | ? | ? | ? | ? | ? | ? | ? | ? |
11. | Экстрактор данных | ? О1 | ? Л3 | ? М7 | ? П4 | ? G3 | ? F4 | ? | ? G4 |
12. | Постоянное хранилище | ? | ? | ? М8 | ? П5 | ? G4 | ? | ? | ? |
Поисковая дополненная генерация (RAG) Примеры 8 LLM
# | Пример | GPT 4o | Мета Лама3 | Мистраль | Майкрософт Фи-3 | Гугл Джемма | ТИИ Сокол 2 | Клод 3 | Близнецы 1.5 |
---|
51. | Простой | ? | ? | ? | ? | ? | ? | ? | ? |
52. | Сегменты | ? | ? | ? | ? | ? | ? | ? | ? |
53. | Преобразователь запросов | ? | ? | ? | ? | ? | ? | ? | ? |
54. | Маршрутизатор запросов | ? | ? Л4 | ? М9 | ? П6 | ? G4 | ? F5 | ? | ? G5 |
55. | Ререйтинг | ? | ? | ? | ? | ? | ? | ? | ? |
56. | Метаданные | ? | ? | ? | ? | ? | ? | ? | ? |
57. | Несколько ретриверов контента | ? | ? | ? | ? | ? | ? | ? | ? |
58. | Пропуск получения контента | ? | ? | ? | ? | ? | ? | ? | ? |
59. | Приложение для здравоохранения | ? | ? | ? | ? | ? | ? | ? | ? |
Лучшие рейтинги LLM на основе корпоративных функций
# | Классифицировать | Компания | Магистр права | Счет | Категория |
---|
1 | 1 | антропный | Клод 3 Хайку | 21/21 | Облако |
2 | 2 | Открытый ИИ | Чат GPT 4o | 20/21 | Облако |
3 | 3 | Мета | Лама 3 | 17/21 | Местный |
4 | 4 | ТИИ | Сокол 2 | 16/21 | Местный |
5 | 4 | Google | Близнецы 1.5 Про | 16/21 | Облако |
6 | 4 | Google | Джемма | 16/21 | Местный |
7 | 5 | Майкрософт | ФИ 3 | 15/21 | Местный |
8 | 6 | Мистраль | Мистраль | 21 декабря | Местный |
Примечание. Облачные LLM будут поддерживать более 500 миллиардов параметров, тогда как локальные LLM в основном основаны на 8 миллиардах параметров.
Ознакомьтесь с более подробной информацией о результатах тестирования
Установите локальные LLM
Установка локальных LLM с помощью Ollama
- Мета Лама3
- Гугл Джемма
- Microsoft PHI-3
- ТИИ Сокол 2
- Мистраль
- Волшебная математика
Ознакомьтесь с руководством по установке.
Получите ключи для тестирования облачных программ LLM
Зарегистрируйтесь, чтобы получить ключи API
- Open AI — ChatGPT (ключ API можно создать здесь: https://platform.openai.com/api-keys)
- Anthropic — Claude 3 (ключ API можно создать здесь: https://console.anthropic.com/settings/keys)
- Google Cloud – (https://console.cloud.google.com/ – инструкции см. в AiConstants.java)
- Cohere — (ключ API здесь: https://dashboard.cohere.com/welcome/register)
- HuggingFace — (ключ API здесь: https://huggingface.co/settings/tokens)
- Rapid — (ключ API здесь: https://rapidapi.com/judge0-official/api/judge0-ce)
Установите эти ключи в своей среде
// 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 — структура пакета кода
Пакет io.fusion.air.microservice.ai.genai
- контроллеры (Rest Endpoints для тестирования примеров)
- основной
- помощники (на базе LangChain4J AiService)
- модели (модели данных, используемые в коде)
- подсказки (структурированные подсказки с конкретными результатами)
- сервисы (специфическая бизнес-логика LLM повторно используется во всех примерах.)
- инструменты (функции вызываются на основе поиска LLM)
- примеры (Клод 3, Сокол 2, GPT 4o, Близнецы, Джемма, Лама3, Мистраль, Фи-3, Волшебная математика)
- utils (общий код для создания моделей и конфигураций ChatLanguageModels, ключей API и средства запуска консоли)
Структура кода
Быстрый тест после запуска приложения SpringBoot
Анализ настроений с использованием ChatGPT 4o
Модерация контента с помощью ChatGPT 4o
Чат-бот с использованием RAG (пользовательские данные) – практический пример: служба проката автомобилей
РАГ Архитектура
Поисково-дополненная генерация (RAG) повышает производительность больших языковых моделей (LLM) за счет включения авторитетных внешних баз знаний. В то время как LLM обучаются на обширных наборах данных и используют миллиарды параметров для генерации ответов на такие задачи, как ответы на вопросы, языковой перевод и завершение текста, RAG оптимизирует эти результаты, ссылаясь на конкретные, актуальные источники информации, выходящие за рамки данных обучения модели. Этот процесс значительно расширяет возможности LLM для обслуживания специализированных областей или внутренних знаний организации без необходимости переобучения модели. Следовательно, RAG предоставляет экономически эффективное решение, гарантирующее, что создаваемый контент остается актуальным, точным и контекстуально соответствующим.
Модели больших языков (LLM) сталкиваются с рядом проблем:
- Они могут предоставить ложную информацию, если у них нет правильного ответа.
- Они могут предоставлять устаревшую или общую информацию, когда пользователь ожидает конкретных, текущих ответов.
- Они могут генерировать ответы, основанные на неавторитетных источниках.
- Они могут давать неточные ответы из-за путаницы в терминологии, когда разные источники обучения используют одни и те же термины для описания разных концепций.
Поисково-дополненная генерация (RAG) решает несколько проблем, связанных с LLM, направляя модель на получение соответствующей информации из авторитетных, заранее определенных источников знаний. Такой подход позволяет организациям лучше контролировать контент, создаваемый моделью, обеспечивая точность и актуальность. Кроме того, он предоставляет пользователям более четкое представление об источниках и процессах, которые LLM использует для формулирования своих ответов.
Разговор с использованием LLM с (Пользовательские данные) Соглашением об аренде автомобиля
Извлечение данных с использованием ChatGPT 4o
LangChain4J работает на двух уровнях абстракции:
- Низкий уровень. На этом уровне у вас есть наибольшая свобода и доступ ко всем низкоуровневым компонентам, таким как ChatLanguageModel, UserMessage, AiMessage, EmbeddingStore, Embedding и т. д. Это «примитивы» вашего приложения на базе LLM. У вас есть полный контроль над тем, как их комбинировать, но вам нужно будет написать больше связующего кода.
- Высокий уровень. На этом уровне вы взаимодействуете с LLM, используя API высокого уровня, такие как AiServices и Chains, что скрывает от вас всю сложность и шаблонность. У вас по-прежнему есть возможность корректировать и точно настраивать поведение, но это делается декларативно.
Подробнее... LangChain4J Введение
Структура пакета
Предварительные требования
- СпрингБот 3.2.4
- Ява 22
- Jakarta EE 10 (jakarta.servlet. , jakarta.persistence. , javax.validation.*)
- База данных PostgreSQL 14
- Оллама 0.1.38
По умолчанию приложение будет использовать базу данных H2 в памяти. Для этого не требуется настройка базы данных.
Шаг 1.1 — Начало работы
- клон git https://github.com/arafkarsh/ms-springboot-324-ai.git
- компакт-диск ms-springboot-324-ai
- база данных компакт-диска
- Прочтите README.md, чтобы настроить базу данных (база данных PostgreSQL).
- По умолчанию (режим разработки) приложение будет использовать базу данных H2 в памяти.
Шаг 1.2. Компиляция (как только ваш код будет готов)
1.2.1. Компиляция кода
Запустите «компиляцию» из ms-springboot-324-ai.
- скомпилировать ИЛИ ./compile (работает в Linux и Mac OS)
- МВН чистый; МВН -е пакет; (Все платформы)
- Используйте параметры компиляции IDE
1.2.2 Что будет делать сценарий «Компиляция»
- Очистите целевую папку
- Создайте номер сборки. и дата сборки (требуется резервная копия application.properties)
- построить окончательный результат: толстая банка SpringBoot и тонкая банка maven
- скопируйте файлы jar (и зависимости) в папку src/docker
- скопируйте файл application.properties в текущую папку и папку src/docker.
На шаге 1.2.2 файл application.properties будет автоматически сгенерирован сценарием компиляции. Это критический шаг. Без созданного файла application.properties служба НЕ будет работать. Существует предварительно созданный файл свойств приложения.
Шаг 1.3 — Запуск
1.3.1 Запуск службы
- запустить ИЛИ ./run (работает в Linux или Mac OS)
- запустить prod (для запуска производственного профиля по умолчанию используется профиль разработчика)
- mvn Spring-boot:run (Все платформы — база данных профиля dev H2 в памяти)
- mvn Spring-boot:run -Dspring-boot.run.profiles=prod (Все платформы — профиль prod PostgreSQL DB)
1.3.2 Тестирование услуги
- test OR ./test (работает в Linux или Mac OS)
- Выполните команды Curl напрямую (из тестового скрипта)
Модели чата
- OpenAI (доступны примеры)
- Оллама — запускайте модели ИИ на локальном компьютере (доступны примеры)
- Открытый ИИ Azure
- Амазонка
- Команда Когера
- Юрский период-2 лаборатории AI21
- Лама Меты 2
- Титан Амазонки
- Google Vertex AI Palm
- Гугл Близнецы
- HuggingFace — доступ к тысячам моделей, в том числе из Meta, например Llama2.
- МистральАИ
Модели преобразования текста в изображение
- OpenAI с DALL-E (доступны примеры)
- СтабильностьИИ
Транскрипция (аудио в текст) Модели
Встраивание моделей
- ОпенАИ
- Оллама
- Azure OpenAI
- ОННКС
- ПостгресМЛ
- Бедрок Когер
- Коренной Титан
- Google ВертексИИ
- Мисталь ИИ
API Vector Store обеспечивает переносимость между различными поставщиками благодаря новому API-интерфейсу фильтрации метаданных, похожему на SQL, который поддерживает переносимость.
Векторные базы данных
- Векторный поиск Azure
- Цветность
- Милвус
- Neo4j
- PostgreSQL/PGVector
- СосноваяШишка
- Редис
- Плетение
- Кдрант
Поддерживаемые модели:
- ОпенАИ
- Azure OpenAI
- ВертексАИ
- Мистраль ИИ
Ознакомьтесь с примерами операций CRUD
- Настройка Postman с конечными точками REST для тестирования
- Примеры CRUD
- Примеры токенов JWT
Проверьте CRUD_Examples.md
(C) Авторские права 2024: Лицензия Apache 2: Автор: Араф Карш Хамид
* Лицензия Apache версии 2.0 («Лицензия»);
* вы можете использовать этот файл только в соответствии с Лицензией.
* Вы можете получить копию Лицензии по адресу
*
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение
* распространяется по Лицензии, распространяется на условиях «КАК ЕСТЬ»,
* БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых.
* См. лицензию для конкретного языка, регулирующего разрешения и
* ограничения по Лицензии.