使用 Google Gemini API telemetry 傳送並驗證事件
在受控應用程式邊界使用 Google Gemini API telemetry,保持事件契約較小,並在建置聚合檢視之前驗證已知結果。
- 1
選擇結果
Gemini 權杖和延遲分析
- 2
定義合約
提供商、型號、功能、狀態和 finish_reason
- 3
在結果處發出
從提供者回應後設資料中讀取權杖計數並儲存用於請求的模型識別符號。
- 4
核實證據
Exercise a known fixture, then inspect llm_request_completed for one correctly typed terminal row.
開始之前
開始之前
- 伺服器端GEMINI_API_KEY和TELEMETRY_API_KEY
- 支援 fetch 和 AbortSignal.timeout 的伺服器執行環境
- 提示之外的穩定功能名稱和版本化成本計算
- 當工作流程公開一個產品結果時,例如接受、儲存或完成
交貨設定
安裝並初始化伺服器端
此伺服器端範例透過 Log API 傳送事件,使用伺服器端金鑰與有時限的 fetch 請求;不需初始化 Telemetry SDK。 將攝取憑據保留在瀏覽器包、客戶端可見的環境變數、原始碼控制、日誌和異常訊息之外。
npm安裝
npm install @google/genai- 1準備一個具有有限網路行為的可重用伺服器端交付客戶端。
- 2在成功、失敗、重試或超時邊界處新增結果事件。
- 3在啟用警示之前傳送受控裝置並檢查儲存的行。
片段
從一個結構化事件開始
在工作流程完成、失敗或重試的位置新增此形狀。然後從真實的欄位建置儀表板。
Google Gemini API telemetry事件
import { GoogleGenAI } from "@google/genai";
async function emitModelOutcome(data) {
try {
const delivery = await fetch("https://api.telemetry.sh/log", {
method: "POST",
headers: {
Authorization: process.env.TELEMETRY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ table: "llm_request_completed", data }),
signal: AbortSignal.timeout(1000),
});
if (!delivery.ok) throw new Error("telemetry_delivery_unconfirmed");
} catch {
try { console.warn("Telemetry delivery unconfirmed"); } catch {}
}
}
const gemini = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const startedAt = performance.now();
try {
const response = await gemini.models.generateContent({
model: process.env.GEMINI_MODEL,
contents: userInput,
});
const usage = response.usageMetadata;
await emitModelOutcome({
provider: "google",
model: process.env.GEMINI_MODEL,
feature: "support_draft",
status: "success",
latency_ms: Math.round(performance.now() - startedAt),
input_tokens: usage?.promptTokenCount,
output_tokens: usage?.candidatesTokenCount,
total_tokens: usage?.totalTokenCount,
prompt_version: "support-v4",
});
return response;
} catch (error) {
await emitModelOutcome({
provider: "google",
model: process.env.GEMINI_MODEL,
feature: "support_draft",
status: "failed",
latency_ms: Math.round(performance.now() - startedAt),
error_type: "provider_request_failed",
});
throw error;
}事件結構
提供商、型號、功能、狀態和 finish_reason
input_tokens、output_tokens、total_tokens、latency_ms 和 estimated_cost_usd
request_id、prompt_version、error_type 和審查結果
檢查設定
檢查站 1
從提供者回應後設資料中讀取權杖計數並儲存用於請求的模型識別符號。
檢查站 2
根據版本化價格資料表計算成本,因為提供商定價和代幣類別可能會發生變化。
檢查站 3
請勿將提示文字、上傳的內容、生成的輸出、API 金鑰或提供程式錯誤正文傳送到一般遙測。
檢查站 4
透過 Log API 傳送允許的模型中繼資料,並設定一秒的協作式逾時;傳送失敗不得改變模型服務提供者的結果。
檢查站 5
此行內範例可能增加傳送延遲,並不保證持久交付。正式環境應使用應用程式自行管理的有界佇列或 outbox。
驗證
證明事件已到達
在演練已知的成功和失敗案例後執行此命令。如果您的最終事件契約與程式碼片段不同,請替換後備資料表名稱。
Google Gemini API telemetry 驗證查詢
SELECT *
FROM llm_request_completed
ORDER BY timestamp_utc DESC
LIMIT 20;實施參考
在啟用新的生產路徑之前,請檢查事件合約、資料安全指南和上游主要文件。
在哪裡記錄事件
保持結果事件小且可恢復
該模式提供了
- 除了上游工作流程之外,還有一個有界的、SQL 就緒的結果。
- 用於儀表板、警示和跨事件關聯的穩定欄位。
- 用於驗證成功、失敗、重試和超時行為的夾具驅動路徑。
該模式不提供
- OTLP 匯出器、自動收集管道或詳細追蹤和診斷日誌的替代品。
- 僅因為有效負載包含事件 ID,所以僅傳送一次。
- 收集原始提供商有效負載、使用者內容、憑證或受監管資料的權限。
事件結構描述範例
此工作流程的事件結構描述
在將查詢或程式碼片段適應生產之前,請檢查行粒度、發出邊界、所需型別、隱私類、範例有效負載和驗證清單。
相關產品功能
繼續此工作流程 AI代理監控
透過可審查的 SQL 連線代理執行、工具使用、模型成本、品質和產品結果。
相關 SQL 查詢範例
更多 SQL 範例
針對此工作流程中的結構化欄位執行查詢,檢查範例結果,並將有用的答案轉換為儀表板或警示。
按功能和模型計算 LLM 成本
哪些產品功能和型號正在推動法學碩士支出?
開啟查詢範例測量 LLM 獲得第一個權杖的時間
在輸出開始之前,哪些模型和功能組合感覺很慢?
開啟查詢範例衡量每美元所接受的人工智慧產出
哪種模型和功能組合可以產生最受接受的單位美元產出?
開啟查詢範例按提示版本查詢 AI 品質回歸
新的提示版本是否在不增加人工交接的情況下提高了品質?
開啟查詢範例按實施系列瀏覽
比較相關整合模式
與此整合配對的範本
更多整合