21.08.2024: CoPilot теперь доступен в версии 0.9 (v0.9.0). Подробности см. в примечаниях к выпуску. Примечание. В облаке TigerGraph доступен только CoPilot v0.5.
30 апреля 2024 г.: CoPilot теперь доступен в бета-версии (v0.5.0). В CoPilot добавлена совершенно новая функция: теперь вы можете создавать чат-ботов с искусственным интеллектом, дополненным графами, в своих собственных документах. CoPilot строит граф знаний на основе исходного материала и применяет график знаний RAG (Retrival Augmented Generation) для повышения контекстуальной релевантности и точности ответов на вопросы на естественном языке. Мы хотели бы услышать ваши отзывы, чтобы продолжать улучшать его, чтобы он мог принести вам больше пользы. Было бы полезно, если бы вы могли заполнить этот небольшой опрос после того, как поиграете с CoPilot. Спасибо за ваш интерес и поддержку!
18 марта 2024 г.: CoPilot теперь доступен в альфа-версии (v0.0.1). Он использует модель большого языка (LLM) для преобразования вашего вопроса в вызов функции, который затем выполняется на графике в TigerGraph. Мы хотели бы услышать ваши отзывы, чтобы продолжать улучшать его, чтобы он мог принести вам больше пользы. Если вы пробуете это, было бы полезно, если бы вы заполните эту форму регистрации, чтобы мы могли отслеживать ее (обещаем, без спама). А если вы просто хотите оставить отзыв, пожалуйста, заполните этот короткий опрос. Спасибо за ваш интерес и поддержку!
TigerGraph CoPilot — это помощник искусственного интеллекта, тщательно разработанный для объединения возможностей графовых баз данных и генеративного искусственного интеллекта для извлечения максимальной пользы из данных и повышения производительности различных бизнес-функций, включая задачи аналитики, разработки и администрирования. Это один помощник искусственного интеллекта с тремя основными компонентами:
Вы можете взаимодействовать с CoPilot через интерфейс чата в TigerGraph Cloud, встроенный интерфейс чата и API. На данный момент для использования CoPilot требуются ваши собственные сервисы LLM (от OpenAI, Azure, GCP, AWS Bedrock, Ollama, Hugging Face и Groq), но в будущих выпусках вы сможете использовать LLM TigerGraph.
Когда вопрос задается на естественном языке, CoPilot (InquiryAI) использует новое трехфазное взаимодействие как с базой данных TigerGraph, так и с LLM по выбору пользователя, чтобы получить точные и релевантные ответы.
На первом этапе вопрос сопоставляется с конкретными данными, имеющимися в базе данных. CoPilot использует LLM для сравнения вопроса со схемой графа и замены сущностей в вопросе элементами графа. Например, если существует тип вершины «BareMetalNode» и пользователь спрашивает «Сколько существует серверов?», вопрос будет переведен на «Сколько существует вершин BareMetalNode?». На втором этапе CoPilot использует LLM для сравнения преобразованного вопроса с набором тщательно подобранных запросов и функций базы данных, чтобы выбрать наилучшее совпадение. На третьем этапе CoPilot выполняет идентифицированный запрос и возвращает результат на естественном языке вместе с обоснованием действий.
Использование предварительно одобренных запросов дает множество преимуществ. Прежде всего, это снижает вероятность галлюцинаций, поскольку значение и поведение каждого запроса проверены. Во-вторых, система обладает потенциалом прогнозирования ресурсов выполнения, необходимых для ответа на вопрос.
С помощью SupportAI CoPilot создает чат-ботов с искусственным интеллектом, дополненным графиками, на основе собственных документов или текстовых данных пользователя. Он строит граф знаний из исходного материала и применяет свой уникальный вариант RAG (Retrival Augmented Generation) на основе графа знаний для повышения контекстуальной релевантности и точности ответов на вопросы на естественном языке.
CoPilot также определит концепции и построит онтологию, чтобы добавить семантику и обоснование в граф знаний, или пользователи могут предоставить свою собственную онтологию концепций. Затем, используя этот всеобъемлющий граф знаний, CoPilot выполняет гибридный поиск, сочетая традиционный векторный поиск и обход графа, чтобы собрать более релевантную информацию и более богатый контекст для ответа на вопросы знаний пользователей.
Организация данных в виде графика знаний позволяет чат-боту быстро и эффективно получать доступ к точной, основанной на фактах информации, тем самым уменьшая зависимость от генерации ответов на основе шаблонов, изученных во время обучения, которые иногда могут быть неверными или устаревшими.
QueryAI — третий компонент TigerGraph CoPilot. Он предназначен для использования в качестве инструмента разработчика, помогающего генерировать запросы к графам в GSQL на основе описания на английском языке. Его также можно использовать для создания схемы, сопоставления данных и даже информационных панелей. Это позволит разработчикам писать запросы GSQL быстрее и точнее и будет особенно полезно для новичков в GSQL. В настоящее время доступна экспериментальная генерация openCypher.
CoPilot доступен в качестве дополнительной услуги к вашему рабочему пространству в TigerGraph Cloud. По умолчанию он отключен. Пожалуйста, свяжитесь с [email protected], чтобы включить TigerGraph CoPilot в качестве опции на торговой площадке.
TigerGraph CoPilot — это проект с открытым исходным кодом на GitHub, который можно развернуть в вашей собственной инфраструктуре.
Если вам не нужно расширять исходный код CoPilot, самый быстрый способ — развернуть его образ Docker с помощью файла Docker Compose в репозитории. Чтобы пойти по этому маршруту, вам потребуются следующие предпосылки.
Шаг 1. Получите файл docker-compose.
git clone https://github.com/tigergraph/CoPilot
Файл Docker Compose содержит все зависимости для CoPilot, включая базу данных Milvus. Если вам не нужна конкретная служба, вы можете отредактировать файл Compose, чтобы удалить его, или установить его масштаб равным 0 при запуске файла Compose (подробности позже). Более того, при развертывании CoPilot поставляется со страницей документации Swagger API. Если вы хотите отключить его, вы можете установить для переменной среды PRODUCTION
значение true для службы CoPilot в файле Compose.
Шаг 2. Настройте конфигурации
Затем в том же каталоге, где находится файл Docker Compose, создайте и заполните следующие файлы конфигурации:
Шаг 3 (необязательно): настройка ведения журнала
touch configs/log_config.json
. Подробности настройки доступны здесь.
Шаг 4. Запустите все службы
Теперь просто запустите docker compose up -d
и дождитесь запуска всех служб. Если вы не хотите использовать включенную базу данных Milvus DB, вы можете установить ее масштаб равным 0, чтобы не запускать ее: docker compose up -d --scale milvus-standalone=0 --scale etcd=0 --scale minio=0
.
Шаг 5. Установите пользовательские функции
Этот шаг не требуется для баз данных TigerGraph версии 4.x. Для TigerGraph 3.x нам необходимо установить несколько пользовательских функций (UDF), чтобы CoPilot работал.
sudo su - tigergraph
. Если TigerGraph работает в кластере, вы можете сделать это на любой из машин. gadmin config set GSQL.UDF.EnablePutTgExpr true
gadmin config set GSQL.UDF.Policy.Enable false
gadmin config apply
gadmin restart GSQL
PUT tg_ExprFunctions FROM "./tg_ExprFunctions.hpp"
PUT tg_ExprUtil FROM "./tg_ExprUtil.hpp"
gadmin config set GSQL.UDF.EnablePutTgExpr false
gadmin config set GSQL.UDF.Policy.Enable true
gadmin config apply
gadmin restart GSQL
В файле configs/llm_config.json
скопируйте шаблон конфигурации JSON ниже для вашего провайдера LLM и заполните соответствующие поля. Нужен только один провайдер.
ОпенАИ
В дополнение к OPENAI_API_KEY
можно изменить llm_model
и model_name
в соответствии с вашими конкретными деталями конфигурации.
{
"model_name" : " GPT-4 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " YOUR_OPENAI_API_KEY_HERE "
}
},
"completion_service" : {
"llm_service" : " openai " ,
"llm_model" : " gpt-4-0613 " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " YOUR_OPENAI_API_KEY_HERE "
},
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
GCP
Следуйте информации для аутентификации GCP, найденной здесь: https://cloud.google.com/docs/authentication/application-default-credentials#GAC, и создайте учетную запись службы с учетными данными VertexAI. Затем добавьте следующее в команду запуска Docker:
-v $( pwd ) /configs/SERVICE_ACCOUNT_CREDS.json:/SERVICE_ACCOUNT_CREDS.json -e GOOGLE_APPLICATION_CREDENTIALS=/SERVICE_ACCOUNT_CREDS.json
И ваша конфигурация JSON должна выглядеть следующим образом:
{
"model_name" : " GCP-text-bison " ,
"embedding_service" : {
"embedding_model_service" : " vertexai " ,
"authentication_configuration" : {}
},
"completion_service" : {
"llm_service" : " vertexai " ,
"llm_model" : " text-bison " ,
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/gcp_vertexai_palm/ "
}
}
Лазурный
Помимо AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_API_KEY
и azure_deployment
, llm_model
и model_name
можно редактировать в соответствии с конкретными деталями конфигурации.
{
"model_name" : " GPT35Turbo " ,
"embedding_service" : {
"embedding_model_service" : " azure " ,
"azure_deployment" : " YOUR_EMBEDDING_DEPLOYMENT_HERE " ,
"authentication_configuration" : {
"OPENAI_API_TYPE" : " azure " ,
"OPENAI_API_VERSION" : " 2022-12-01 " ,
"AZURE_OPENAI_ENDPOINT" : " YOUR_AZURE_ENDPOINT_HERE " ,
"AZURE_OPENAI_API_KEY" : " YOUR_AZURE_API_KEY_HERE "
}
},
"completion_service" : {
"llm_service" : " azure " ,
"azure_deployment" : " YOUR_COMPLETION_DEPLOYMENT_HERE " ,
"openai_api_version" : " 2023-07-01-preview " ,
"llm_model" : " gpt-35-turbo-instruct " ,
"authentication_configuration" : {
"OPENAI_API_TYPE" : " azure " ,
"AZURE_OPENAI_ENDPOINT" : " YOUR_AZURE_ENDPOINT_HERE " ,
"AZURE_OPENAI_API_KEY" : " YOUR_AZURE_API_KEY_HERE "
},
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/azure_open_ai_gpt35_turbo_instruct/ "
}
}
AWS Основа
{
"model_name" : " Claude-3-haiku " ,
"embedding_service" : {
"embedding_model_service" : " bedrock " ,
"embedding_model" : " amazon.titan-embed-text-v1 " ,
"authentication_configuration" : {
"AWS_ACCESS_KEY_ID" : " ACCESS_KEY " ,
"AWS_SECRET_ACCESS_KEY" : " SECRET "
}
},
"completion_service" : {
"llm_service" : " bedrock " ,
"llm_model" : " anthropic.claude-3-haiku-20240307-v1:0 " ,
"authentication_configuration" : {
"AWS_ACCESS_KEY_ID" : " ACCESS_KEY " ,
"AWS_SECRET_ACCESS_KEY" : " SECRET "
},
"model_kwargs" : {
"temperature" : 0 ,
},
"prompt_path" : " ./app/prompts/aws_bedrock_claude3haiku/ "
}
}
Оллама
{
"model_name" : " GPT-4 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " ollama " ,
"llm_model" : " calebfahlgren/natural-functions " ,
"model_kwargs" : {
"temperature" : 0.0000001
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
Обнимающее лицо
Пример конфигурации модели Hugging Face с выделенной конечной точкой показан ниже. Укажите детали конфигурации:
{
"model_name" : " llama3-8b " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " huggingface " ,
"llm_model" : " hermes-2-pro-llama-3-8b-lpt " ,
"endpoint_url" : " https:endpoints.huggingface.cloud " ,
"authentication_configuration" : {
"HUGGINGFACEHUB_API_TOKEN" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
Пример конфигурации модели Hugging Face с бессерверной конечной точкой показан ниже. Укажите детали конфигурации:
{
"model_name" : " Llama3-70b " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " huggingface " ,
"llm_model" : " meta-llama/Meta-Llama-3-70B-Instruct " ,
"authentication_configuration" : {
"HUGGINGFACEHUB_API_TOKEN" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/llama_70b/ "
}
}
Грок
{
"model_name" : " mixtral-8x7b-32768 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " groq " ,
"llm_model" : " mixtral-8x7b-32768 " ,
"authentication_configuration" : {
"GROQ_API_KEY" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
Скопируйте приведенную ниже информацию в configs/db_config.json
и отредактируйте поля hostname
и getToken
чтобы они соответствовали конфигурации вашей базы данных. Если в TigerGraph включена аутентификация по токену, установите для getToken
значение true
. Установите параметры тайм-аута, порога памяти и ограничения потока по желанию, чтобы контролировать, сколько ресурсов базы данных используется при ответе на вопрос.
«ecc» и «chat_history_api» — это адреса внутренних компонентов CoPilot. Если вы используете файл Docker Compose как есть, вам не нужно их менять.
{
"hostname" : " http://tigergraph " ,
"restppPort" : " 9000 " ,
"gsPort" : " 14240 " ,
"getToken" : false ,
"default_timeout" : 300 ,
"default_mem_threshold" : 5000 ,
"default_thread_limit" : 8 ,
"ecc" : " http://eventual-consistency-service:8001 " ,
"chat_history_api" : " http://chat-history:8002 "
}
Скопируйте приведенное ниже в configs/milvus_config.json
и отредактируйте поля host
и port
в соответствии с вашей конфигурацией Milvus (имея в виду конфигурацию докера). username
и password
также можно настроить ниже, если этого требуют настройки Milvus. На данный момент для enabled
всегда должно быть установлено значение «true», поскольку Milvus поддерживается только в качестве хранилища для встраивания.
{
"host" : " milvus-standalone " ,
"port" : 19530 ,
"username" : " " ,
"password" : " " ,
"enabled" : " true " ,
"sync_interval_seconds" : 60
}
Скопируйте приведенный ниже код в configs/chat_config.json
. Вам не нужно ничего менять, если вы не измените порт службы истории чата в файле Docker Compose.
{
"apiPort" : " 8002 " ,
"dbPath" : " chats.db " ,
"dbLogPath" : " db.log " ,
"logPath" : " requestLogs.jsonl " ,
"conversationAccessRoles": ["superuser", "globaldesigner"]
}
Если вы хотите включить генерацию запросов openCypher в InquiryAI, вы можете установить для переменной среды USE_CYPHER
значение "true"
в службе CoPilot в файле компоновки Docker. По умолчанию установлено значение "false"
. Примечание . Генерация запросов openCypher все еще находится в стадии бета-тестирования и может работать не так, как ожидалось, а также увеличивает вероятность появления галлюцинаторных ответов из-за генерации неправильного кода. Используйте с осторожностью и только в непроизводственных средах.
CoPilot удобен как для технических, так и для нетехнических пользователей. Существует графический интерфейс чата, а также доступ к CoPilot через API. С функциональной точки зрения CoPilot может отвечать на ваши вопросы, вызывая существующие запросы в базе данных (InquiryAI), строить график знаний на основе ваших документов (SupportAI) и отвечать на вопросы знаний на основе ваших документов (SupportAI).
Пожалуйста, обратитесь к нашей официальной документации о том, как использовать CoPilot.
TigerGraph CoPilot спроектирован так, чтобы его можно было легко расширять. Сервис можно настроить для использования разных поставщиков LLM, разных графовых схем и разных инструментов LangChain. Службу также можно расширить для использования различных служб внедрения, различных служб генерации LLM и различных инструментов LangChain. Дополнительную информацию о расширении службы см. в Руководстве разработчика.
В каталог tests
включено семейство тестов. Если вы хотите добавить больше тестов, обратитесь к руководству здесь. В папку также включен сценарий оболочки run_tests.sh
, который является драйвером для запуска тестов. Самый простой способ использовать этот скрипт — выполнить его в Docker-контейнере для тестирования.
Вы можете запустить тестирование для каждой службы, перейдя на верхний уровень каталога службы и запустив python -m pytest
например (с верхнего уровня)
cd copilot
python -m pytest
cd ..
Сначала убедитесь, что все файлы конфигурации вашего поставщика услуг LLM работают правильно. Конфигурации будут смонтированы для доступа к контейнеру. Также убедитесь, что все зависимости, такие как база данных и Milvus, готовы. Если нет, вы можете запустить прилагаемый файл Docker Compose, чтобы создать эти службы.
docker compose up -d --build
Если вы хотите использовать веса и смещения для регистрации результатов тестирования, ваш ключ API WandB необходимо установить в переменной среды на хост-компьютере.
export WANDB_API_KEY=KEY HERE
Затем вы можете создать Docker-контейнер из файла Dockerfile.tests
и запустить тестовый скрипт в контейнере.
docker build -f Dockerfile.tests -t copilot-tests:0.1 .
docker run -d -v $( pwd ) /configs/:/ -e GOOGLE_APPLICATION_CREDENTIALS=/GOOGLE_SERVICE_ACCOUNT_CREDS.json -e WANDB_API_KEY= $WANDB_API_KEY -it --name copilot-tests copilot-tests:0.1
docker exec copilot-tests bash -c " conda run --no-capture-output -n py39 ./run_tests.sh all all "
Чтобы изменить, какие тесты выполняются, можно передать аргументы сценарию ./run_tests.sh
. В настоящее время можно настроить, какую службу LLM использовать (по умолчанию — все), какие схемы проверять (по умолчанию для всех) и следует ли использовать веса и смещения для регистрации (по умолчанию — true). Инструкции по вариантам приведены ниже:
Первый параметр run_tests.sh
— это то, какие LLM нужно тестировать. По умолчанию all
. Возможные варианты:
all
— запустить тесты для всех LLMazure_gpt35
— запуск тестов GPT-3.5, размещенных в Azure.openai_gpt35
— запуск тестов GPT-3.5, размещенных на OpenAI.openai_gpt4
— запуск тестов на GPT-4, размещенных на OpenAI.gcp_textbison
— запускать тесты на text-bison, размещенном на GCP. Второй параметр run_tests.sh
— какие графики проверять. По умолчанию all
. Возможные варианты:
all
— запустить тесты для всех доступных графиковOGB_MAG
— набор данных научных статей, предоставленный: https://ogb.stanford.edu/docs/nodeprop/#ogbn-mag.DigtialInfra
- набор данных цифровых двойников цифровой инфраструктурыSynthea
— синтетический набор данных о состоянии здоровья. Если вы хотите регистрировать результаты тестов в Weights and Biases (и правильно настроили учетные данные выше), последний параметр run_tests.sh
автоматически принимает значение true по умолчанию. Если вы хотите отключить ведение журнала весов и смещений, используйте false
.
Если вы хотите внести свой вклад в TigerGraph CoPilot, прочтите документацию здесь.