易源合一实测能识别哪些意图:8 类 intent 编码逐一验证
# 易源合一实测能识别哪些意图:8 类 intent 编码逐一验证
> 接入点:3054-2 意图分析 | 请求方式:POST(文档同时标注支持 GET) | 返回格式:JSON | 计费:5.5 厘/次,失败不扣费 | 最后实测核对:2026-09-15
## 核心要点
- 官方文档只给了一个 `weather` 的示例,没给完整意图清单。这篇用 15 条真实中文语句跑了 3054-2,把识别出来的 `intent` 编码整理成表。
- 实测覆盖到 8 类:`weather`、`query_express`、`oral_correct`、`traffic_control`、`query_news`、`joke`、`ocr_idcard`、`ocr_handwrite`。
- **这是实测样本,不是官方全量清单。** 上生产前请用你自己的语料跑一遍,别把我这张表当契约。
## 为什么先跑意图分析,而不是直接调智能对话
假设你在做客服机器人。用户发来一句话,你得先知道这句话归不归你能处理的范围。归,就走业务流程;不归,就走「没听懂」兜底。
3054-2 干的就是这一步,它只判意图、不执行,返回 `intent` 编码和 `confidence` 置信度,你拿这两个值就能做分流。它和 3054-1 的搭配方式单独写了篇 → [易源合一 3054-2 与 3054-1 的搭配方式:先判意图,再决定要不要发起对话](https://www.showapi.com/guides/united-api-intent-precheck-3054)。
## 怎么探:一次请求一条语料
```bash
curl -X POST "https://route.showapi.com/3054-2?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
--data-urlencode "text=帮我查快递 7788990011223"
```
```python
import requests
APP_KEY = "YOUR_APPKEY"
URL = f"https://route.showapi.com/3054-2?appKey={APP_KEY}"
def detect(text, timeout=20):
r = requests.post(URL, data={"text": text}, timeout=timeout)
r.raise_for_status()
body = r.json().get("showapi_res_body", {})
if body.get("ret_code") != 0:
return {"ok": False, "reason": body.get("ret_msg")}
return {"ok": True, "intent": body.get("intent"), "name": body.get("name"),
"args": body.get("args"), "confidence": body.get("confidence")}
for q in ["今天有什么新闻", "讲个笑话", "北京限行尾号是多少"]:
print(q, "->", detect(q))
```
```javascript
const APP_KEY = "YOUR_APPKEY";
const detect = async (text) => {
const res = await fetch(`https://route.showapi.com/3054-2?appKey=${APP_KEY}`, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ text }),
});
const body = (await res.json()).showapi_res_body || {};
if (body.ret_code !== 0) return { ok: false, reason: body.ret_msg };
return { ok: true, intent: body.intent, args: body.args, confidence: body.confidence };
};
```
## 实测结果表(2026-09-15,单次调用)
| 输入语句 | `intent` | `name`(中文) | `args` | `confidence` |
|---------|----------|--------------|--------|-------------|
| 昆明今天天气怎么样 | `weather` | 天气 | `{area: 昆明, date: 2026-09-15}` | 100 |
| 上海明天冷不冷 | `weather` | 天气 | `{area: 上海, date: 2026-09-16}` | 95 |
| 帮我查快递 7788990011223 | `query_express` | 快递 | `{express_nu: 7788990011223}` | 98 |
| 顺丰快递单号 SF1234567890 到哪了 | `query_express` | 快递 | `{express_nu: SF1234567890, phone_4: ""}` | 98 |
| 北京限行尾号是多少 | `traffic_control` | 车牌限行 | `{area: 北京}` | 98 |
| 今天有什么新闻 | `query_news` | 新闻查询 | `{prime_word: ""}` | 95 |
| 讲个笑话 | `joke` | 笑话 | `{}` | 99 |
| 12乘以8等于多少 | `oral_correct` | 口算批改 | `{}` | 92 |
| 1+1=? | `oral_correct` | 口算批改 | `{}` | 95 |
| 计算 3的平方加4的平方 | `oral_correct` | 口算批改 | `{}` | 42 |
| 身份证 530102199001011234 的归属地 | `ocr_idcard` | OCR身份证识别 | `{}` | 95 |
| 这个图片里是什么 https://test.xxxxx.com/abc.jpg | `ocr_handwrite` | 手写体识别 | `{}` | 95 |
| 帮我把这句话翻译成英文 | 无 | 无 | 无 | 无(`ret_code: -1`) |
几个值得注意的地方:
- **`args` 是「能抽出来才给」,不是固定三个字段。** 天气给 `area` 和 `date`,快递给 `express_nu`,问新闻时 `prime_word` 是空串,笑话和 OCR 类是空对象。你的代码要按 key 是否存在做判断。
- **`args.date` 实测返回标准化日期。** `今天` 变成 `2026-09-15`,`明天` 变成 `2026-09-16`。官方文档的返回示例里写的是 `"今天,后天"` 这种相对词,和实测不一致,按实测的标准化格式解析。
- **`confidence` 实测是 0~100 整数。** 文档示例为 `0.99572587013245`,实测拿到的都是整数(100/98/95/92/42)。写成 `if confidence > 0.8` 这种判断永远不会命中,用 `> 80`。
- **翻译类请求没有对应的 `intent`。** 实测两次翻译请求都返回 `ret_code: -1`,没有 `intent` 字段。
## 别把这张表当契约:两条实测的稳定性事实
**高信息量语句稳定。** 同一时段重复调用 6 次:「北京限行尾号是多少」6/6 命中 `traffic_control`,「讲个笑话」6/6 命中 `joke`,「帮我查找一下昆明今天的天气」6/6 命中 `weather`。意图编码没变过。
**低信息量语句不稳定。** 对「你好」重复调用 6 次,实测拿到 6 组不同结果:`joke`(65)、`draw`(55)、`text_summarize`(65)、`joke`(52)、`text_summarize`(52)、`joke`(50)。同一句话,意图和置信度都在变。
**置信度本身也会波动。** 同一句「北京限行尾号是多少」连续 6 次,`confidence` 出现 90、95、98 三种取值,`intent` 始终是 `traffic_control`。如果你打算把置信度写进日志做监控,把阈值设成区间,别设成等值。
这两条合起来给出一个实用结论:**意图分层用,别当硬契约。** 业务关键路径上,对你自己的核心句式做一轮回归测试;对寒暄、模糊表达的输入,直接走兜底分支更省事。
## FAQ
**Q1:`intent` 编码一共支持多少种?**
官方文档没有公布枚举清单,只给了 `weather` 一个示例。本文列出的 8 类来自 2026-09-15 的实测样本,覆盖不到全量。想知道你自己的场景支持不支持,只能拿真实语料去跑 3054-2。
**Q2:3054-2 和 3054-1 的 `intent` 字段格式一样吗?**
不一样。3054-2 的 `intent` 是字符串(如 `"weather"`),`name` 和 `confidence` 是同级字段;3054-1 的 `intent` 是对象,形如 `{"name": "weather", "args": {...}}`,且不返回 `confidence`。
**Q3:3054-2 支持 GET 请求吗?**
支持。官方文档的请求方式标注为 POST/GET,实测 GET 也返回正常结果。3054-1 和 3054-3 的文档只标了 POST,虽然实测 GET 也能返回 200,但按文档用 POST 更稳妥。
**Q4:置信度多少算可用?**
官方没有给阈值。实测的分布是:明确语句 92~100,短句寒暄 42~65 且意图会跳变。如果你的场景要求准确,把「意图正确」定义在 90 以上更接近实测的安全区;低于这个区间建议走二次追问。具体阈值设定见 [易源合一只返回 55 分置信度时:阈值设定、兜底路径与二次追问](https://www.showapi.com/guides/united-api-low-confidence-3054)。
**Q5:识别失败会扣费吗?**
不会。实测 `ret_code: -1` 时 `showapi_fee_num` 为 0。
## 下一步阅读
- [易源合一 3054-2 与 3054-1 的搭配方式:先判意图,再决定要不要发起对话](https://www.showapi.com/guides/united-api-intent-precheck-3054)
- [易源合一只返回 55 分置信度时:阈值设定、兜底路径与二次追问](https://www.showapi.com/guides/united-api-low-confidence-3054)
- [易源合一返回三层结构:reply_msg / intent / result 逐层拆解](https://www.showapi.com/guides/united-api-response-structure-3054)
- **本系列共 12 篇**:查看[易源合一指南总目录](https://www.showapi.com/guides/united-api-guides-3054)