可觀測性
Spring AI 構建於 Spring 生態系統中的可觀測性功能之上,以提供對 AI 相關操作的洞察。
啟用可觀測性需要 spring-boot-actuator 模組。將 Spring Boot Actuator 依賴項新增到您專案的 Maven pom.xml 構建檔案中
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
或新增到您的 Gradle build.gradle 構建檔案中。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
Spring AI 為其核心元件提供指標和跟蹤功能:ChatClient (包括 Advisor)、ChatModel、EmbeddingModel、ImageModel 和 VectorStore。
| 低基數鍵將新增到指標和跟蹤中,而高基數鍵將僅新增到跟蹤中。 |
|
1.0.0-RC1 破壞性變更 以下配置屬性已重新命名,以更好地反映其用途
|
聊天客戶端
當呼叫 ChatClient 的 call() 或 stream() 操作時,會記錄 spring.ai.chat.client 觀測。它們測量執行呼叫所花費的時間並傳播相關的跟蹤資訊。
| 名稱 | 描述 |
|---|---|
|
始終為 |
|
始終為 |
|
聊天模型響應是否為流 - |
|
Spring AI 中框架 API 的型別: |
| 名稱 | 描述 |
|---|---|
|
透過聊天客戶端傳送的提示內容。可選。 |
|
顧問引數的對映。會話 ID 現在包含在 |
|
已配置的聊天客戶端顧問列表。 |
|
使用聊天記憶時的會話識別符號。 |
|
聊天客戶端系統引數。可選。已由 |
|
聊天客戶端系統文字。可選。已由 |
|
已啟用的工具函式名稱。已由 |
|
已配置的聊天客戶端函式回撥列表。已由 |
|
傳遞給聊天客戶端的工具名稱。 |
|
聊天客戶端使用者引數。可選。已由 |
|
聊天客戶端使用者文字。可選。已由 |
提示和完成資料
ChatClient 提示和完成資料通常很大,可能包含敏感資訊。因此,預設情況下不匯出。
Spring AI 支援記錄提示和完成資料,以幫助除錯和故障排除。
| 財產 | 描述 | 預設值 |
|---|---|---|
|
是否記錄聊天客戶端提示內容。 |
|
|
是否記錄聊天客戶端完成內容。 |
|
| 如果您啟用聊天客戶端提示和完成資料的記錄,存在暴露敏感或私人資訊的風險。請務必小心! |
輸入資料 (已棄用)
spring.ai.chat.client.observations.include-input 屬性已棄用,由 spring.ai.chat.client.observations.log-prompt 取代。請參閱 提示內容。 |
ChatClient 輸入資料通常很大,可能包含敏感資訊。因此,預設情況下不匯出。
Spring AI 支援記錄輸入資料,以幫助除錯和故障排除。
| 財產 | 描述 | 預設值 |
|---|---|---|
|
是否在觀測中包含輸入內容。 |
|
| 如果您在觀測中啟用輸入內容的包含,存在暴露敏感或私人資訊的風險。請務必小心! |
聊天客戶端顧問
當執行顧問時,會記錄 spring.ai.advisor 觀測。它們測量在顧問中花費的時間(包括在內部顧問中花費的時間)並傳播相關的跟蹤資訊。
| 名稱 | 描述 |
|---|---|
|
始終為 |
|
始終為 |
|
顧問在請求處理中應用其邏輯的位置,可以是 |
|
Spring AI 中框架 API 的型別: |
| 名稱 | 描述 |
|---|---|
|
顧問的名稱。 |
|
顧問鏈中的顧問順序。 |
聊天模型
目前僅支援以下 AI 模型提供商的 ChatModel 實現的可觀測性功能:Anthropic、Azure OpenAI、Mistral AI、Ollama、OpenAI、Vertex AI、MiniMax、Moonshot、QianFan、Zhipu AI。未來的版本將支援更多的 AI 模型提供商。 |
當呼叫 ChatModel 的 call 或 stream 方法時,會記錄 gen_ai.client.operation 觀測。它們測量方法完成所花費的時間並傳播相關的跟蹤資訊。
gen_ai.client.token.usage 指標測量單個模型呼叫使用的輸入和輸出令牌數量。 |
| 名稱 | 描述 |
|---|---|
|
正在執行的操作名稱。 |
|
由客戶端儀器標識的模型提供商。 |
|
請求所針對的模型名稱。 |
|
生成響應的模型名稱。 |
| 名稱 | 描述 |
|---|---|
|
模型請求的頻率懲罰設定。 |
|
模型為請求生成的最大令牌數量。 |
|
模型請求的存在懲罰設定。 |
|
模型將用於停止生成更多令牌的序列列表。 |
|
模型請求的溫度設定。 |
|
模型請求的 top_k 取樣設定。 |
|
模型請求的 top_p 取樣設定。 |
|
模型停止生成令牌的原因,對應於收到的每個生成。 |
|
AI 響應的唯一識別符號。 |
|
模型輸入(提示)中使用的令牌數量。 |
|
模型輸出(完成)中使用的令牌數量。 |
|
模型交換中使用的總令牌數量。 |
|
傳送給模型的完整提示。可選。 |
|
從模型接收到的完整響應。可選。 |
|
請求中提供給模型的工具定義列表。 |
為了衡量使用者令牌,上表列出了觀測跟蹤中存在的值。使用 ChatModel 提供的指標名稱 gen_ai.client.token.usage。 |
聊天提示和完成資料
聊天提示和完成資料通常很大,可能包含敏感資訊。因此,預設情況下不匯出。
Spring AI 支援記錄聊天提示和完成資料,這對於故障排除場景很有用。當跟蹤可用時,日誌將包含跟蹤資訊,以便更好地進行關聯。
| 財產 | 描述 | 預設值 |
|---|---|---|
|
記錄提示內容。 |
|
|
記錄完成內容。 |
|
|
在觀測中包含錯誤日誌記錄。 |
|
| 如果您啟用聊天提示和完成資料的記錄,存在暴露敏感或私人資訊的風險。請務必小心! |
工具呼叫
當在聊天模型互動的上下文中執行工具呼叫時,會記錄 spring.ai.tool 觀測。它們測量完成工具呼叫所花費的時間並傳播相關的跟蹤資訊。
| 名稱 | 描述 |
|---|---|
|
正在執行的操作名稱。始終為 |
|
負責該操作的提供商。始終為 |
|
Spring AI 執行的操作型別。始終為 |
|
工具的名稱。 |
名稱 |
描述 |
|
工具的描述。 |
|
用於呼叫工具的引數模式。 |
|
工具呼叫的輸入引數。(僅在啟用時) |
|
用於呼叫工具的引數模式。(僅在啟用時) |
嵌入模型
目前僅支援以下 AI 模型提供商的 EmbeddingModel 實現的可觀測性功能:Azure OpenAI、Mistral AI、Ollama 和 OpenAI。未來的版本將支援更多的 AI 模型提供商。 |
當呼叫嵌入模型方法時,會記錄 gen_ai.client.operation 觀測。它們測量方法完成所花費的時間並傳播相關的跟蹤資訊。
gen_ai.client.token.usage 指標測量單個模型呼叫使用的輸入和輸出令牌數量。 |
| 名稱 | 描述 |
|---|---|
|
正在執行的操作名稱。 |
|
由客戶端儀器標識的模型提供商。 |
|
請求所針對的模型名稱。 |
|
生成響應的模型名稱。 |
| 名稱 | 描述 |
|---|---|
|
結果輸出嵌入的維度數量。 |
|
模型輸入中使用的令牌數量。 |
|
模型交換中使用的總令牌數量。 |
為了衡量使用者令牌,上表列出了觀測跟蹤中存在的值。使用 EmbeddingModel 提供的指標名稱 gen_ai.client.token.usage。 |
影像模型
目前僅支援以下 AI 模型提供商的 ImageModel 實現的可觀測性功能:OpenAI。未來的版本將支援更多的 AI 模型提供商。 |
當呼叫影像模型方法時,會記錄 gen_ai.client.operation 觀測。它們測量方法完成所花費的時間並傳播相關的跟蹤資訊。
gen_ai.client.token.usage 指標測量單個模型呼叫使用的輸入和輸出令牌數量。 |
| 名稱 | 描述 |
|---|---|
|
正在執行的操作名稱。 |
|
由客戶端儀器標識的模型提供商。 |
|
請求所針對的模型名稱。 |
| 名稱 | 描述 |
|---|---|
|
生成影像的返回格式。 |
|
要生成的影像大小。 |
|
要生成的影像風格。 |
|
AI 響應的唯一識別符號。 |
|
生成響應的模型名稱。 |
|
模型輸入(提示)中使用的令牌數量。 |
|
模型輸出(生成)中使用的令牌數量。 |
|
模型交換中使用的總令牌數量。 |
|
傳送給模型的完整提示。可選。 |
為了衡量使用者令牌,上表列出了觀測跟蹤中存在的值。使用 ImageModel 提供的指標名稱 gen_ai.client.token.usage。 |
向量儲存
Spring AI 中的所有向量儲存實現都經過檢測,透過 Micrometer 提供指標和分散式跟蹤資料。
當與向量儲存互動時,會記錄 db.vector.client.operation 觀測。它們測量在 query、add 和 remove 操作中花費的時間並傳播相關的跟蹤資訊。
| 名稱 | 描述 |
|---|---|
|
正在執行的操作或命令的名稱。可以是 |
|
由客戶端儀器識別的資料庫管理系統 (DBMS) 產品。可以是 |
|
Spring AI 中框架 API 的型別: |
| 名稱 | 描述 |
|---|---|
|
資料庫中集合(表、容器)的名稱。 |
|
資料庫的名稱,在伺服器地址和埠內完全限定。 |
|
如果存在,記錄識別符號。 |
|
相似性搜尋中使用的指標。 |
|
向量的維度。 |
|
向量的名稱欄位(例如,欄位名稱)。 |
|
正在執行的搜尋查詢內容。 |
|
搜尋查詢中使用的元資料過濾器。 |
|
相似性搜尋查詢返回的文件。可選。 |
|
接受所有搜尋分數的相似性閾值。閾值為 0.0 表示接受任何相似性或停用相似性閾值過濾。閾值為 1.0 表示需要精確匹配。 |
|
查詢返回的 top-k 最相似向量。 |
更多指標參考
本節記錄了 Spring AI 元件在 Prometheus 中顯示的指標。
指標命名約定
Spring AI 使用 Micrometer。基本指標名稱使用點(例如,gen_ai.client.operation),Prometheus 將其匯出為下劃線和標準字尾
-
計時器 →
<base>_seconds_count、<base>_seconds_sum、<base>_seconds_max,以及(如果支援)<base>_active_count -
計數器 →
<base>_total(單調)
|
以下顯示了基本指標名稱如何擴充套件為 Prometheus 時間序列。
|
參考資料
-
OpenTelemetry — 生成式 AI 的語義約定 (概述)
-
Micrometer — 命名儀表
聊天客戶端指標
| 指標名稱 | 型別 | 單位 | 描述 |
|---|---|---|---|
|
計時器 |
秒 |
ChatClient 操作(call/stream)中花費的總時間 |
|
計數器 |
計數 |
完成的 ChatClient 運算元量 |
|
量規 |
秒 |
ChatClient 操作的最大觀測持續時間 |
|
量規 |
計數 |
當前正在進行的 ChatClient 運算元量 |
活動與完成: active_count 顯示正在進行的呼叫;_seconds 系列僅反映已完成的呼叫。
聊天模型指標(模型提供商執行)
| 指標名稱 | 型別 | 單位 | 描述 |
|---|---|---|---|
|
計時器 |
秒 |
執行聊天模型操作的總時間 |
|
計數器 |
計數 |
完成的聊天模型運算元量 |
|
量規 |
秒 |
聊天模型操作的最大觀測持續時間 |
|
量規 |
計數 |
當前正在進行的聊天模型運算元量 |