怎么让大模型同时给30个意图节点打分
开篇引言
上一篇把意图树讲清楚了——三级结构(DOMAIN → CATEGORY → TOPIC),三种意图类型(KB / MCP / SYSTEM),IntentNode 的字段含义,数据库存扁平行、Redis 缓存整棵树。意图树在内存中加载好了,leafNodes 列表已经准备就绪。
但准备就绪不等于能直接用。意图树只是一个静态的数据结构,要让它发挥作用,得把叶子节点的信息喂给 LLM,让 LLM 判断用户的问题跟哪个节点最匹配。
带着几个具体的疑问往下看:
- 叶子节点那么多,怎么把每个节点的信息塞进 Prompt?
- Prompt 里怎么告诉 LLM 该按什么规则打分?
- LLM 返回的结果是什么格式?万一格式不对怎么办?
- Temperature 和 TopP 设多少才合适?
说明:本篇 Prompt 模板中的示例(分类节点、输出示例等)统一用电商智能体场景举例,和 Ragent 代码中的
intent-classifier.st会有细节差异,但核心规则和结构完全一致。
用一个直观的场景来感受整个过程。假设电商客服的意图树有 11 个叶子节点,用户问了一句:
跨境包裹清关一般要多久?
系统要做的事情是:把 11 个叶子节点全部序列化成文本,拼进 Prompt 模板,一次 LLM 调用搞定所有节点的打分。LLM 返回一个 JSON 数组,里面是每个匹配节点的 ID 和分数。分数最高的那个——清关流程,score=0.92——就是路由目标。
这篇文章要把从叶子节点序列化到 JSON 解析的完整链路走一遍。