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內部元件的位址。
{
"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 做出貢獻,請閱讀此處的文件。