游乐游手机版
首页/AI教程/文章详情

大模型可观测性升温:响应时间、Token与调用链成AI系统新指标

时间:2026-07-01 15:28
2026年,大模型应用正迈入全新阶段:核心关注点从“功能是否可用”转向“运行是否稳定”。 回顾过往,大家对大模型的注意力基本集中在模型效果本身——回答准确度如何、生成速度快慢、能否对接知识库、是否支持多轮对话。这些固然是基础能力,但当模型真正嵌入客服、办公、研发、运维、数据分析等核心业务场景后,新的

2026年,大模型应用正迈入全新阶段:核心关注点从“功能是否可用”转向“运行是否稳定”。

回顾过往,大家对大模型的注意力基本集中在模型效果本身——回答准确度如何、生成速度快慢、能否对接知识库、是否支持多轮对话。这些固然是基础能力,但当模型真正嵌入客服、办公、研发、运维、数据分析等核心业务场景后,新的挑战随即浮现。

例如,模型偶尔响应变慢了怎么办?一次请求为什么消耗了异常多的Token?RAG检索未能召回正确资料,问题出在哪里?Agent调用工具失败后,系统能否精准定位到具体出错步骤?

这些问题共同指向一个明确方向:AI可观测性

传统可观测性主要关注服务器、容器、接口、数据库和中间件——CPU、内存、请求耗时、错误率、日志与调用链。但大模型应用的运行链路远比传统架构复杂。它不仅仅是普通的API接口,还涵盖Prompt、模型调用、Token消耗、向量检索、工具调用、Agent执行以及最终结果生成。

因此,AI可观测性绝不仅仅是“查看日志”那么简单,而是需要将每一次AI请求拆解为可追踪、可分析、可优化的完整运行链路


为什么AI可观测性现在变得至关重要?

当AI应用还只是一个Demo时,偶尔失败或卡顿影响有限。但一旦进入真实业务系统,稳定性问题立刻凸显。

具体来说:

  • 客服机器人不能长时间无响应;
  • 代码助手不能频繁生成失败;
  • RAG问答不能经常召回空内容;
  • Agent在工具调用失败后,不能没有任何记录;
  • 企业需要清楚了解每次模型调用消耗了多少Token。

这些问题如果没有有效监控,排查起来无异于大海捞针。

因此,大模型应用需要一套全新的指标体系:请求耗时、模型耗时、输入Token、输出Token、工具调用成功率、RAG召回数量、错误类型、单次请求状态。下面,我们用Python演示一个简化版的AI可观测性系统。


基础配置:定义指标日志文件

第一步,先定义日志文件和基础工具函数。

这里使用JSONL文件记录每一步的指标数据。JSONL的优势在于每行一条数据,便于后续导入日志系统或分析平台。

```python import time import json import random from datetime import datetime from functools import wraps METRIC_FILE = "ai_observability_metrics.jsonl" def now_ms(): return int(time.time() * 1000) def write_metric(metric): with open(METRIC_FILE, "a", encoding="utf-8") as file: file.write( json.dumps(metric, ensure_ascii=False) + "\n" ) ```

这段代码相当于一个最小化的指标采集层。在实际生产环境中,这些数据可以写入日志服务、监控平台、时序数据库或数据仓库。

链路追踪:记录每个步骤耗时

第二步,为关键函数增加追踪能力。

这里使用装饰器记录函数的开始时间、结束时间、耗时、执行状态及错误信息。这样,每一步都会留下可追溯的运行记录。

```python def trace_step(step_name): def decorator(func): @wraps(func) def wrapper(*args, **kwargs): trace_id = kwargs.get("trace_id", "unknown") start_time = now_ms() success = True error_message = None try: return func(*args, **kwargs) except Exception as error: success = False error_message = str(error) raise finally: end_time = now_ms() write_metric({ "trace_id": trace_id, "step_name": step_name, "start_time": start_time, "end_time": end_time, "duration_ms": end_time - start_time, "success": success, "error_message": error_message, "timestamp": datetime.now().isoformat() }) return wrapper return decorator ```

该装饰器可复用于模型调用、向量检索、权限校验、工具调用等多个环节。当请求变慢时,系统能通过 trace_id 快速定位耗时过高的具体步骤。

模拟RAG检索:记录召回数量

第三步,模拟RAG检索。

RAG系统不仅需要记录检索耗时,还要关注召回数量。若召回结果为空,通常意味着知识库、查询语义或向量索引可能存在异常。

```python @trace_step("rag_retrieval") def rag_retrieval(query, trace_id=None): time.sleep(random.uniform(0.05, 0.2)) if random.random() < 0.1: docs = [] else: docs = [ "知识片段一:这里是与问题相关的资料。", "知识片段二:这里是另一个召回结果。" ] write_metric({ "trace_id": trace_id, "step_name": "rag_retrieval_result", "query": query, "doc_count": len(docs), "timestamp": datetime.now().isoformat() }) return docs ```

RAG召回数量是AI应用中极具信号价值的指标。如果用户提问经常召不到内容,模型就可能开始“凭空猜测”,最终影响回答的可靠性。

模拟模型调用:记录Token和延迟

第四步,模拟大模型调用。

这里记录输入Token、输出Token、总Token以及模型延迟。在实际系统中,这些字段通常来自模型接口的返回结果。

```python def estimate_tokens(text): if not text: return 0 chinese_chars = sum( 1 for char in text if "\u4e00" <= char <= "\u9fff" ) other_chars = len(text) - chinese_chars return int(chinese_chars * 1.2 + other_chars * 0.4) @trace_step("llm_call") def call_large_model(prompt, trace_id=None): time.sleep(random.uniform(0.2, 0.8)) if random.random() < 0.08: raise RuntimeError("model request timeout") input_tokens = estimate_tokens(prompt) output = "这是大模型生成的模拟回答。" output_tokens = estimate_tokens(output) write_metric({ "trace_id": trace_id, "step_name": "llm_token_usage", "input_tokens": input_tokens, "output_tokens": output_tokens, "total_tokens": input_tokens + output_tokens, "timestamp": datetime.now().isoformat() }) return { "answer": output, "input_tokens": input_tokens, "output_tokens": output_tokens } ```

Token指标的价值远不止于成本统计。它还能帮助团队判断Prompt是否过长、上下文是否冗余、输出是否异常,以及是否需要做提示词压缩。

模拟工具调用:记录Agent执行状态

第五步,模拟Agent工具调用。

在智能体系统中,模型经常需要调用搜索、数据库、文件、代码执行等工具。每次工具调用都应记录成功率和错误信息。

```python @trace_step("agent_tool_call") def call_agent_tool(tool_name, payload, trace_id=None): time.sleep(random.uniform(0.05, 0.3)) if random.random() < 0.12: raise RuntimeError(f"tool call failed: {tool_name}") return { "tool_name": tool_name, "payload": payload, "result": "工具执行成功" } ```

Agent的稳定性很大程度上取决于工具调用的稳定性。若工具失败后没有任何记录,排查问题的难度会急剧上升。

请求入口:串联完整AI链路

第六步,构建完整的请求流程。

一次AI请求可能包含权限校验、RAG检索、工具调用、Prompt组装和模型生成。这里用一个函数把这些步骤串联起来。

```python def build_prompt(query, docs, tool_result): context = "\n".join(docs) prompt = f""" 你是一个企业AI助手。 请基于以下资料回答用户问题。 用户问题: {query} 知识库资料: {context} 工具结果: {tool_result} 要求: 1. 回答准确; 2. 不编造事实; 3. 如果资料不足,请说明无法判断。 """ return prompt def handle_ai_request(user_id, query): trace_id = f"trace-{now_ms()}-{random.randint(1000, 9999)}" request_start = now_ms() status = "success" answer = None try: docs = rag_retrieval( query=query, trace_id=trace_id ) tool_result = call_agent_tool( tool_name="search_tool", payload={"query": query}, trace_id=trace_id ) prompt = build_prompt( query=query, docs=docs, tool_result=tool_result["result"] ) model_result = call_large_model( prompt=prompt, trace_id=trace_id ) answer = model_result["answer"] except Exception as error: status = "failed" answer = f"请求失败:{error}" finally: request_end = now_ms() write_metric({ "trace_id": trace_id, "step_name": "request_summary", "user_id": user_id, "query": query, "status": status, "total_duration_ms": request_end - request_start, "timestamp": datetime.now().isoformat() }) return { "trace_id": trace_id, "status": status, "answer": answer } ```

这一步完成后,每次请求都会留下完整的链路记录。后续无论是排查错误、统计耗时,还是分析成本,都可以基于这些日志完成。

生成可观测性报告

最后一步,读取指标日志,生成一份简单报告。

报告包括总请求数、失败数、成功率和平均耗时。这是AI系统运行状态的基本画像。

```python def read_metrics(): metrics = [] try: with open(METRIC_FILE, "r", encoding="utf-8") as file: for line in file: metrics.append(json.loads(line)) except FileNotFoundError: return [] return metrics def generate_report(): metrics = read_metrics() summaries = [ item for item in metrics if item.get("step_name") == "request_summary" ] total = len(summaries) failed = len([ item for item in summaries if item.get("status") == "failed" ]) avg_latency = 0 if total > 0: avg_latency = round( sum(item["total_duration_ms"] for item in summaries) / total, 2 ) success_rate = 0 if total > 0: success_rate = round((total - failed) / total * 100, 2) return { "report_name": "AI可观测性运行报告", "total_requests": total, "failed_requests": failed, "success_rate": success_rate, "avg_latency_ms": avg_latency, "generate_time": datetime.now().isoformat() } if __name__ == "__main__": questions = [ "什么是AI可观测性?", "RAG检索为空怎么办?", "Agent工具调用失败如何排查?" ] for question in questions: result = handle_ai_request( user_id="user_001", query=question ) print(json.dumps( result, ensure_ascii=False, indent=2 )) report = generate_report() print(json.dumps( report, ensure_ascii=False, indent=2 )) ```

趋势判断

从这套流程可以清晰地看到,AI可观测性正在成为大模型应用不可或缺的基础设施。

过去,企业更关心模型的效果;现在,企业还需要看清模型的运行过程。响应时间、Token消耗、RAG召回数量、Agent工具调用成功率、错误类型和请求链路,都成为AI系统的核心指标。

可以预见,未来的大模型应用,不会只比拼“回答得好不好”,还会比拼“运行是否稳定、成本是否可控、问题能否快速定位”。谁能更早建立AI可观测性体系,谁就更容易将大模型从Demo顺利推向真实生产系统。

来源:https://cloud.tencent.com.cn/developer/article/2700342
上一篇AIGC风控体系从准备到运营的搭建方法 下一篇Rust构建AI自演化主板:18个异构器官长出C++骨骼
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
年最新JetBrains AI助手Windows本地详细安装配置教程(含下载与环境要求)
AI教程 · 2026-07-03

年最新JetBrains AI助手Windows本地详细安装配置教程(含下载与环境要求)

JetBrainsAIAssistant可在Windows上通过IDE内置市场或离线包安装,需匹配新版JetBrainsIDE、账号登录与稳定网络。配置时应关注版本兼容、隐私设置、项目索引、快捷键和代码提交前复核,避免上传密钥与敏感业务资料。

Amazon Q Developer新手安装指南:从下载到首次运行的保姆级教程
AI教程 · 2026-07-03

Amazon Q Developer新手安装指南:从下载到首次运行的保姆级教程

AmazonQDeveloper可为编码、调试、解释项目和生成测试提供辅助。安装前需确认账号、开发环境和插件来源,按IDE或命令行路径完成配置,并在首次运行时注意权限、数据与项目安全。

Amazon Q Developer安装失败怎么办?报错日志排查与升级回滚方案
AI教程 · 2026-07-03

Amazon Q Developer安装失败怎么办?报错日志排查与升级回滚方案

AmazonQDeveloper安装失败通常与版本兼容、网络连接、身份登录、插件残留或权限配置有关。排查时应先确认环境,再查看IDE与终端日志,必要时采用清理重装、固定版本升级或回滚方案。

Amazon Q Developer本地模型运行:下载、路径与性能优化
AI教程 · 2026-07-03

Amazon Q Developer本地模型运行:下载、路径与性能优化

AmazonQDeveloper以云端能力为主,本地模型方案更适合离线补充、代码检索和私有环境辅助。配置时需确认版本、模型来源、路径权限、硬件资源与IDE集成方式,并通过量化、上下文控制和缓存策略优化性能。

Amazon Q Developer插件安装全流程:浏览器编辑器扩展市场配置
AI教程 · 2026-07-03

Amazon Q Developer插件安装全流程:浏览器编辑器扩展市场配置

AmazonQDeveloper可在浏览器控制台、VSCode、JetBrains等环境中辅助写代码、解释项目和生成测试。安装前需确认账号权限、编辑器版本与网络环境,配置时重点关注登录授权、工作区信任、数据权限和团队使用规范。