查询服务调用请求级用量详情
本组接口用于异步导出服务调用明细用量数据,包含两个接口:
| 接口名称 | 接口功能 | 说明 |
|---|---|---|
| CreateServiceLogs | 提交导出任务 | 提交一个服务调用明细导出任务,系统在后台异步生成 CSV |
| DescribeServiceLogs | 查询导出任务状态 | 轮询获取导出任务的状态及下载链接 |
调用流程:调用 CreateServiceLogs 提交导出任务获得 taskId → 轮询调用 DescribeServiceLogs 查询任务状态 → 任务状态为 Success 后,通过返回的 url 下载 CSV 明细文件(链接 24 小时内有效)。
接口一:提交导出任务(CreateServiceLogs)
接口描述
本接口用于提交一个服务调用明细导出任务,系统在后台异步生成 CSV。
鉴权说明
调用本文 API,使用"基于安全认证 AK/SK"进行签名计算鉴权,即使用安全认证中的 Access Key ID 和 Secret Access Key 进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求参数
方法名称,固定值 CreateServiceLogs
查询的日期。支持查询三个月内,且支持一天维度的请求 | "2026-06-25"
过滤条件:特定的推理服务 ID。与 modelName 都为空时,默认导出时间范围内所有的请求 | "svco-tv5txxxza"
过滤条件:模型名称。与 serviceId 都为空时,默认导出时间范围内所有的请求 | "ernie-4.5-turbo"
过滤条件:可传入完整 APIKey 或前缀 | "ALTAK-xxxx"
POST /v2/service?Action=CreateServiceLogs HTTP/1.1
Host: qianfan.baidubce.com
Authorization: authorization string
Content-Type: application/json
{
"dateTime": "2026-06-25",
"serviceId": "svco-tv5t4xxxj3za"
}
示例代码
curl --location 'https://qianfan.baidubce.com/v2/service?Action=CreateServiceLogs' \
--header 'Authorization: bce-auth-v1/047ab241bad24xxx28b1ac/2024-01-10T08:39:09Z/180000/host;x-bce-date/eae9855604cxxxxe03cfcbaff' \
--header 'x-bce-date: 2024-01-10T08:37:40Z' \
--header 'Content-Type: application/json' \
--data '{
"dateTime": "2026-06-25",
"serviceId": "svco-tv5t4xxxj3za",
"modelName": "ernie-4.5-turbo",
"apiKeyId": "ALTAK-xxxx"
}'
返回响应
生成的后台导出任务唯一 ID,用于后续查询状态 | "export-task-20260625-001a"
请求 ID | 1bef3f87-c5b2-4419-936b-50f9884f10d4
{
"taskId": "export-task-20260625-001a",
"requestId": "1bef3f87-c5b2-4419-936b-50f9884f10d4"
}
接口二:查询导出任务状态(DescribeServiceLogs)
接口描述
POST https://qianfan.baidubce.com/v2/service?Action=DescribeServiceLogs
本接口用于轮询获取导出任务的状态及下载链接。
鉴权说明
调用本文 API,使用"基于安全认证 AK/SK"进行签名计算鉴权,即使用安全认证中的 Access Key ID 和 Secret Access Key 进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求结构
POST /v2/service?Action=DescribeServiceLogs HTTP/1.1
Host: qianfan.baidubce.com
Authorization: authorization string
Content-Type: application/json
{
"taskId": "export-task-20260625-001a"
}
请求参数
Query 参数
| 参数名称 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
| Action | string | 必选 | 方法名称,固定值 DescribeServiceLogs |
Body 参数
| 参数名称 | 类型 | 是否必选 | 描述 | 示例 |
|---|---|---|---|---|
| taskId | string | 是 | 提交任务接口返回的 taskId |
"export-task-001a" |
示例代码
curl --location 'https://qianfan.baidubce.com/v2/service?Action=DescribeServiceLogs' \
--header 'Authorization: bce-auth-v1/047ab241bad24xxx28b1ac/2024-01-10T08:39:09Z/180000/host;x-bce-date/eae9855604cxxxxe03cfcbaff' \
--header 'x-bce-date: 2024-01-10T08:37:40Z' \
--header 'Content-Type: application/json' \
--data '{
"taskId": "export-task-20260625-001a"
}'
返回响应
返回参数
| 参数名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| taskId | string | 任务 ID | "export-task-20260625-001a" |
| status | string | 任务状态:Running(进行中)/ Success(成功)/ Failed(失败) |
"Success" |
| url | string | 生成成功后返回的 BOS 下载链接(24 小时内有效) | "https://...csv?..." |
| expirationTime | string | url 链接的失效时间,ISO 8601 格式 | "2026-06-26T11:21:00Z" |
| totalRows | integer | 导出的总记录数 | 15420 |
| reason | string | 失败原因(仅在 Failed 状态下返回) |
"Data size too large..." |
返回示例
场景 A:任务仍在处理中(Running)
{
"taskId": "export-task-001a",
"status": "Running"
}
场景 B:任务处理成功(Success)
{
"taskId": "export-task-20260625-001a",
"status": "Success",
"url": "https://qianfan-export.bj.bcebos.com/exports/20260710/service_logs_202606251121.csv?authorization=bce-auth-v1%2FAK%2F2026-06-25T11%3A21%3A00Z%2F86400%2F...",
"expirationTime": "2026-06-26T11:21:00Z",
"totalRows": 15420
}
场景 C:任务处理失败(Failed)
{
"taskId": "export-task-20260625-001a",
"status": "Failed",
"reason": ""
}
导出 CSV 文件结构与数据排版
任务处理成功后,可通过返回的 url 下载 CSV 明细文件。
| # | 列名 | 口径 | 示例值 |
|---|---|---|---|
| 1 | 请求ID | 平台生成的 asid | as-7f4cxxxx1d3e |
| 2 | X-Request-Id | 客户在 Header 中传入的值,未传时留空 | task-20260810-001-01 |
| 3 | 请求时间 | YYYY-MM-DD HH:mm:ss |
2026-06-25 10:30:15 |
| 4 | 模型名称 | 如 ERNIE-Speed-8K |
ERNIE-Speed-8K |
| 5 | API Key ID | 如 ALTAK-… |
ALTAK-ab12xxx490kl12 |
| 6 | Prompt Tokens | 输入 token 数 | 1024 |
| 7 | Completion Tokens | 输出 token 数 | 512 |
| 8 | Cache Tokens | 命中缓存的 token 数 | 256 |
| 9 | Total Tokens | 合计 | 1536 |
请求 ID(X-Request-Id)说明
X-Request-Id 是客户调用模型服务时在 HTTP Header 中自定义传入的请求 ID 参数:平台从请求 Header 读取该值,在返回响应中原样返回,并原样记入服务调用明细(对应导出 CSV 的「X-Request-Id」列);平台在请求到达时即记录,中断请求同样记录(含已产生的 token)。
注意:明细中的「请求ID」为平台生成的 asid(如
as-7f4c9a8b1d3e),与X-Request-Id相互独立、并存记录,二者不可混淆。
平台校验规则
| 项 | 规则 | 理由 |
|---|---|---|
| 必填性 | 可选。未传则该列留空,平台不自动生成 | 自动生成的值客户不认识,会误认为是自己传的,制造二次混乱 |
| 字符集 | 建议 [A-Za-z0-9._-];禁止逗号、引号、换行;禁止 = 开头 |
逗号、引号会破坏 CSV 列结构;= 开头在 Excel 中会被当作公式执行(CSV 注入风险) |
| 长度 | ≤ 64 字符 | 防止超长撑爆日志与导出文件 |
| 违规处理 | 截断或置空,不阻断业务请求 | 不应因一个日志字段导致业务请求失败 |
| 唯一性 | 平台不校验、不去重、不保证 | 属客户自有命名空间;重复传同一值会产生多行记录,需用户自检 |
| 敏感信息 | 请勿放入敏感词 | 该值会进入日志与导出文件 |
客户使用约束
千帆提供的能力是「你传什么、我原样记什么、并保证中断也记」,但以下三条由客户负责,客户不做则能力无法生效:
| # | 要求 | 不做的后果 |
|---|---|---|
| C1 | 每一次模型调用都要传,而非仅在 Agent 任务入口传一次 | Agent 内层调用到达千帆时不携带该 ID,用量中无法匹配 |
| C2 | ID 建议采用「任务 ID + 步骤序号」格式 | 全部调用共用一个 ID 时多行无法区分,定位不到中断发生在哪一步 |
| C3 | 在请求发出前即记入客户本地台账,不可等响应返回后再记 | 中断时客户侧同样无记录,拿到千帆明细也无从比对,对账依然不成立 |
错误码
若请求错误,服务器将返回的 JSON 文本包含以下参数:
| 名称 | 描述 |
|---|---|
requestId |
请求 ID |
code |
错误码 |
message |
错误描述信息,帮助理解和解决发生的错误 |
例如错误返回:
{
"requestId": "6ba7b810-xxxc04fd430c8",
"code": "AccessDenied",
"message": "Access denied."
}
更多其他错误码,也可以查看错误码说明
评价此篇文章
