此概念驗證的目的是評估創建一個多功能、可靠且直覺的聊天機器人所需的條件,以便使用者參與 Alkemio 相關主題。該專案無法按原樣部署,但應作為展示生成式人工智慧功能的寶貴輸入,並幫助評估將此功能嵌入到平台中所需的條件。
大型語言模型(LLM)在最近一段時間內有了顯著的改進,但並不普遍且效能不佳。這為它們在不同領域的使用提供了許多可能性。 OpenAI 是最著名的法學碩士商業供應商,但法學碩士模式有很多選擇,無論是商業的還是開源的。雖然這提供了選擇,但也帶來了提供者鎖定的風險。
法學碩士只是生成式人工智慧解決方案實際實施所需的組成部分之一,許多其他「建構模組」也是必要的。 Langchain 是一個流行的開源程式庫,它提供這些構建塊並創建抽象層,從而實現提供者的獨立性。
對於大多數組織來說,培訓法學碩士的費用昂貴得令人望而卻步,但對於大多數實際實施來說,需要合併組織特定的數據。一種常見的方法是將使用者問題的特定上下文新增至提交給 LLM 的提示。這帶來了挑戰,因為 LLM 通常只允許有限大小的提示(通常約為 4k 個令牌)。因此,提供相關的上下文資訊非常重要,並且需要執行以下操作:
這個專案受到許多文章的啟發,但理論性和實踐性都很強。程式碼庫的重要部分來自使用 LangChain 專案建立 AWS 架構完善的聊天機器人。
這些專案已透過 RabbitMQ RPC 實現為基於容器的微服務。有一個 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
:重置正在進行的聊天的聊天記錄,需要userId。query
:在聊天序列中發佈下一個問題,請參閱 exmaple回應發佈在自動產生的、獨佔的、未命名的佇列中。
該模型的交互語言有一個實現草案(這需要重大改進)。如果未指定語言代碼,則將假定為英語。選項包括:「EN」:「英語」、「US」:「英語」、「UK」:「英語」、「FR」:「法語」、「DE」:「德語」、「ES」:「西班牙語” , 'NL': '荷蘭語', 'BG': '保加利亞語', 'UA': '烏克蘭語'
*注意:https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api 有一個早期(過時)的 RESTful 實現
以下命令可用於從 Docker CLI 建置容器(預設架構為 amd64,因此docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
--build-arg ARCHITECTURE=arm64
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 CLI 啟動容器: 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
:有效的 OpenAI API 金鑰OPENAI_API_VERSION
:有效的 Azure OpenAI 版本。截至撰寫本文時,最新日期為2023-05-15
AZURE_OPENAI_ENDPOINT
:有效的 Azure OpenAI 基本 URL,例如https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
:RabbitMQ 主機名RABBITMQ_USER
:RabbitMQ 用戶RABBITMQ_PASSWORD
:RabbitMQ 密碼AI_MODEL_TEMPERATURE
:模型的temperature
,使用值在 0 到 1 之間。LLM_DEPLOYMENT_NAME
:Azure 中的 AI gpt 模型部署名稱EMBEDDINGS_DEPLOYMENT_NAME
:Azure 中的 AI 嵌入模型部署名稱AI_SOURCE_WEBSITE
:包含來源資料的基金會網站的 URL(僅供參考)AI_SOURCE_WEBSITE2
:包含來源資料的歡迎網站的 URL(僅供參考)AI_LOCAL_PATH
:儲存資料的本機檔案路徑AI_WEBSITE_REPO
:包含基金會網站來源資料的 Git 儲存庫的 url,基於 Hugo - 不含 httpsAI_WEBSITE_REPO2
:包含歡迎網站來源資料的 Git 儲存庫的 url,基於 Hugo - 不帶 httpsAI_GITHUB_USER
:用於複製網站儲存庫的 Github 用戶AI_GITHUB_PAT
:用於克隆網站儲存庫的個人存取權令牌LANGCHAIN_TRACING_V2
:啟用 Langchain 跟踪LANGCHAIN_ENDPOINT
:Langchain 追蹤端點(例如「https://api.smith.langchain.com」)LANGCHAIN_API_KEY
: Langchain 追蹤 API 金鑰LANGCHAIN_PROJECT
:Langchain追蹤專案名稱(例如「virtual-contributor-engine-guidance」)您可以在.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 文件(僅在容器外部運行時)
以下任務仍然懸而未決: