龙虾出行
·龙虾出行技术团队·API 设计 / AI Agent / 语义化 / 最佳实践

语义化 API 设计:让大模型秒懂你的接口

传统 REST API 的参数名是给开发者看的,但 AI Agent 需要能「读懂」接口的语义。本文分享如何设计 Agent 友好的 API:参数命名、错误提示、响应摘要、HATEOAS 引导,附真实案例。

当你的 API 用户从「人类开发者」变成「AI Agent」,设计的优先级就完全变了。Agent 不看你的文档(除非你写了 llms.txt),它会从接口的参数名、描述、响应结构里推断怎么用。本文分享我们在构建龙虾出行 Agent API 时的设计原则。

原则一:参数用自然语言,不用内部编码

传统 OTA 的机票搜索要求传 from_code=SHA,开发者得先查机场三字码表。Agent 哪知道 SHA 是上海?语义化 API 应该接受 from=上海,在服务端自动解析成三字码。

// 传统 API(对 Agent 不友好)
{ "from_code": "SHA", "to_code": "SZX", "trip_mode": "domestic" }

// 语义化 API(Agent 直接能用)
{ "from": "上海", "to": "深圳", "date": "2026-08-01" }

把领域知识的复杂度留在服务端。Agent 只需说「上海到深圳」,你帮它处理三字码、行程模式、坐标解析这些细节。

原则二:错误要告诉 Agent 怎么改

传统 API 的错误是给人看的:「参数错误」。Agent 看到这个会懵——哪个参数?怎么改?语义化的错误要带 hint:

{
  "error": {
    "code": "CITY_REQUIRED",
    "message": "city "锦江" 像是品牌名,需要明确城市",
    "hint": "请改用城市名,如「上海」;品牌用 brand 参数"
  }
}

Agent 看到 hint 就知道该怎么修参数,而不是盲目重试或放弃。这把「客服成本」从用户转移到了接口设计——一次设计好,所有 Agent 都受益。

原则三:响应带摘要,Agent 不用自己组织语言

Agent 调完接口后,要把结果告诉用户。如果响应只有结构化字段,Agent 还得消耗 token 自己写一段「东方航空 MU5357,晚上 8 点半出发...」。不如直接在响应里给 summary:

这个 summary 是预先写好的、经过人工优化的自然语言。Agent 直接用,既省 token,又保证表达质量一致。

原则四:用 suggestions 引导下一步(HATEOAS for Agents)

Agent 调完搜索后,接下来该干嘛?翻页?筛选?下单?与其让 Agent 猜,不如在响应里告诉它:

"suggestions": [
  { "action": "next_page", "reason": "还有更多航班(共167条)" },
  { "action": "filter_by_brand", "reason": "可按航司缩小范围" }
]

这是 HATEOAS(超媒体作为应用状态引擎)思想在 Agent 时代的复兴。Agent 不靠硬编码的流程,靠响应里的引导自然推进。

原则五:写一份 llms.txt

llms.txt 是给 AI 爬虫和 Agent 的「使用说明书」,放在站点根目录。它用简洁的 Markdown 列出你的能力、接口、参数、示例。Agent 第一次接触你的服务时,读这份文件就能上手。

这不是替代 OpenAPI 文档——OpenAPI 给开发者用,llms.txt 给 Agent 用。两者面向不同读者,写法完全不同:前者精确详尽,后者简洁直觉。

好的 Agent API 不是「让 AI 能调」,而是「让 AI 想调、会调、调得对」。语义化设计是这一切的起点。

体验 Agent 原生的出行预订

龙虾出行让 AI 助手一键接入机票、酒店、巴士预订