AI

Antimatter 的 AI 功能使用您選擇的模型:雲端供應商,或您自己網路上的伺服器。在您設定模型之前,不會有任何資料被傳送。本頁涵蓋模型連線、各項功能、所傳送的資料以及如何關閉它們。

AI 功能

功能設定位置模型類型預設開啟
在輸入框中重寫:在傳送訊息前改善、縮短、修正或翻譯訊息AI › 內建功能,並搭配模型連線一個聊天模型(LLM)否
摘要:使用者選擇頻道的摘要AI › 內建功能,並搭配模型連線一個聊天模型(LLM)否
頻道的自動翻譯網站設定 › 語言一個模型連線、LibreTranslate 或 OpenAI 相容的 API否
朗讀整合 › 文字轉語音,可選搭配模型連線文字轉語音,相容於 OpenAI否
AI 代理程式:與機器人聊天、討論串摘要、通話摘要代理程式應用程式任何大型語言模型 (LLM) 服務應用程式已開啟,但在您新增服務之前不會執行任何動作
通話文字轉錄與即時字幕通話應用程式文字轉錄,相容於 OpenAI否

「OpenAI 相容」是指提供與 OpenAI 相同 HTTP API 的伺服器。大多數您可以自行運行的模型伺服器都符合此條件(例如 Ollama、vLLM、llama.cpp 的伺服器,或 Whisper 和文字轉語音伺服器),許多雲端供應商和閘道器也是如此,例如 LiteLLM 或 OpenRouter。使用這些功能不需要任何授權。

內建功能(重寫、摘要、翻譯和朗讀)不需要代理程式應用程式:它們使用您在系統控制台中新增的模型連線。

模型連線

模型連線是 Antimatter 可以呼叫的 AI 供應商:其位址、金鑰及其模型。您只需新增一次,然後為需要使用它的每個功能進行選擇。有兩種類型:

  • 伺服器級連線,由系統管理員在系統控制台 › AI › 模型連線中管理。只有這些連線可以服務內建功能。應用程式也可以為被允許的使用者使用它們。
  • 社群連線,由社群管理員在其社群設定中為其社群新增(見下方)。應用程式為社群成員使用它們。它們永遠不會服務內建功能。

系統控制台的AI部分顯示給可以管理伺服器級連線的人員:預設為系統管理員。其模型連線頁面列出伺服器級連線以及所有社群的連線。

新增一個連線

在系統控制台 › AI › 模型連線中,點擊新增一個連線,然後填寫表單:

欄位應填入的內容
預設值填入供應商與知名服務的位址:OpenAI、Mistral、Gemini、OpenRouter,或伺服器本身的 Ollama 與 LiteLLM。選填。
名稱管理員選擇時看到的名稱,例如「公司 OpenAI」。
供應商OpenAI 相容(大多數供應商、閘道以及您自行執行的模型伺服器)或 Anthropic。擁有獨立登入方式的雲端服務,例如 AWS Bedrock、Google Vertex AI 或搭配 Entra ID 的 Azure,請透過其 OpenAI 相容端點或 LiteLLM 等閘道進行存取。
基礎 URLAPI 的位址,包含 /v1 在內,例如 http://ollama:11434/v1。若留空,則使用供應商預設的位址(https://api.openai.com/v1 或 https://api.anthropic.com/v1)。
API 金鑰供應商的金鑰。若端點不需要金鑰,請留空。金鑰會加密儲存且不再顯示:表單僅顯示最後四個字元,並提供保留、取代或移除的選項。
額外標頭隨每個請求送出的標頭,供需要這些標頭的閘道使用。其值會像金鑰一樣加密儲存且不再顯示:若要變更,請重新輸入所有值。
模型當功能或應用程式未指定模型時,各功能所使用的模型:聊天、嵌入、文字轉錄 與 決策。載入模型 會列出端點提供的模型。若端點不提供某項功能,請將該欄位留空。Anthropic 連線僅支援聊天。
決策 API呼叫決策模型的方式:OpenAI 決策 或 SystemOne。僅對請求決策的應用程式有影響。
限制請參閱 限制與預算。
社群僅限伺服器層級的連線。所有社群:可在每個社群以及私人訊息和群組訊息中使用。否則,僅在您選擇的社群中可用。
誰可以使用在可用的範圍內,所有人,或僅限您選擇的團隊(社群內的人員群組)與角色(系統管理員、社群管理員)。訪客也可使用 允許訪客使用;若未勾選,即使選擇了 所有人,訪客仍無法使用。

測試連線 會檢查位址與金鑰:伺服器會向端點請求其模型列表,或發送一個單詞元的聊天。若位址已變更,只有在您儲存後,或重新輸入金鑰時,才會使用已儲存的金鑰進行測試。點擊 新增連線 以儲存。

伺服器會自行發出請求,因此必須能連接到 API:可以是同一 compose 專案中的模型伺服器、您網路中的伺服器,或網際網路上的伺服器。外發請求會遵循 HTTP_PROXY 和 HTTPS_PROXY 變數。

刪除連線會遺忘其金鑰。使用該連線的功能將停止使用 AI,直到您選擇另一條連線為止。

限制與預算

每條連線都有四項限制。留空或設為 0 表示沒有限制。

  • 每分鐘請求數 和 每人每分鐘請求數。這些數值由每台伺服器獨立計算:由三台伺服器組成的叢集,允許的速率最高可達單台的三倍。
  • 每月 Token 數 和 每人每月 Token 數:Token 預算,以日曆月(UTC)為單位,在資料庫中針對整個叢集進行計算。同時執行的多個請求可能會略微超出預算。

每人限制也適用於重寫和摘要:它們會計入執行重寫的人,或擁有該摘要的人。

使用量

清單顯示每條連線本月的使用量。使用量 可開啟詳細資訊:輸入與輸出的 Token 數、請求數、每月預算、按日(UTC)及使用類型(重寫、摘要、自動翻譯、文字轉語音、透過應用程式的使用者,或特定應用程式)的使用情況。

使用者或應用程式透過連線發出的每次呼叫都會寫入稽核記錄:包括誰、哪條連線、使用類型、模型、Token 數以及是否成功,但絕不會記錄對話內容。內建功能僅計入使用量:單獨的翻譯功能每則訊息、每種語言會產生一次呼叫。

社群連線

社群管理員可在社群設定的 模型連線 分頁中,新增該社群專屬的連線。表單與一般連線相同,但不包含 社群 欄位:社群連線僅在其自身的頻道中運作,供其自身成員使用,且其受眾只能指定其自身的團隊。具有 管理模型連線 權限的角色也可以管理這些連線。預設情況下,社群管理員擁有此權限。

社群連線無法存取私人或環回位址(例如您網路中的 Ollama 伺服器),除非 系統控制台 › 環境 › 開發者 › 允許不受信任的內部連線連往(ServiceSettings.AllowedUntrustedInternalConnections)中列出了這些位址。伺服器層級的連線則可以。

社群管理員端的相關資訊,請參閱 社群設定。

加密金鑰

模型連線的金鑰與額外標頭會使用單一加密金鑰,以 AES-256-GCM 加密後儲存在資料庫中。僅備份資料庫不會洩露這些資訊。伺服器會依下列順序尋找金鑰:

  1. AM_AI_ENCRYPTION_KEY 變數:32 個隨機位元組,以 base64 編碼。可使用 openssl rand -base64 32 產生。
  2. 否則,使用位於伺服器資料目錄(FileSettings.Directory,預設為 ./data/)根目錄下的 ai-encryption.key 檔案。伺服器會在首次有連線需要時建立此檔案,且僅允許伺服器自身讀取。應用程式、匯出與檔案封存無法讀取此檔案。
若沒有金鑰,已儲存的 API 金鑰將無法讀取,且每個連線都必須重新輸入金鑰。請將金鑰與資料庫一起備份(請參閱 備份與升級),並將其與資料庫備份分開保存。

何時設定變數:

  • 使用站點的 compose 檔案。compose.yaml 會從 .env 傳遞 AM_AI_ENCRYPTION_KEY,並在變數為空時將金鑰檔案保留在 data 磁碟區中。設定變數較佳:這樣 .env 的備份就會包含金鑰,且與資料庫分開。請將其加入 .env 並執行 docker compose up -d:
    echo "AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)" >> .env
    如果伺服器已建立其金鑰檔案,請將該檔案中的金鑰放入 .env,以確保已儲存的金鑰仍可讀取:docker compose exec antimatter cat /antimatter/data/ai-encryption.key 可印出該金鑰。
  • 檔案位於 S3 的叢集。由於其伺服器不共用目錄,因此伺服器不會建立該檔案:請在每台伺服器上設定相同的變數。在設定之前,連線無法儲存金鑰。
  • 使用發行版封存或套件時,檔案位於 data/(套件的 /var/lib/antimatter/data)。您可以將其保留在該處,或在環境檔案中設定變數。

若要變更金鑰,請將新金鑰設定在 AM_AI_ENCRYPTION_KEY,並將舊金鑰設定在 AM_AI_ENCRYPTION_PREVIOUS_KEYS(多個金鑰以逗號分隔):使用舊金鑰儲存的金鑰仍可讀取。當您重新輸入連線的金鑰時,該金鑰會使用新金鑰加密。請將舊金鑰保留在列表中,直到所有連線的金鑰都已重新輸入為止。

內建功能

在 系統控制台 › AI › 內建功能 中,為每個功能選擇一個伺服器層級的連線及其模型,或選擇 關閉。未設定連線的功能將不使用 AI。載入模型 會列出該連線的所有模型;預設情況下,每個功能使用該連線的聊天模型。

功能設定其他需求
在編輯器中重寫:訊息框中的 AI 選單(改善、縮短、修正、翻譯)AISettings.Rewrite無:一旦選擇了連線,選單就會顯示。
摘要:使用者選擇的頻道的摘要,可隨需或定期生成AISettings.Recaps在 系統控制台 › 網站設定 › 摘要 中 啟用 AI 摘要(預設為開啟),這也會設定使用者可建立的摘要數量。
自動翻譯AISettings.AutoTranslation翻譯提供者 模型連線(建議),位於 自動翻譯。
文字轉語音AISettings.TextToSpeech在 文字轉語音 中開啟 朗讀訊息。該連線的 /audio/speech 端點會取代那裡設定的位址和金鑰。

每個設定都有 ConnectionId 和 Model 金鑰,例如 AISettings.Rewrite.ConnectionId(AM_AISETTINGS_REWRITE_CONNECTIONID)。空的 Model 會使用連線的預設模型。

內建功能使用連線的限制,但不使用其受眾:任何可以使用該功能的人都可以使用其連線。如果連線需要關注或已被刪除,該功能將失敗,直到您選擇另一個連線:頁面會說明這一點。

AI 代理程式

代理程式應用程式 (id mattermost-ai) 預設為開啟。設定需要兩個步驟:新增一個服務(與模型供應商的連線),然後建立代理程式(使用該服務的機器人)。

The Agents panel on the right of a channel: a user asked about an incident and the agent answered with a summary of the related threads.
代理程式在代理程式面板中回覆。
Agents 應用程式的代理程式仍使用應用程式自身的 AI 服務,而非模型連線。內建功能不再透過應用程式。在升級到 0.9.0 的伺服器上,應用程式的服務也一次性複製到了伺服器層級的模型連線中(見 升級到 0.9.0)。

1. 新增服務

前往 系統控制台 › 擴充程式 › 代理程式,在 AI Services 下方,按一下 Add an AI Service。選擇 Service type:

  • OpenAI 相容:適用於您自行執行的模型伺服器,或任何具有 OpenAI 風格 API 的供應商。填寫API URL(例如 http://ollama:11434/v1 或 http://vllm.internal:8000/v1),僅在伺服器需要時填寫API 金鑰。如果伺服器僅支援 Chat Completions API,請關閉使用 Responses API。
  • OpenAI、Anthropic、Google Gemini、Google Vertex AI、AWS Bedrock、Azure、Cohere、Mistral:託管供應商。每個都需要其API 金鑰(Bedrock:AWS 區域和憑證或 IAM 角色;Vertex AI:專案、區域和服務帳戶;Azure:也需要 API URL)。

接著設定預設模型(若供應商能回報其模型清單,則從清單中選擇;否則請輸入模型名稱),以及(若供應商未回報)輸入 Token 上限和輸出 Token 上限。您可以設定備援服務,當此服務失敗時由其接管。完成後儲存。

伺服器會自行發出這些請求,因此必須能連接到 API:可以是同一個 compose 專案中的模型伺服器、您網路中的伺服器,或是網際網路上的伺服器。外發請求會遵循 HTTP_PROXY 和 HTTPS_PROXY 變數。

2. 建立代理程式

代理程式是在網頁應用程式的代理程式頁面建立的:請在代理程式面板的代理程式選擇器中開啟管理(在傳統介面中,也可從產品選單開啟)。其網址為 https://chat.example.com/plug/mattermost-ai/agents。每個代理程式都有顯示名稱、代理程式使用者名稱(供他人提及使用)、服務,以及可選的模型、自訂指令,還有啟用視覺(影像)和啟用工具的開關。其存取標籤頁可限制該代理程式可在哪些頻道使用,以及哪些使用者可以使用它。在系統控制台的AI 功能中,預設機器人會選擇在未指定代理程式時所使用的代理程式,例如用於通話摘要。

預設情況下,每位使用者都可以使用您設定的服務建立自己的代理程式。若要將此權限僅保留給管理員,請在系統控制台 › 使用者管理 › 權限中,從成員角色移除管理自己的 AI 代理程式權限。

代理程式應用程式的選填功能

  • 嵌入搜尋(實驗性,已停用):對訊息進行語意搜尋。需要支援 pgvector 擴充功能的 PostgreSQL 以及嵌入模型(OpenAI 或相容於 OpenAI 的模型)。它會將每一則訊息(包括私人頻道和私人訊息)傳送至嵌入模型。
  • 網頁搜尋(已停用):讓代理程式透過 Google、Brave 或您自行運行的 SearXNG 伺服器搜尋網頁。
  • 原生工具:若供應商提供,代理程式可使用供應商自有的網頁搜尋(對於支援的新代理程式,預設為開啟)、網頁抓取和程式碼執行。這些操作在供應商端執行。您可以針對每個代理程式關閉這些功能。
  • 模型上下文協定 (MCP):將代理程式連接至您信任的 MCP 伺服器,以獲得更多工具。
  • 偵錯:Trace Output(關閉、伺服器記錄或 OpenTelemetry 端點)以及 Enable Token Usage Logging,此選項會將 token 數量寫入 logs/agents/token_usage.log。

語音轉文字:通話文字轉錄與即時字幕

通話可由提供 OpenAI 相容 /v1/audio/transcriptions 端點的語音轉文字伺服器進行文字轉錄,並提供即時字幕。設定方式請參閱通話與語音。開啟摘要文字轉錄後,預設代理程式也會為每份轉錄內容發布摘要。

文字轉語音:朗讀

開啟文字轉語音後,每則訊息的選單中都會出現朗讀選項:伺服器會將訊息文字傳送至文字轉語音 API 並播放音訊。設定位於系統控制台 › 整合 › 文字轉語音:

設定金鑰與變數應填入的內容
朗讀訊息TextToSpeechSettings.Enable, AM_TEXTTOSPEECHSETTINGS_ENABLEtrue(預設為關閉)
API 基礎 URLTextToSpeechSettings.URL, AM_TEXTTOSPEECHSETTINGS_URL包含 /v1 在內的基礎 URL,例如 http://tts.internal:8000/v1。伺服器將呼叫其 /audio/speech 端點。
模型TextToSpeechSettings.Model, AM_TEXTTOSPEECHSETTINGS_MODELAPI 所命名的模型,例如 tts-1。必填。
語音TextToSpeechSettings.Voice, AM_TEXTTOSPEECHSETTINGS_VOICE模型其中一種語音,或留空以使用預設值。
API 金鑰TextToSpeechSettings.APIKey, AM_TEXTTOSPEECHSETTINGS_APIKEY作為 Bearer Token 傳送。若 API 不需要金鑰,則留空。

若要使用模型連線代替上述的網址和金鑰,請在AI › 內建功能中為文字轉語音選擇該連線。該頁面會顯示訊息將透過該連線朗讀:API 基礎 URL和API 金鑰將不被使用,語音仍會使用,若連線未指定模型,則模型也會使用。朗讀訊息仍必須開啟。

傳送前,伺服器會移除程式碼區塊、連結、表情符號代碼與格式,並保留最多 4000 個字元。它要求 MP3 音訊格式,並在記憶體中保留最近 64 個結果,因此同一則訊息若被朗讀兩次,只會傳送一次。

自動翻譯

自動翻譯功能可將頻道的訊息顯示為每位讀者自己的語言。請在系統控制台 › 網站設定 › 區域化下的自動翻譯中進行設定:

設定金鑰預設值
啟用AutoTranslationSettings.Enable關閉
翻譯供應商AutoTranslationSettings.Providerconnection(顯示為「模型連線(建議)」,在未設定時會選擇此選項)、libretranslate、openai(「OpenAI 相容 API,在此設定」)或 agents(「AI 聊天應用程式的服務(舊版)」)
允許的語言AutoTranslationSettings.TargetLanguagesen:訊息可被翻譯成的語言
翻譯逾時(ms)AutoTranslationSettings.TimeoutMs5000
限制私人訊息與群組訊息的自動翻譯AutoTranslationSettings.RestrictDMAndGM關閉

每個供應商都有各自的欄位:

  • 模型連線:伺服器範圍的連線及其模型,與AI › 內建功能中的自動翻譯設定相同(AISettings.AutoTranslation)。專用的翻譯模型速度快且準確;通用 LLM 也可以使用。
  • LibreTranslate:LibreTranslate API 端點與LibreTranslate API 金鑰(AutoTranslationSettings.LibreTranslate.URL、.APIKey)。LibreTranslate 伺服器可運行在您自己的網路上。
  • OpenAI 相容 API:API 基礎 URL(包含 /v1 在內;伺服器使用其聊天完成端點)、模型與API 金鑰(AutoTranslationSettings.OpenAI.URL、.Model、.APIKey)。在本地運行的輕量級翻譯模型效果良好。
  • AI 聊天應用程式的服務(舊版):0.9.0 之前設定的伺服器所使用的提供者,當時使用的是代理程式應用程式的服務。現在不再需要該應用程式:它會使用AI › 內建功能中為自動翻譯選擇的連線進行翻譯,或者使用升級時從應用程式服務複製的連線。切換至模型連線可將設定移至建議的提供者。

開啟後,頻道管理員可在頻道的設定中(自動翻譯)為該頻道啟用翻譯功能,而每位成員可透過頻道選單(翻譯訊息)選擇退出。在私人訊息與群組訊息中,任何成員皆可開啟此功能;若已啟用限制,則這些情境中無法使用翻譯。已翻譯的訊息會顯示「已從……翻譯」,並附上連結指向原始訊息。

在傳送文字之前,程式碼、連結、提及與表情符號會被替換為佔位符,之後再還原。

資料流向

功能傳送內容目的地
重寫正在撰寫的訊息,以及所選擇的指令為其選擇的連線
摘要摘要中頻道的訊息,以及該使用者的指令為其選擇的連線
使用模型連線的應用程式每個應用程式為使用它的使用者所傳送的內容該使用者可能使用的連線
代理程式請求、所關聯討論串或頻道的訊息、代理程式的指令、工具結果、開啟視覺功能時的圖片,以及提問者的姓名、使用者名稱、職位與語言該服務的 API
嵌入搜尋所有訊息(機器人與系統訊息除外)嵌入 API
原生工具與網頁搜尋搜尋查詢、要抓取的頁面、程式碼供應商或您選擇的搜尋引擎
通話文字轉錄開啟期間所有發言者的聲音語音轉文字 API
朗讀正在朗讀的訊息文字文字轉語音 API,或為其選擇的連線
翻譯已翻譯頻道中的訊息文字模型連線、LibreTranslate 或 OpenAI 相容 API

若要將所有資料保留在您的網路內,請將各項功能指向您自行執行的伺服器。若使用雲端供應商,請核對其資料保留條款,並告知使用者哪些功能會將訊息傳送至外部。

關閉 AI

沒有單一開關:每項功能都有各自的開關。

  • 重寫與摘要:在系統控制台 › AI › 內建功能中將其設為關閉。使用者會持續閱讀他們已有的摘要。
  • 模型連線:刪除連線即可停止所有對該連線的使用。若沒有任何連線,內建功能與應用程式皆無法透過伺服器使用 AI。
  • 代理程式:在系統控制台 › 擴充程式 › 擴充程式管理中停用代理程式應用程式。這也會移除通話摘要。
  • 文字轉錄與即時字幕:AM_CALLS_ENABLE_TRANSCRIPTIONS=false 與 AM_CALLS_ENABLE_LIVE_CAPTIONS=false(預設值)。
  • 朗讀:關閉朗讀訊息(AM_TEXTTOSPEECHSETTINGS_ENABLE=false,預設值),無論其是否使用連線。
  • 翻譯:關閉自動翻譯(AM_AUTOTRANSLATIONSETTINGS_ENABLE=false,預設值)。

停用代理程式應用程式不會關閉其他功能:這些功能使用模型連線或各自的 API。