Skip to content

获取 Gemini LLM 响应的已完成任务

GET /v3/ai_optimization/gemini/llm_responses/tasks_ready

本接口使用 GET 方法,路径为:

GET https://api.seermartech.cn/v3/ai_optimization/gemini/llm_responses/tasks_ready

用于获取尚未领取结果的已完成任务列表。

当您使用标准任务提交方式且未设置 postback_url 时,可通过本接口获取所有已完成任务的 id,再调用对应的任务结果获取接口领取任务结果。

处理说明

  • 标准方式提交的任务最长可能需要 72 小时完成。
  • 如果任务在 72 小时未完成,将被标记为失败,预扣费用会退还。
  • 如果账户余额为负,即使任务已经成功完成,也无法获取任务结果。
  • 已完成任务队列可能存在短暂延迟,处理大量任务时明显。
  • 每个任务在成功领取前都会保留在列表中。
  • 每分钟最多调用本接口 20 次
  • 每次调用最多返回过去 3 天完成的 1000 个任务
  • 已经领取的任务不会再次返回。
  • 任务完成 3 天仍未领取时,将从列表中移除。
  • 如果任务设置了 postback_url,正常不会出现在本列表中。当向您的服务器发送回调失败,且服务器返回的 HTTP 状态码小于 200 或大于 300 时,任务才可能出现在列表中。
  • 如果系统每分钟需要领取 1000 个任务,建议优使用回调通知机制,并通过本接口补查询回调失败的任务。

计费

获取已完成任务列表不收取费用。

扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

请求

请求方式

http
GET /v3/ai_optimization/gemini/llm_responses/tasks_ready

请求头

http
Authorization: Bearer smt_live_YOUR_KEY
Content-Type: application/json

本接口无需请求参数,也无需请求体。

响应结构

服务端返回 JSON 数据 tasks 数组任务集合及已完成任务信息。

顶层字段

字段类型说明
versionstring当前 API 版本
status_codeinteger通用响应状态码。完整错误码请参考错误码文档
status_messagestring通用状态说明
timestring请求执行耗时,单位为秒
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务集合数量
tasks_errorintegertasks 数组中返回错误的任务集合数量
tasksarray任务集合数组

tasks 数组字段

字段类型说明
idstring任务集合标识,UUID 格式
status_codeinteger任务集合状态码,通常在 1000060000 范围
status_messagestring任务集合状态说明
timestring任务集合处理耗时,单位为秒
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的数量
patharray请求路径信息
dataobject请求中传递的参数
resultarray已完成任务列表

tasks[].data 字段

字段类型说明
apistringAPI 模块名称,通常为 ai_optimization
functionstring功能名称,通常为 llm_responses
sestring使用的模型或搜索引擎标识,Gemini 任务为 gemini

tasks[].result 字段

字段类型说明
idstring已完成任务的唯一标识,UUID 格式
sestring创建任务时指定的 LLM 模型
functionstring任务类型
date_postedstring任务提交时间,使用 UTC 格式
tagstring用户自定义任务标识
endpointstring获取该任务结果的 URL,可使用此地址继续领取结果

响应示例

json
{
  "version": "0.1.20250526",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.1220 sec.",
  "cost": 0,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "6f2c4d8e-7c2c-4cfb-9a4a-0f6a4e3f8c10",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "0.0010 sec.",
      "cost": 0,
      "result_count": 1,
      "path": [
        "v3",
        "ai_optimization",
        "gemini",
        "llm_responses",
        "tasks_ready"
      ],
      "data": {
        "api": "ai_optimization",
        "function": "llm_responses",
        "se": "gemini"
      },
      "result": [
        {
          "id": "4a1e1b12-9db5-4fd6-8d1a-9d3b6f7c2e11",
          "se": "gemini",
          "function": "llm_responses",
          "date_posted": "2025-05-26 08:15:30 +00:00",
          "tag": "seo-report-001",
          "endpoint": "https://api.seermartech.cn/v3/ai_optimization/gemini/llm_responses/task_get"
        }
      ]
    }
  ]
}

调用示例

cURL

bash
curl --location --request GET \
  "https://api.seermartech.cn/v3/ai_optimization/gemini/llm_responses/tasks_ready" \
  --header "Authorization: Bearer smt_live_YOUR_KEY" \
  --header "Content-Type: application/json"

Python

python
import requests

url = "https://api.seermartech.cn/v3/ai_optimization/gemini/llm_responses/tasks_ready"

headers = {
    "Authorization": "Bearer smt_live_YOUR_KEY",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)
response.raise_for_status()

data = response.json()

if data.get("status_code") == 20000:
    for task_group in data.get("tasks", []):
        for task in task_group.get("result", []):
            print(f"已完成任务:{task.get('id')}")
            print(f"结果地址:{task.get('endpoint')}")
else:
    print(
        f"请求失败,状态码:{data.get('status_code')},"
        f"消息:{data.get('status_message')}"
    )

TypeScript

typescript
import axios from "axios";

async function getReadyTasks() {
  const response = await axios.get(
    "https://api.seermartech.cn/v3/ai_optimization/gemini/llm_responses/tasks_ready",
    {
      headers: {
        Authorization: "Bearer smt_live_YOUR_KEY",
        "Content-Type": "application/json",
      },
    }
  );

  const data = response.data;

  if (data.status_code !== 20000) {
    throw new Error(
      `请求失败,状态码:${data.status_code},消息:${data.status_message}`
    );
  }

  for (const taskGroup of data.tasks ?? []) {
    for (const task of taskGroup.result ?? []) {
      console.log(`已完成任务:${task.id}`);
      console.log(`结果地址:${task.endpoint}`);
    }
  }

  return data;
}

getReadyTasks().catch((error) => {
  console.error("获取已完成任务失败:", error.message);
});

错误处理建议

建议根据以下字段实现异常处理:

  • 检查顶层 status_code 是否为成功状态。
  • 检查 tasks_error,识别返回异常的任务集合。
  • 检查任务集合中的 status_codestatus_message
  • 处理 tasks 为空的,该表示当前没有符合条件的已完成任务。
  • 领取结果前确认 endpoint 不为空。
  • 记录任务 idtag 和错误信息,便于重试和问题追踪。

实用场景

  • 轮询已完成的 Gemini分析任务,及时领取批量生成结果并更新 SEO生产流程。
  • 补偿回调失败的任务,通过查询任务 ID 重新获取未成功推送到业务服务器的结果,数据丢失。
  • 构建任务状态看板,统计已完成、失败和领取任务数量,帮助运营团队掌握批量任务进度。
  • tag 管理业务任务,将已完成结果到项目、客户、页面或报告批次,提升数据归档效率。
  • 控制高并发结果领取节奏,每分钟 20 次调用和单次最多 1000 个任务的限制设计轮询策略,降低请求失败率。

统一入口:官网 · LLM API · 控制台