Целью этого доказательства концепции является оценка того, что необходимо для создания универсального, надежного и интуитивно понятного чат-бота, позволяющего пользователям обсуждать темы, связанные с Alkemio. Проект не подлежит развертыванию как таковой, но он должен послужить ценным вкладом для демонстрации возможностей генеративного ИИ и помочь оценить, что требуется для внедрения этой функциональности в платформу.
Модели больших языков (LLM) значительно улучшились за последний период и не являются повсеместными и производительными. Это открывает массу возможностей для их использования в разных сферах. OpenAI — самый известный коммерческий поставщик программ LLM, но существует широкий выбор моделей LLM, как коммерческих, так и с открытым исходным кодом. Хотя это открывает возможности, это также создает риск привязки к поставщику услуг.
LLM — это лишь один компонент, необходимый для практической реализации генеративных решений искусственного интеллекта, но необходимы также многие другие «строительные блоки». Langchain — это популярная библиотека с открытым исходным кодом, которая предоставляет эти строительные блоки и создает уровень абстракции, обеспечивая независимость от провайдера.
Обучение LLM непомерно дорого для большинства организаций, но для большинства практических реализаций необходимо включать специфичные для организации данные. Распространенный подход заключается в добавлении определенного контекста к вопросу пользователя в приглашение, отправляемое в LLM. Это создает проблему, поскольку LLM обычно допускают только запросы ограниченного размера (обычно около 4 000 токенов). Поэтому важно, чтобы была предоставлена соответствующая контекстуальная информация, и для этого необходимо сделать следующее:
Этот проект был вдохновлен многими статьями, как теоретическими, так и практическими. Значительная часть базы кода взята из проекта «Создание чат-бота с хорошей архитектурой AWS с помощью LangChain».
Проекты были реализованы как микросервис на основе контейнера с RPC RabbitMQ. Существует одна очередь RabbitMQ:
alkemio-virtual-contributor-engine-guidance
— очередь для подачи запросов в микросервисПолезная нагрузка запроса состоит из json со следующей структурой (пример запроса):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
Типы операций:
ingest
: сбор данных с веб-сайта фонда Alkemio (через исходный код Github) и встраивание с использованием текстовой модели OpenAI Ada, без запроса на добавление данных .reset
: сброс истории чата для текущего чата, требуется идентификатор пользователя.query
: опубликовать следующий вопрос в чате, см. примерОтвет публикуется в автоматически созданной эксклюзивной безымянной очереди.
Имеется черновой вариант реализации языка взаимодействия модели (требует существенной доработки). Если код языка не указан, предполагается, что используется английский язык. Возможные варианты: «EN»: «Английский», «США»: «Английский», «Великобритания»: «Английский», «FR»: «Французский», «DE»: «Немецкий», «ES»: «Испанский». , 'NL': 'Голландский', 'BG': 'Болгарский', 'UA': 'Украинский'
*примечание: существует более ранняя (устаревшая) реализация RESTful, доступная по адресу https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api.
Для сборки контейнера из Docker CLI можно использовать следующую команду (архитектура по умолчанию — amd64, поэтому --build-arg ARCHITECTURE=arm64
для сборок amd64): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile имеет некоторые очевидные аргументы конфигурации.
Для запуска контейнера из интерфейса командной строки Docker можно использовать следующую команду: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
где .env
на основе .azure-template.env
Альтернативно используйте docker-compose up -d
.
с:
AZURE_OPENAI_API_KEY
: действительный ключ API OpenAI.OPENAI_API_VERSION
: действительная версия Azure OpenAI. На момент написания последняя 2023-05-15
AZURE_OPENAI_ENDPOINT
: действительный базовый URL-адрес Azure OpenAI, например https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: имя хоста RabbitMQ.RABBITMQ_USER
: пользователь RabbitMQ.RABBITMQ_PASSWORD
: пароль RabbitMQ.AI_MODEL_TEMPERATURE
: temperature
модели, используйте значение от 0 до 1. 1 означает более рандомизированный ответ, ближе к 0 — более строгий.LLM_DEPLOYMENT_NAME
: имя развертывания модели AI gpt в Azure.EMBEDDINGS_DEPLOYMENT_NAME
: имя развертывания модели внедрения ИИ в Azure.AI_SOURCE_WEBSITE
: URL-адрес веб-сайта фонда, содержащего исходные данные (только для справки).AI_SOURCE_WEBSITE2
: URL-адрес приветственного веб-сайта, содержащего исходные данные (только для справки).AI_LOCAL_PATH
: путь к локальному файлу для хранения данных.AI_WEBSITE_REPO
: URL-адрес репозитория Git, содержащего исходные данные веб-сайта фонда, на основе Hugo — без https.AI_WEBSITE_REPO2
: URL-адрес репозитория Git, содержащего исходные данные приветственного веб-сайта, на основе Hugo — без https.AI_GITHUB_USER
: пользователь Github, используемый для клонирования репозиториев веб-сайтов.AI_GITHUB_PAT
: токен личного доступа для клонирования репозиториев веб-сайтов.LANGCHAIN_TRACING_V2
: включить трассировку Langchain.LANGCHAIN_ENDPOINT
: конечная точка трассировки Langchain (например, «https://api.smith.langchain.com»).LANGCHAIN_API_KEY
: ключ API трассировки Langchain.LANGCHAIN_PROJECT
: название проекта трассировки Langchain (например, «руководство по механизму виртуального участника»). Примеры значений можно найти в .azure-template.env
. Настройте их и создайте файл .env
с обновленными настройками.
Для проекта требуется установленный Python & Poetry. Зависимости минимальной версии можно найти в pyproject.toml
. После установки Python & Poetry:
poetry install
poetry run python virtual_contributor_engine_guidance.py
Для проекта требуется как минимум Python 3.11, а для создания локальной версии веб-сайта необходимо установить Go и Hugo. Инструкции по установке см. в документации Go и Hugo (только при запуске вне контейнера).
Остаются нерешенными следующие задачи: