6.2 LLM交互回调 本教程演示如何使用 和 来监控LLM请求与响应。 学习目标 理解LLM交互回调 学习如何监控LLM请求与响应 跟踪令牌使用情况和响应时间 估算API费用 监控LLM性能指标 项目结构 设置 安装依赖: 设置API密钥: 运行演示 命令行演示 Web界面 核心概念:LLM交互监控 LLM交互回调允许您监控代理与底层语言模型之间的通信,为您提供关于请求、响应和性能指标的洞察。 LLM交互流程 回调执行时间线 代码详解 1.
本教程演示如何使用before_model_callback和after_model_callback来监控LLM请求与响应。
6_2_llm_interaction_callbacks/ ├── agent.py # Agent with LLM interaction callbacks ├── app.py # Streamlit web interface ├── requirements.txt # Python dependencies └── README.md # This file
安装依赖:
pip install -r requirements.txt
设置API密钥:
# Create .env file echo "GOOGLE_API_KEY=your_api_key_here" > .env
python agent.py
streamlit run app.py
LLM交互回调允许您监控代理与底层语言模型之间的通信,为您提供关于请求、响应和性能指标的洞察。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ User Input │───▶│ LLM Request │───▶│ LLM Response │ │ │ │ Callback │ │ Callback │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ Model API │ │ Token Usage │ │ (Gemini) │ │ & Performance │ └─────────────────┘ └─────────────────┘
Timeline: ──────────────────────────────────────────────────────────▶ User Message │ ▼ ┌─────────────────┐ │ before_model │ ← Records start time, model info │ _callback │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ LLM API Call │ ← Actual request to Gemini │ (Gemini 3 Flash) │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ after_model │ ← Calculates duration, tokens, cost │ _callback │ └─────────────────┘ │ ▼ Response to User
这些回调成对工作,以监控完整的LLM交互:
前置回调 (before_model_callback):
llm_request中提取模型信息后置回调 (after_model_callback):
llm_response.usage_metadata中提取令牌使用情况Session State Flow: ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ before_callback │───▶│ Session State │───▶│ after_callback │ │ stores: │ │ │ │ retrieves: │ │ - start_time │ │ - llm_request_ │ │ - start_time │ │ - model │ │ time │ │ - model │ │ - prompt_length │ │ - llm_model │ │ - prompt_length │ └─────────────────┘ └─────────────────┘ └─────────────────┘
代理配置了两个回调:
before_model_callback:监控请求发起after_model_callback:监控响应完成InMemoryRunner确保正确触发回调LLM Request to gemini-3-flash-preview ⏰ Request time: 19:15:30 Agent: llm_monitor_agent LLM Response from gemini-3-flash-preview ⏱️ Duration: 1.45s Tokens: 156 Estimated cost: $0.0004
llm_response.usage_metadata.total_token_count回调签名不正确:
# ❌ Wrong def before_model_callback(context, model, prompt): # ✅ Correct def before_model_callback(callback_context: CallbackContext, llm_request):
令牌提取错误:
# ❌ Wrong tokens = llm_response.usage_metadata.get('total_token_count') # ✅ Correct tokens = getattr(llm_response.usage_metadata, 'total_token_count', 0)
未使用InMemoryRunner:
# ❌ Wrong - callbacks won't trigger agent.run(message) # ✅ Correct runner.run_async(...)
免责声明:
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。