Построение микросервиса для с использованием Llama и ChatGPT
По мере развития LLM интеграция нескольких моделей или переключение между ними становится все более сложной задачей. В данной статье предлагается микросервисный подход, позволяющий отделить интеграцию моделей от бизнес-приложений и упростить этот процесс.
Архитектура микросервисов способствует созданию гибких, независимых сервисов с четко определенными границами. Такой масштабируемый подход позволяет разработчикам поддерживать и развивать отдельные сервисы, не затрагивая при этом все приложение. Однако для реализации всего потенциала архитектуры микросервисов, особенно в чат-приложениях на базе ИИ, необходима надежная интеграция с новейшими большими языковыми моделями (LLM), такими как Meta Llama V2 и ChatGPT от OpenAI, а также другие тонкие настройки в зависимости от конкретного случая использования приложения, чтобы обеспечить многомодельный подход для создания диверсифицированного решения.
LLM – это крупномасштабные модели, генерирующие человекоподобный текст на основе обучения на разнообразных данных. Обучаясь на миллиардах слов в Интернете, LLM понимают контекст и генерируют настроенный контент в различных областях. Однако интеграция различных LLM в одно приложение часто сопряжена с трудностями, поскольку для каждой модели требуются уникальные интерфейсы, конечные точки доступа и специфическая полезная нагрузка. Поэтому наличие единого интеграционного сервиса, способного работать с различными моделями, улучшает архитектурный дизайн и позволяет масштабировать независимые сервисы.
В этом учебном пособии мы познакомимся с интеграцией IntelliNode для ChatGPT и LLaMA V2 в микросервисной архитектуре с использованием Node.js и Express.
Варианты интеграции с чатботом
Вот несколько вариантов интеграции чата, предоставляемых IntelliNode:
- LLaMA V2: Вы можете интегрировать модель LLaMA V2 либо через API Replicate для простого процесса, либо через хост AWS SageMaker для дополнительного контроля.
LLaMA V2 – это мощная модель языка с открытым исходным кодом (Large Language Model, LLM), которая была предварительно обучена и настроена с использованием до 70 Б параметров. Она отлично справляется со сложными задачами рассуждений в различных областях, включая такие специализированные области, как программирование и творческое письмо. Методика обучения включает в себя самоконтроль данных и согласование с предпочтениями человека с помощью технологии Reinforcement Learning with Human Feedback (RLHF). LLaMA V2 превосходит существующие модели с открытым исходным кодом и сравнима с такими закрытыми моделями, как ChatGPT и BARD, по удобству использования и безопасности. - ChatGPT: Просто предоставив свой ключ OpenAI API, модуль IntelliNode позволяет интегрироваться с моделью в простой чат-интерфейс. Доступ к ChatGPT можно получить через модели GPT 3.5 или GPT 4. Эти модели были обучены на огромном количестве данных и отлажены таким образом, чтобы обеспечивать высококонтекстные и точные ответы.
Пошаговая интеграция
Начнем с инициализации нового проекта Node.js. Откройте терминал, перейдите в каталог проекта и выполните следующую команду:
npm init -y
Эта команда создаст новый файл package.json
для вашего приложения.
Далее установите Express.js, который будет использоваться для обработки HTTP-запросов и ответов, и intellinode для подключения LLM-моделей:
npm install express
npm install intellinode
После завершения установки создайте в корневом каталоге проекта новый файл с именем app.js
. Затем добавьте в app.js
инициализирующий код экспресса.
const express = require('express');
const app = express();
app.use(express.json());
// Define your routes here
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Интеграция Llama V2 с использованием API Replicate
Replicate обеспечивает быструю интеграцию с Llama V2 через API-ключ, а IntelliNode предоставляет интерфейс чатбота для отделения бизнес-логики от бэкенда Replicate, позволяя переключаться между различными моделями чата.
Начнем с интеграции с Llama, размещенной в бэкенде Replica:
const { Chatbot, LLamaReplicateInput, SupportedChatModels } = require('intellinode');
app.get('/llama/replica', async (req, res) => {
const chatbot = new Chatbot(process.env.REPLICATE_API_KEY, SupportedChatModels.REPLICATE);
const system = 'You are a helpful assistant.';
const input = new LLamaReplicateInput(system);
input.addUserMessage(req.query.message);
const response = await chatbot.chat(input);
res.json({ response });
});
Получите пробный ключ с сайта replicate.com для активации интеграции.
Интеграция Llama V2 с помощью AWS SageMaker
Теперь рассмотрим интеграцию Llama V2 через AWS SageMaker, обеспечивающую конфиденциальность и дополнительный уровень контроля.
Для интеграции необходимо сгенерировать конечную точку API из учетной записи AWS, сначала мы настроим код интеграции в нашем микросервисном приложении:
// When copying the code to the same file, ensure removing the repeated imports
const { Chatbot, LLamaSageInput, SupportedChatModels } = require('intellinode');
app.get('/llama/aws', async (req, res) => {
const chatbot = new Chatbot(null, SupportedChatModels.SAGEMAKER, {url: process.env.AWS_API_URL});
const system = 'You are a helpful assistant.';
const input = new LLamaSageInput(system);
input.addUserMessage(req.query.message);
const response = await chatbot.chat(input);
res.json({ response });
});
Ниже описаны шаги по созданию конечной точки Llama в вашей учетной записи, после настройки API-шлюза скопируйте URL-адрес для запуска сервиса ‘/llama/aws’.
Чтобы настроить конечную точку Llama V2 в учетной записи AWS:
1- Сервис SageMaker: выберите сервис SageMaker в учетной записи AWS и щелкните на доменах.
2- Создание домена SageMaker: Начните с создания нового домена на AWS SageMaker. Этот шаг позволяет создать контролируемое пространство для операций SageMaker.
3- Развернуть модель Llama: Используйте SageMaker JumpStart для развертывания модели Llama, которую вы планируете интегрировать. Рекомендуется начать с модели 2B, поскольку ежемесячные расходы на эксплуатацию модели 70B выше.
4– Скопируйте имя конечной точки: После развертывания модели не забудьте записать имя конечной точки, которое очень важно для дальнейших действий.
5 – Создание Lambda-функции: AWS Lambda позволяет запускать внутренний код без управления серверами. Создайте лямбда-функцию Node.js, которая будет использоваться для интеграции развернутой модели.
6- Настройка переменной окружения: Создайте внутри лямбда-функции переменную окружения llama_endpoint со значением конечной точки SageMaker.
7- Импорт лямбды Intellinode: Вам необходимо импортировать подготовленный zip-файл Lambda, который устанавливает соединение с вашим развертыванием SageMaker Llama. Этот экспорт представляет собой zip-файл, и его можно найти в каталоге lambda_llama_sagemaker.
8- Конфигурация шлюза API: Нажмите на опцию “Add trigger” на странице Lambda-функции и выберите “API Gateway” из списка доступных триггеров.
9- Настройки лямбда-функции: Обновите роль лямбда-функции для предоставления необходимых разрешений на доступ к конечным точкам SageMaker. Кроме того, следует увеличить период тайм-аута функции, чтобы учесть время обработки. Выполните эти настройки на вкладке “Конфигурация” функции Lambda.
Для обновления разрешений щелкните на имени роли, которая предоставляет разрешение на доступ к sagemaker:
Интеграция с ChatGPT
Наконец, мы проиллюстрируем шаги по интеграции Openai ChatGPT в качестве еще одной опции в архитектуру микросервиса:
// When copying the code to the same file, ensure removing the repeated imports
const { Chatbot, ChatGPTInput, ChatGPTMessage } = require('intellinode');
app.get('/chatgpt', async (req, res) => {
const chatbot = new Chatbot(process.env.OPENAI_API_KEY, 'openai');
const system = 'You are a helpful assistant.';
const input = new ChatGPTInput(system);
input.addUserMessage(req.query.message);
const responses = await chatbot.chat(input);
res.json({ responses });
});
Получить пробный ключ можно на сайте platform.openai.com.
Эксперимент по исполнению
Сначала экспортируйте ключ API в терминал следующим образом:
export REPLICATE_API_KEY=<your-replica-key>
export OPENAI_API_KEY=<your-openai-key>
# optional - if you deployed Llama sagemaker ednpoint
export AWS_API_URL=<sagemaker-url>
Затем запустите приложение node:
node app.js
Для тестирования сервиса chatGPT наберите в браузере следующий url:
http://localhost:3000/chatgpt?message=hello
Мы создали микросервис, который использует возможности больших языковых моделей, таких как Llama V2, и ChatGPT от OpenAI. Такая интеграция открывает возможности для использования бесконечного множества бизнес-сценариев, основанных на передовом ИИ.
Перевод требований к машинному обучению в разрозненные микросервисы позволяет обеспечить гибкость и масштабируемость приложения. Вместо того чтобы настраивать свои операции в соответствии с ограничениями монолитной модели, теперь можно индивидуально управлять и развивать функции языковых моделей, что повышает эффективность и упрощает устранение неполадок и управление обновлениями.