2024 年 8 月 21 日:CoPilot v0.9 (v0.9.0) 现已推出。详细信息请参阅发行说明。注意:在 TigerGraph Cloud 上,仅 CoPilot v0.5 可用。
2024 年 4 月 30 日:CoPilot 现已推出测试版(v0.5.0)。 CoPilot 中添加了一项全新功能:现在您可以在自己的文档上创建具有图形增强人工智能的聊天机器人。 CoPilot 根据源材料构建知识图,并应用知识图 RAG(检索增强生成)来提高自然语言问题答案的上下文相关性和准确性。我们很乐意听到您的反馈,以不断改进它,以便为您带来更多价值。如果您在玩过 CoPilot 后能够填写这份简短的调查问卷,将会很有帮助。感谢您的关注和支持!
2024 年 3 月 18 日:CoPilot 现已在 Alpha 版 (v0.0.1) 中推出。它使用大型语言模型 (LLM) 将您的问题转换为函数调用,然后在 TigerGraph 中的图表上执行。我们很乐意听到您的反馈,以不断改进它,以便为您带来更多价值。如果您正在尝试,请填写此注册表单,以便我们对其进行跟踪(承诺不会发送垃圾邮件),这将很有帮助。如果您只想提供反馈,请随时填写这份简短的调查问卷。感谢您的关注和支持!
TigerGraph CoPilot 是一款人工智能助手,经过精心设计,结合了图数据库和生成式人工智能的强大功能,从数据中获取最大价值,并提高各种业务功能(包括分析、开发和管理任务)的生产力。它是一款人工智能助手,拥有三大核心组件服务:
您可以通过 TigerGraph Cloud 上的聊天界面、内置聊天界面和 API 与 CoPilot 进行交互。目前,您需要自己的 LLM 服务(来自 OpenAI、Azure、GCP、AWS Bedrock、Ollama、Hugging Face 和 Groq)才能使用 CoPilot,但在未来版本中,您可以使用 TigerGraph 的 LLM。
当用自然语言提出问题时,CoPilot (InquiryAI) 会采用一种新颖的三阶段交互方式,与 TigerGraph 数据库和用户选择的法学硕士进行互动,以获得准确且相关的答复。
第一阶段将问题与数据库中可用的特定数据结合起来。 CoPilot 使用 LLM 将问题与图的架构进行比较,并用图元素替换问题中的实体。例如,如果存在“BareMetalNode”顶点类型,并且用户询问“那里有多少个服务器?”,则问题将被翻译为“那里有多少个 BareMetalNode 顶点?”。在第二阶段,CoPilot 使用 LLM 将转换后的问题与一组精选的数据库查询和函数进行比较,以选择最佳匹配。在第三阶段,CoPilot 执行识别的查询并以自然语言返回结果以及操作背后的推理。
使用预先批准的查询可以带来多种好处。首先也是最重要的是,它减少了产生幻觉的可能性,因为每个查询的含义和行为都已经过验证。其次,系统有可能预测回答问题所需的执行资源。
借助 SupportAI,CoPilot 在用户自己的文档或文本数据上创建具有图形增强人工智能的聊天机器人。它从源材料构建知识图,并应用其基于知识图的 RAG(检索增强生成)的独特变体来提高自然语言问题答案的上下文相关性和准确性。
CoPilot还将识别概念并构建本体,为知识图谱添加语义和推理,或者用户可以提供自己的概念本体。然后,利用这个全面的知识图谱,CoPilot 进行混合检索,结合传统的向量搜索和图遍历,收集更多相关信息和更丰富的上下文来回答用户的知识问题。
将数据组织为知识图可以使聊天机器人快速有效地访问准确的、基于事实的信息,从而减少对根据训练期间学到的模式生成响应的依赖,这些响应有时可能不正确或过时。
QueryAI 是 TigerGraph CoPilot 的第三个组件。它旨在用作开发人员工具,帮助根据英语语言描述在 GSQL 中生成图形查询。它还可用于生成架构、数据映射,甚至仪表板。这将使开发人员能够更快、更准确地编写 GSQL 查询,对于那些刚接触 GSQL 的人来说尤其有用。目前,实验性的 openCypher 生成已经可用。
CoPilot 可作为 TigerGraph Cloud 上您工作区的附加服务。默认情况下它是禁用的。请联系 [email protected] 以在 Marketplace 中启用 TigerGraph CoPilot 作为选项。
TigerGraph CoPilot 是 GitHub 上的一个开源项目,可以部署到您自己的基础设施中。
如果您不需要扩展 CoPilot 的源代码,最快的方法是使用存储库中的 docker compose 文件部署其 docker 镜像。为了走这条路,您需要满足以下先决条件。
第1步:获取docker-compose文件
git clone https://github.com/tigergraph/CoPilot
Docker Compose 文件包含 CoPilot 的所有依赖项,包括 Milvus 数据库。如果您不需要特定服务,则可以编辑 Compose 文件以将其删除或在运行 Compose 文件时将其比例设置为 0(稍后详细说明)。此外,CoPilot 在部署时附带了 Swagger API 文档页面。如果您希望禁用它,可以在 Compose 文件中将 CoPilot 服务的PRODUCTION
环境变量设置为 true。
第 2 步:设置配置
接下来,在 Docker Compose 文件所在的同一目录中,创建并填写以下配置文件:
步骤 3(可选):配置日志记录
touch configs/log_config.json
。此处提供了配置的详细信息。
第四步:启动所有服务
现在,只需运行docker compose up -d
并等待所有服务启动。如果您不想使用附带的 Milvus DB,可以将其规模设置为 0 以不启动它: docker compose up -d --scale milvus-standalone=0 --scale etcd=0 --scale minio=0
。
第 5 步:安装 UDF
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
文件中,从下面复制您的 LLM 提供商的 JSON 配置模板,并填写相应的字段。只需要一位提供商。
开放人工智能
除了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 run 命令中:
-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 配置(记住 docker 配置)。如果您的 Milvus 设置需要,也可以在下面配置username
和password
。目前, 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"]
}
如果您想在 InquiryAI 中启用 openCypher 查询生成,您可以在 docker compose 文件的 CoPilot 服务中将USE_CYPHER
环境变量设置为"true"
。默认情况下,此项设置为"false"
。注意:openCypher 查询生成仍处于测试阶段,可能无法按预期工作,并且会增加由于错误的代码生成而产生幻觉答案的可能性。请谨慎使用,并且仅在非生产环境中使用。
CoPilot 对技术和非技术用户都很友好。有一个图形聊天界面以及对 CoPilot 的 API 访问。从功能上来说,CoPilot 可以通过调用数据库中的现有查询(InquiryAI)来回答您的问题,根据您的文档构建知识图谱(SupportAI),并根据您的文档回答知识问题(SupportAI)。
关于如何使用 CoPilot,请参阅我们的官方文档。
TigerGraph CoPilot 的设计易于扩展。该服务可以配置为使用不同的LLM提供商、不同的图模式和不同的LangChain工具。该服务还可以扩展为使用不同的嵌入服务、不同的LLM生成服务和不同的LangChain工具。有关如何扩展服务的更多信息,请参阅开发人员指南。
tests
目录下包含一系列测试。如果您想添加更多测试,请参阅此处的指南。 shell 脚本run_tests.sh
也包含在该文件夹中,它是运行测试的驱动程序。使用此脚本最简单的方法是在 Docker 容器中执行它进行测试。
您可以通过转到服务目录的顶层并运行python -m pytest
来运行每个服务的测试
例如(从顶层)
cd copilot
python -m pytest
cd ..
首先,确保您的所有 LLM 服务提供商配置文件都正常工作。配置将被安装以供容器访问。还要确保数据库、Milvus 等所有依赖项都已准备就绪。如果没有,您可以运行附带的 docker compose 文件来创建这些服务。
docker compose up -d --build
如果您想使用权重和偏差来记录测试结果,则需要在主机上的环境变量中设置您的 WandB API 密钥。
export WANDB_API_KEY=KEY HERE
然后,您可以从Dockerfile.tests
文件构建 docker 容器并在容器中运行测试脚本。
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
- 针对所有 LLM 运行测试azure_gpt35
- 针对 Azure 上托管的 GPT-3.5 运行测试openai_gpt35
- 针对 OpenAI 上托管的 GPT-3.5 运行测试openai_gpt4
- 在 OpenAI 上托管的 GPT-4 上运行测试gcp_textbison
- 在 GCP 上托管的 text-bison 上运行测试run_tests.sh
的第二个参数是要测试的图表。默认为all
。选项有:
all
- 针对所有可用图表运行测试OGB_MAG
- 学术论文数据集提供者:https://ogb.stanford.edu/docs/nodeprop/#ogbn-mag。DigtialInfra
- 数字基础设施数字孪生数据集Synthea
- 综合健康数据集如果您希望将测试结果记录到权重和偏差(并且具有上面设置的正确凭据),则run_tests.sh
的最终参数自动默认为 true。如果您希望禁用权重和偏差日志记录,请使用false
。
如果您想为 TigerGraph CoPilot 做出贡献,请阅读此处的文档。