修道院是一個具有筆記本,基本聊天,文檔,YouTube視頻等的AI界面。它在私人的自託管包中精心策劃了各種AI模型。您可以使用自己的身份驗證提供商將修道院作為服務器作為服務器,也可以在自己的計算機上自行運行。 Abbey使用您選擇的LLM,TTS型號,OCR模型和搜索引擎的高度配置。您可以在這裡找到託管版的修道院,許多學生和專業人士使用。
有問題嗎?請,請發布問題或直接與創作者聯繫! Twitter dm @gkamer8,發送電子郵件至[email protected]或以其他方式ping他 - 他喜歡它。
如果修道院默認不適合您的喜好配置,並且您可以舒適地編寫代碼,請考慮以您的改進打開PR!添加新的集成甚至完整的接口很簡單;在下面的“貢獻”部分中查看更多詳細信息。


docker compose 。請參閱此處的詳細信息。如果您先前有修道院的版本,並且正在使用settings.yml進行“新安裝”模式,請拉動,創建一個新的設置。
設置涉及克隆/下載此倉庫,創建.env和settings.yml文件,並使用您選擇的AI集成,然後運行docker compose為開發(性能較差,但易於使用)或生產(更易於播放)或生產(較好的性能,但更較慢的更改設置)。這是步驟:
步驟1:克隆 /下載此存儲庫並在其中導航。
步驟2:創建一個名為.env的文件,用於秘密鍵和一個名為settings.yml docker-compose.yml文件。然後,輸入您要使用的鍵 /模型。您可以找到有關如何在本讀書中配置每種集成的詳細信息。
.env文件包含您需要的任何API鍵或其他秘密。您還必須在Abbey使用的MySQL數據庫中包含密碼。一個用於使用官方OpenAI API的人的.env文件,一個需要鍵的OpenAI兼容API,擬人API可能看起來像:
MYSQL_ROOT_PASSWORD="my-password"
OPENAI_API_KEY="my-openai-key"
OPENAI_COMPATIBLE_KEY="my-api-key"
ANTHROPIC_API_KEY="my-anthropic-key"
settings.yml文件配置了修道院以使用所需的模型和選項。至少,您必須使用至少一種語言模型和一個嵌入模型。將最佳型號放在首位,以便修道院默認使用它們。例如,這是一個settings.yml文件,該文件使用官方OpenAI API,OpenAI兼容API,人類和Ollama的模型:
lms:
models:
- provider: anthropic
model: "claude-3-5-sonnet-20241022"
name: "Claude 3.5 Sonnet" # optional, give a name for Abbey to use
traits: "Coding" # optional, let Abbey display what it's good for
desc: "One of the best models ever!" # optional, let Abbey show a description
accepts_images: true # optional, put true if the model is a vision model / accepts image input
context_length: 200_000 # optional, defaults to 8192
- provider: openai_compatible
model: "gpt-4o"
accepts_images: true
context_length: 128_000
- provider: ollama
model: "llama3.2"
openai_compatible:
url: "http://host.docker.internal:1234" # Use host.docker.internal for services running on localhost
ollama:
url: "http://host.docker.internal:11434" # Use host.docker.internal for services running on localhost
embeds:
models:
- provider: "openai"
model: "text-embedding-ada-002"
鑑於您還將相關鍵放入.env中,這將是一個完整的設置文件。要配置不同的型號,請搜索引擎,身份驗證服務,文本到語音模型等:請在下面查找適當的文檔!
步驟3:如果您仍在使用設置,則可以通過使用以下方式以Dev模式進行修道院。
docker compose up
在開發模式下,當您更改設置 /秘密時,您只需要重新啟動容器即可應用設置,可以使用:
docker compose restart backend frontend celery db_pooler
準備好後,您可以在生產模式下進行修道院以提供更好的性能:
docker compose -f docker-compose.prod.yml up --build
如果您想在產品模式下更改設置 /秘密,則需要重建容器:
docker compose down
docker compose -f docker-compose.prod.yml up --build
步驟4:現在,修道院應在http://localhost:3000 !只需在瀏覽器中訪問該URL即可開始使用修道院。在開發模式下,可能需要一秒鐘的加載。
請注意,後端在http://localhost:5000 - 如果您去那裡,您應該看到吉爾伯特和沙利文的HMS pinafore的歌詞。如果沒有,則後端沒有運行。
如果某件事不正常,請(請)提交問題或直接與創建者聯繫 - @gkamer8在Twitter或[email protected]上通過電子郵件。
默認情況下,修道院在前端的端口3000上在Localhost上運行,後端為5000。如果您想更改這些(由於您非常精通技術),則需要修改Docker撰寫文件,然後將其添加到您的settings.yml中。
services:
backend:
public_url: http://localhost:5000 # Replace with your new user-accessible BACKEND URL
internal_url: http://backend:5000 # This probably won't change - it's where the frontend calls the backend server side, within Docker
frontend:
public_url: http://localhost:3000 # Replace with your new user-accessible FRONTEND URL
請確保通過例如將後端的端口映射更新為1234:5000,如果更改端口,請更新您的Docker組合文件。請確保將其切換為正確的Docker-Compose文件( docker-compose.prod.yml for prod builds, docker-compose.yml for dev)。這就是後端的樣子:
backend:
# ... some stuff
ports:
- "1234:5000" # now the backend is at http://localhost:1234 in my browser
# ... some stuff
常規:確保所有Docker容器實際上都使用docker ps運行。您應該看到6:後端,前端,芹菜,redis,mysql和db_pooler(對不起,有很多 - 修道院可以在後台和多個線程中執行AI任務,這需要台球機,Redis和芹菜容器)。如果一個人不運行,請嘗試使用docker compose restart backend (或Frontend或Celery,或您有什麼)。如果它一直崩潰,您很有可能會弄亂您的settings.yml或忘了將適當的秘密放入.env中。否則,請查看日誌。
Docker config Invalid:如果告訴您您的Docker組成是無效的,那麼您可能需要將計算機上的Docker升級到某些東西> = = 2版。修道院利用某些相對較新的Docker功能,例如ENV變量和配置文件的默認功能。從長遠來看,升級Docker會更容易 - 信任。
事情看起來空白 /不加載 /請求後端似乎不正確。首先,導航到瀏覽器中的後端,喜歡http://localhost:5000或您最初放置的任何URL。它應該給您一個信息,例如“英國焦油是一個飆升的靈魂……”,如果您看到了,那麼後端正在啟動並運行,但是您的後端URL配置是錯誤的或不完整的(您在玩嗎?)。如果您的後端不運行,請檢查Docker中的日誌以獲取更多信息 - 請閱讀他們說的話!
Docker被卡住下載/安裝/運行圖像。您的機器上有可能用完空間。首先,嘗試運行docker system prune ,清理您忘記的Docker周圍的所有討厭的東西。然後嘗試清除計算機上的空間 - 也許足以在計算機上進行〜10GB。然後重新啟動Docker,然後重試。如果您仍然遇到問題 - 嘗試卸載 /重新安裝Docker。
docker compose命令由於某些“ API”問題或其他內容而拒絕運行。如果Docker正在運行(例如,Mac上的Docker Desktop),則應重新啟動它。如果沒有幫助,請在重新啟動之前嘗試清除/清潔其數據(如果有的話,請單擊Docker桌面中的“錯誤”圖標 - 請參閱clean/purge數據”)。如果Docker不運行,那就是您的問題!您需要確保正在運行Docker守護程序(即Mac上的Docker桌面)。
端口已經被使用。修道院的後端默認情況下在端口5000上運行;修道院前端在端口3000上運行。計算機上的某些東西可能已經在使用端口5000或端口3000。在Mac上,通常意味著播放。您的目標應該是檢查端口3000還是5000上的任何內容,如果是的,則關閉這些過程。在Mac/Linux上:使用lsof -i :5000或lsof -i :3000檢查是否在這些端口上運行任何過程。如果您注意到像在Mac上運行的“ ControlCe”這樣的過程,則意味著“控制中心”,這可能是Airplay接收器的東西。您可以進入Mac上的系統設置,並取消選中“ AirPlay接收器”。如果您找到了其他東西,則可以用kill -9 YOUR_PID殺死它,其中YOUR_PID被過程ID替換(使用LSOF顯示)。在Windows上:使用netstat -ano | findstr :5000或netstat -ano | findstr :3000 。然後,您可以使用taskkill /PID YOUR_PID /F殺死該過程,然後用相關過程的過程ID替換YOUR_PID 。
第三方集成在您的設置和環境變量文件中進行管理。這是可用的摘要:
語言模型(LMS)
嵌入模型(嵌入)
文本到語音(TTS)
光學特徵識別(OCR)
搜索引擎(網絡)
https://api.bing.microsoft.com/v7.0/search )文件存儲(存儲)
file-storage文件夾(默認)驗證
某些集成需要在設置中進行配置。如果使用以下任何集成,則必須這樣指定其設置:
s3:
bucket: 'your-bucket'
searxng:
url: "http://host.docker.internal:8080" # Replace with your URL
ollama:
url: "http://host.docker.internal:11434" # Replace with your URL
openai_compatible:
url: "http://host.docker.internal:12345" # Replace with your URL
這些位於settings.yml的根部與lms或embeds相同的水平。
語言模型在lms中配置在settings.yml中。您可以從您希望支持的任何提供商中指定語言模型,以及用於測驗生成,摘要和建議問題之類的幕後使用的默認設備。您必須至少有一個LM才能使修道院正常工作。請記住,如果需要,請配置相關的提供商設置,如上所述。
lms:
defaults: # all are optional, use the optional "code" you specify to refer to each model, or use "model-provider" like "gpt-4o-openai"
chat: "llama3.2-ollama" # User chat model (user can change) - defaults to first listed model
fast: "llama3.2-ollama" # Fastest model, used for suggested questions and other places - defaults to chat model
high_performance: "gpt-4o" # Your best language model, used for generating curricula - defaults to default chat model
long_context: "gpt-4o" # Model used in long-context situations - defaults to longest context model specified
balanced: "claude-3-5-sonnet-anthropic" # Model that is in the middle for speed / accuracy - defaults to default chat model
fast_long_context: "gpt-4o-mini-openai" # A long context model that's fast, defaults to long_context model, used for summaries / key points
alt_long_context: "claude-3-5-sonnet" # A long context model used for variation in things like question generation - default to long_context
models:
- provider: openai # required - see below table for options
model: "gpt-4o" # required, code for the API
context_length: 128_000 # optional (defaults to 4096)
supports_json: true # optional, defaults to false
accepts_images: true # optional, defaults to false
name: "GPT-4o" # optional display name for the model
desc: "One of the best models ever!" # optional, lets Abbey display a description
code: "gpt-4o" # optional - defaults to 'model-provider' like 'gpt-4o-openai' - used to specify defaults above.
disabled: false # optional
# Specify more in a list...
該表提供了每個提供商的提供商代碼,以及將.env放置的相關API密鑰名稱:
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| Openai | Openai | OpenAI_API_KEY | 不 |
| 人類 | 人類 | Anthropic_api_key | 不 |
| 霍拉馬 | 霍拉馬 | 是的 | |
| Openai兼容 | OpenAi_compatible | OpenAi_compatible_key | 是的 |
文本到語音模型在settings.yml中的tts下配置。您可以從您希望支持的任何提供商中指定TTS模型,以及默認模型。 TTS型號是完全可選的。請記住,如果需要,請配置相關的提供商設置,如上所述。
tts:
default: "openai_onyx"
voices:
- provider: openai # required
voice: "onyx" # required
model: "tts-1" # required
name: "Onyx" # optional
desc: "One of the best models ever!" # optional
code: "openai_onyx" # optional, to set a default via a code (defaults to "voice-model-provider")
sample_url: "https://public-audio-samples.s3.amazonaws.com/onyx.wav" # optional
disabled: false # optional
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| Openai | Openai | OpenAI_API_KEY | 不 |
| Elevenlabs | eleven_labs | eleven_labs_api_key | 不 |
| Openai兼容 | OpenAi_compatible | OpenAi_compatible_key | 是的 |
嵌入模型是在settings.yml中的embeds下配置的。目前,一次在修道院中使用一個強制性嵌入模型。嵌入模型用於搜索文檔。請記住,如果需要,請配置相關的提供商設置,如上所述。
embeds:
models:
- provider: "openai" # required
model: "text-embedding-ada-002" # required
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| Openai | Openai | OpenAI_API_KEY | 不 |
| 霍拉馬 | 霍拉馬 | 是的 | |
| Openai兼容 | OpenAi_compatible | OpenAi_compatible_key | 是的 |
搜索引擎在settings.yml中的web下配置。當您在修道院聊天時檢查Use Web時,它們會使用。請記住,如果需要,請配置相關的提供商設置,如上所述。
web:
engines:
- provider: "bing" # required
# TO USE SEARXNG, MAKE SURE YOUR SEARXNG SETTINGS ARE CORRECT - SEE [BELOW](#searxng)
- provider: "searxng"
- engine: "pubmed" # Only used for SearXNG - leave blank to search over all engines you've enabled
- provider: "searxng"
engine: "arxiv"
use_pdf: true # Some SearXNG engines give PDF URLs - this tells Abbey to go to the PDF rather than the regular result
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| bing | bing | bing_api_key | 不 |
| searxng | searxng | 是的 |
默認情況下,Searxng不允許訪問API。運行SEARXNG實例時,您必須確保您的searxng設置(不是在修道院的倉庫中,而是在searxng/settings.yml中)允許JSON作為格式,例如:
search:
formats:
- html
- json
您可以在以下curl請求起作用時確保您的SEARXNG實例正常工作(用SEARXNG實例URL替換URL - 端口可能不同。
curl -kLX GET --data-urlencode q='abbey ai' -d format=json http://localhost:8080
光學字符識別API在ocr下配置在settings.yml中。默認情況下,沒有使用OCR。可選的配置OCR允許修道院讀取掃描的PDF。修道院會自動確定是否需要OCR。
ocr:
models:
- provider: "mathpix"
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| MathPix | MathPix | MATHPIX_API_APP和MATHPIX_API_KEY | 不 |
電子郵件API在settings.yml中的email中配置。配置電子郵件使修道院共享時可以將鏈接發送到Abbey的資產,以及在其他一些情況下。默認情況下,修道院不發送電子郵件。使用電子郵件配置文件(例如docker compose up --profile email )運行Abbey,Abbey可以為某些模板發送其他提醒電子郵件。
email:
default: smtp # Refer to each service by its provider name (defaults to first specified)
services:
- provider: sendgrid # Required
email: "[email protected]" # Required
unsub_group: 24624 # Optional, only for Sendgrid
- provider: smtp # Regular email
email: "[email protected]"
| 提供者 | 提供商代碼 | 強制性秘密 | 需要提供商設置 |
|---|---|---|---|
| sendgrid | sendgrid | sendgrid_api_key | 不 |
| SMTP電子郵件 | SMTP | smtp_server,smtp_port,smtp_email和smtp_password | 不 |
文件存儲API在settings.yml中的storage下配置。默認情況下,修道院將所有已上傳的文件存儲在已安裝的file-storage文件夾中。備份修道院時,您應該備份該文件夾以及數據庫。如果要使用S3,則可以使用以下內容:
storage:
default: s3 # All new uploads go to the default provider (you don't need to set up local)
locations:
- provider: s3
| 提供者 | 提供商代碼 | API密鑰名稱 | 需要提供商設置 |
|---|---|---|---|
| S3 | S3 | AWS_ACCESS_KEY和AWS_SECRET_KEY | 不 |
| 當地的 | 當地的 | 不 |
身份驗證提供商在settings.yml中的auth下配置。默認情況下,修道院將使用單個“默認”用戶。設置其他身份驗證提供程序允許多用戶設置。您可以使用諸如Google之類的OAuth2提供商,也可以自我託管keycloak實例(下面的說明)。對於像Google和Github這樣的提供商,您需要客戶秘密和客戶端ID。註冊修道院時,您可能必須提供可訪問修道院的URL - 默認情況下是http://localhost:3000 ,或您用於Abbey的前端的任何公共URL。
auth:
providers:
- google
- github
- keycloak
| 提供者 | 提供商代碼 | env變量 | 如何獲取客戶ID /秘密 |
|---|---|---|---|
| Google_client_id和Google_secret | 請參閱此處 | ||
| github | github | github_client_id和github_secret | 請參閱此處 |
| KeyCloak | KeyCloak | keycloak_public_url,keycloak_internal_url,keycloak_realm,keycloak_secret和keycloak_client_id | 見下文 |
在生產環境中,您還應提供處理驗證令牌的其他秘密。通過將以下內容添加到您的環境文件中:
CUSTOM_AUTH_SECRET="my-auth-secret"
REFRESH_TOKEN_SECRET="my-refresh-secret"
您可以完全使用KeyCloak完全自主身份驗證。使用KeyCloak與修道院需要某些設置 - 例如,必須指定領域的前端URL,以允許修道院和KeyCloak在同一Docker VM中運行。如果您有現有的KeyCloak實例,則應為您放置在.env中的客戶ID和客戶端秘密創建一個新的Abbey客戶端。否則,以下說明正在為修道院設置新實例:
這是一個keycloak-realm.json文件,您可以將自動設置KeyCloak的docker-compose文件旁邊放置:
{
"realm": "abbey-realm",
"enabled": true,
"loginWithEmailAllowed": true,
"duplicateEmailsAllowed": false,
"registrationEmailAsUsername": true,
"attributes": {
"frontendUrl": "http://localhost:8080"
},
"clients": [
{
"clientId": "abbey-client",
"enabled": true,
"protocol": "openid-connect",
"publicClient": false,
"secret": "not-a-secret",
"redirectUris": ["http://localhost:3000/*"]
}
],
"users": [
{
"username": "[email protected]",
"email": "[email protected]",
"enabled": true,
"emailVerified": true,
"credentials": [
{
"type": "password",
"value": "password"
}
]
}
]
}
這是您可以與docker-compose.yml文件一起運行的示例服務:
services:
keycloak:
image: quay.io/keycloak/keycloak:22.0.3
container_name: keycloak
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- 8080:8080
volumes:
- ./keycloak-realm.json:/opt/keycloak/data/import/myrealm.json
command: ["start-dev", "--import-realm"]
volumes:
keycloak_data:
KeyCloak在.env中還需要一些其他秘密:
# The Public URL should be user accessible
KEYCLOAK_PUBLIC_URL="http://localhost:8080"
# The optional Internal URL should be accessible within Docker
KEYCLOAK_INTERNAL_URL="http://keycloak:8080"
KEYCLOAK_REALM="abbey-realm"
KEYCLOAK_SECRET="not-a-secret"
KEYCLOAK_CLIENT_ID="abbey-client"
添加該服務 +創建keycloak-realm.json文件 +將秘密輸入.env中應允許修道院在開發環境中與KeyCloak“僅使用”。
默認情況下,修道院具有MySQL服務,您必須在.env中提供MYSQL_ROOT_PASSWORD 。修道院使用兩個數據庫, custom_auth進行身份驗證並learn其他所有內容。它們可以在相同或不同的服務器上。截至目前,服務器必須是MySQL或MySQL兼容(不是Postgres)。
您可以使用以下.env變量更改MySQL Server可用的位置:
MYSQL_ROOT_PASSWORD=my-root-password
# Remember that the endpoint is accessed server side, so "mysql" is the default network name
DB_ENDPOINT=mysql
DB_USERNAME=root
DB_PASSWORD=my-root-password
DB_PORT=3306
DB_NAME=learn
DB_TYPE=local # 'local' or 'deployed' --> changes how app deals with transaction settings
# You should set global transaction isolation level to READ COMMITTED when using your own database
CUSTOM_AUTH_DB_ENDPOINT=mysql
CUSTOM_AUTH_DB_USERNAME=root
CUSTOM_AUTH_DB_PASSWORD=my-root-password
CUSTOM_AUTH_DB_PORT=3306
CUSTOM_AUTH_DB_NAME=custom_auth
當啟動默認的MySQL服務時,它將使用mysql-init中的文件初始化自身。如果您設置了自己的MySQL服務,則通過運行這些.sql文件(複製並粘貼到終端就足夠)來初始化相關數據庫 /表。
您可能會注意到,在主頁上(在簽名時),右側具有圖像和描述。關於數據庫的初始化,默認情況下將出現一個圖像(託管在Internet上)。要更改該圖像或添加更多圖像,您需要在學習數據庫中的ART_HISTORY表中添加條目(在MySQL服務上)。在那裡,您為圖像放置了一個URL,並為描述降低了。圖像的託管所需的域也需要包含在settings.yml中。
images:
domains:
- "my-domain.com"
要將條目添加到Art_history中,您需要執行一些SQL。使用Docker-Compose,您可以使用:
docker-compose exec mysql mysql -u root -p
然後使用您的MySQL root密碼(在項目根部的.env文件中可用)。然後,您需要執行:
use learn;
INSERT INTO art_history (`markdown`, `image`)
VALUES ('This is my *description*', 'https://my-domain.com/image.webp');
隨機選擇圖像以從該art_history表中顯示。
您可以將修道院的名稱更改為您喜歡在settings.yml中使用此選項的任何內容:yml:
name: "Abbey" # Replace with your chosen name
其他品牌(例如徽標,Favicons等)位於frontend/public 。您可以通過更換文件(但要保留其名稱)來更改它們。背景圖像在frontend/public/random文件夾中。
默認情況下,當後端啟動和此後的每個小時時,修道院將在一個硬編碼的URL上播放一個硬編碼的URL。這樣做是為了跟踪使用統計信息。您正在使用的後端版本加上settings.yml包含在ping中。要禁用ping,請將以下內容放在您的settings.yml中。
ping: false
由於我無法判斷一個設置ping: false和一個停止使用修道院的用戶,請考慮與[email protected]接觸,這樣我就可以得到大量禁用PING的用戶。
修道院的主要優勢之一是它的擴展性。您可以直接實現新的集成和接口。
除auth(請參見下文)以外的每種集成類型都位於backend/app/integrations中的文件中。每種類型的集成都實現了特定的類(例如, lm.py給出了LM類,每種類型的集成都實現了該類別)。您可以簡單地添加從基類繼承的類(LM,TTS,OCR等)。然後,您應該將您的類添加到PROVIDER_TO_ dictionary(每種類型的集成都不同)。對於用戶可以選擇的集成,一旦在settings.yml中進行了適當的更改。對於默認情況下由Abbey選擇的embed之類的集成,您應該確保您的集成是settings.yml中的默認值。
如果您的集成依賴於秘密,則應使用指定的模式將其添加到backend/app/configs/secrets.py ,然後將其導入集成文件(例如, lm.py )。
與其他集成不同,如果您只是添加OAuth2提供商,則實際上沒有理由在燒瓶後端做任何事情。 Next.js前端服務器處理所有內容。您需要做的是:
frontend/src/pages/api/auth/[...auth].js中創建一個提供商類。最簡單的示例是提供三個URL的GoogleAuth類(擴展baseauth):OAuth2 auth端點; OAuth2令牌端點;和OpenID連接用戶信息端點。由於GitHub未實現標準OpenID連接,因此它直接實現了GetUserData()函數。authProviders變量中。frontend/src/auth/custom.js中為該提供商創建一個前端登錄按鈕。首先,這意味著要根據是否設置為1的環境變量來enabledProviders新提供商的代碼(環境變量必須從next_public開始),以便它可用的客戶端。其次,這意味著將對象添加到providers列表中指定您的提供商代碼和按鈕值(您可以通過遵循模式並將徽標添加到frontend/public/random中添加提供商的徽標)。 搜索引擎上的一個註釋:搜索引擎返回自定義搜索對象的某些類功能;相關類是在web.py中實現的,如果您選擇實現新的搜索引擎集成,則應查看。
在修道院中,一切都是“資產”,每個資產都實現了“模板”。例如,如果您上傳文檔,它將成為模板document的“資產”。同樣,如果創建一個新的工作區,它將成為模板notebook (工作區的內部名稱)的“資產”。在前端,提供給用戶的接口由他查看的模板確定。每個模板都必須設置一系列常見變量(例如,是否允許模板與文件夾中的模板聊天或類似的模板)。這些變量和實現功能決定了/asset/chat等一般端點的方式。
在後端,所有模板都是從Template基類繼承的類。這些模板位於其自己的文件中,在backend/app/templates中。模板在backend/app/templates.py中註冊。您必須在此處添加模板的實例才能啟用它。您還必須將模板添加到backend/app/configs/user_config.py 。在模板文件中也可能是該模板的特定端點。如果選擇創建一個,則必須在backend/app/__init__.py中註冊。
在前端,所有模板均在一個文件中實現, frontend/src/template.js 。每個模板都有一個從Template類繼承的類。在文件的底部,有各種列表和對象確定模板的可用性;您至少必須將模板添加到TEMPLATES對像中才能使用戶可用。
一些模板就像葉子。例如,文檔沒有鏈接的資產來源,這意味著,當您與文檔聊天時,您只能與該文檔聊天。其他模板具有鏈接的來源。例如,文件夾的內容是鏈接的資產。該系統存在於其他模板(例如文本編輯器)的其他模板,該模板可以從其他資產中以其AI寫入功能獲取材料。以一致的方式使用源可以確保跨模板(例如共享資產)擴展的功能仍然有效。例如,如果您與某人共享一個文件夾,例如,權限將傳播到該文件夾中的所有項目。
檢索前端資產源信息的標準方法是/assets/sources-info端點。將源添加到資產的標準方法是端點/assets/add-resource和/assets/add-resources 。這些端點正在尋找asset_metadata表中的條目,其中具有鍵retrieval_source ,其值為資產ID。在backend/app/assets.py中查看有關這些端點的更多詳細信息。