Построение микросервиса для с использованием Llama и ChatGPT

По мере развития LLM интеграция нескольких моделей или переключение между ними становится все более сложной задачей. В данной статье предлагается микросервисный подход, позволяющий отделить интеграцию моделей от бизнес-приложений и упростить этот процесс.

Архитектура микросервисов способствует созданию гибких, независимых сервисов с четко определенными границами. Такой масштабируемый подход позволяет разработчикам поддерживать и развивать отдельные сервисы, не затрагивая при этом все приложение. Однако для реализации всего потенциала архитектуры микросервисов, особенно в чат-приложениях на базе ИИ, необходима надежная интеграция с новейшими большими языковыми моделями (LLM), такими как Meta Llama V2 и ChatGPT от OpenAI, а также другие тонкие настройки в зависимости от конкретного случая использования приложения, чтобы обеспечить многомодельный подход для создания диверсифицированного решения.

LLM – это крупномасштабные модели, генерирующие человекоподобный текст на основе обучения на разнообразных данных. Обучаясь на миллиардах слов в Интернете, LLM понимают контекст и генерируют настроенный контент в различных областях. Однако интеграция различных LLM в одно приложение часто сопряжена с трудностями, поскольку для каждой модели требуются уникальные интерфейсы, конечные точки доступа и специфическая полезная нагрузка. Поэтому наличие единого интеграционного сервиса, способного работать с различными моделями, улучшает архитектурный дизайн и позволяет масштабировать независимые сервисы.

В этом учебном пособии мы познакомимся с интеграцией IntelliNode для ChatGPT и LLaMA V2 в микросервисной архитектуре с использованием Node.js и Express.

Варианты интеграции с чатботом

Вот несколько вариантов интеграции чата, предоставляемых IntelliNode:

  1. 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, по удобству использования и безопасности.
  2. 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 и щелкните на доменах.

Построение микросервиса для с использованием Llama и ChatGPT

2- Создание домена SageMaker: Начните с создания нового домена на AWS SageMaker. Этот шаг позволяет создать контролируемое пространство для операций SageMaker.

Построение микросервиса для с использованием Llama и ChatGPT

3- Развернуть модель Llama: Используйте SageMaker JumpStart для развертывания модели Llama, которую вы планируете интегрировать. Рекомендуется начать с модели 2B, поскольку ежемесячные расходы на эксплуатацию модели 70B выше.

Построение микросервиса для с использованием Llama и ChatGPT

4– Скопируйте имя конечной точки: После развертывания модели не забудьте записать имя конечной точки, которое очень важно для дальнейших действий.

Построение микросервиса для с использованием Llama и ChatGPT

5 – Создание Lambda-функции: AWS Lambda позволяет запускать внутренний код без управления серверами. Создайте лямбда-функцию Node.js, которая будет использоваться для интеграции развернутой модели.

6- Настройка переменной окружения: Создайте внутри лямбда-функции переменную окружения llama_endpoint со значением конечной точки SageMaker.

Построение микросервиса для с использованием Llama и ChatGPT

7- Импорт лямбды Intellinode: Вам необходимо импортировать подготовленный zip-файл Lambda, который устанавливает соединение с вашим развертыванием SageMaker Llama. Этот экспорт представляет собой zip-файл, и его можно найти в каталоге lambda_llama_sagemaker.

Построение микросервиса для с использованием Llama и ChatGPT

8- Конфигурация шлюза API: Нажмите на опцию “Add trigger” на странице Lambda-функции и выберите “API Gateway” из списка доступных триггеров.

Построение микросервиса для с использованием Llama и ChatGPT
Построение микросервиса для с использованием Llama и ChatGPT

9- Настройки лямбда-функции: Обновите роль лямбда-функции для предоставления необходимых разрешений на доступ к конечным точкам SageMaker. Кроме того, следует увеличить период тайм-аута функции, чтобы учесть время обработки. Выполните эти настройки на вкладке “Конфигурация” функции Lambda.

Для обновления разрешений щелкните на имени роли, которая предоставляет разрешение на доступ к sagemaker:

Построение микросервиса для с использованием Llama и ChatGPT

Интеграция с 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. Такая интеграция открывает возможности для использования бесконечного множества бизнес-сценариев, основанных на передовом ИИ.

Перевод требований к машинному обучению в разрозненные микросервисы позволяет обеспечить гибкость и масштабируемость приложения. Вместо того чтобы настраивать свои операции в соответствии с ограничениями монолитной модели, теперь можно индивидуально управлять и развивать функции языковых моделей, что повышает эффективность и упрощает устранение неполадок и управление обновлениями.

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *