意图&实体ToolCall_Prompt调优

目标:基于商用和开源的强大LLM,在各自项目数据集上进行Prompt调优,目的是得到一个拓展性强、标准化高、效果好的通用PE模版。

  • 意图&实体通用Prompt模版,其中大括号部分为可针对场景需求定制化修改

角色与任务

你作为物流领域专业意图分类与实体提取专家,需精准解析用户对话(单轮/多轮)完成两项核心任务:1. 意图分类:匹配至指定类别;2. 实体提取:捕获预定义实体

可选意图

分类的类别:{输入场景下对应的所有意图类别 }

可选实体

实体的名字:{输入场景下对应的所有需要提取的实体 }

分类类别定义

{场景下对应的每一个意图的定义与规则 }

提取实体名称说明

{场景下对应的每一个需要提取的实体的定义 }

输出格式:

以json格式输出

{\"class\": \"\", \"物品名称\": \[\], \"收件人地址\": \[\], \"寄件人地址\": \[\]}

其中,class对应的值是用户问题的类别,\"物品名称\": \[\]表示提取实体的名称和对应存放实体的列表。

注意: 1. 实体值保持原始文本形态。2. 多轮对话需综合所有上下文判断。3. 禁止扩展预定义类别/实体。{可根据需求针对性的进行补充 }

  • ToolCall通用PE模版

角色与任务

你是一个智能工具调用助手,负责分析用户请求,并从给定的工具列表中选择最合适的工具来完成任务。你的核心职责是:

  1. 工具匹配 :理解用户需求,匹配到最相关的工具。

  2. 参数提取 :根据工具的定义,从用户输入中精确提取所需的参数。

  3. 生成调用 :严格按照指定的JSON格式,生成工具调用请求。

可用工具列表

以下是你可调用的工具定义(以OpenAI Tools标准格式描述,对于意图&实体,则):

{tools_json_array}

工具选择与调用规则

  1. 严格匹配 :只能使用上述列表中提供的工具,不得虚构或修改工具。

  2. 参数要求

  • 仅提取工具`parameters`中定义的参数。

  • 参数值应直接来自用户输入或通过合理推断从上下文获得(如多轮对话中的隐含信息)。

  • 保持参数值的原始文本形态,除非需要进行最基本的规范化(如去除首尾空格)。

  1. 多轮对话 :必须综合所有历史上下文来理解当前请求的完整意图和参数。

  2. 单一调用 :除非特别要求或逻辑上必须,一次只调用一个工具。

  3. 无可用工具 :如果没有任何工具适合处理当前请求,则输出一个空的工具调用列表。

{可根据需求针对性的进行补充 }

输出格式

你必须输出一个纯JSON对象数组,每个对象代表一个工具调用请求,格式如下:

```json

{ "name": "\<选择的工具名称\>", "arguments": { "\<参数1名称\>": "\<参数1值\>", "\<参数2名称\>": "\<参数2值\>" } }

一、丰小帮手

1.1 任务描述

小帮手 目前一级意图可分为丰晓易、丰小帮(销售知识问答)以及闲聊。

1.2 训练方法

训练目标:让模型学会根据多轮改写后用户问题,能够准确识别出相应意图,输出符合OpenAI Function Call格式。

训练方法:基于LLaMA-Factory进行SFT微调。

1.3 数据格式

参考OpenAI FunctionCall 模板,包含用户输入(检索出的微应用列表和多轮改写后用户问题)和工具调用结果。拟使用ShareGPT格式,每一条训练样本是一个json对象,包含一个messages数组。

复制代码
{`
  `"messages":` `[`
    `{`
      `"role":` `"system",`
      `"content":` `"你是物流领域的Expert。\n通过分析历史对话和用户最新输入给出你的回答。\n...(此处粘贴完整System Prompt)"`
    `},`
    `{`
      `"role":` `"user",`
      `"content":` `"酒水行业案例"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"tool_calls":` `[`
        `{` 
          `"id":` `"call_001",`
          `"type":` `"function",`
          `"function":{`
          `"name":` `"丰小帮",`
          `"arguments":` `{}`
          `}`
        `}`
      `]`
    `},`
  `[`
    `{`
        `"type":` `"function",`
        `"function":` `{`
            `"name":` `"丰晓易",`
            `"description":` `"1.咨询/解决月结对账、结算信息、公款相关问题;2.咨询/解决各类付款/回款/返款/委托扣款/预付款/预付客户相关问题;3.咨询/解决发票相关问题;4. 咨询/解决账单相关问题(不包含申请账单);5.用户查询中提到"丰晓易/丰小易"",`
            `"parameters":` `{`
                `"type":` `"object",`
                `"properties":` `{},`
                `"required":` `[]`
            `}`
        `}`
    `},`
    `{`
        `"type":` `"function",`
        `"function":` `{`
            `"name":` `"丰小帮",`
            `"description":` `"1.咨询授信额度相关(提额、不足、冻结)问题;2.咨询客户档案详情页相关问题;3.非「丰晓易」类的所有其他销售类相关意图; 4.财报、股权架构相关问题",`
            `"parameters":` `{`
                `"type":` `"object",`
                `"properties":` `{},`
                `"required":` `[]`
            `}`
        `}`
    `},`
    `{`
        `"type":` `"function",`
        `"function":` `{`
            `"name":` `"闲聊",`
            `"description":` `"1.纯闲聊、无实际业务诉求的用户查询",`
            `"parameters":` `{`
                `"type":` `"object",`
                `"properties":` `{},`
                `"required":` `[]`
            `}`
        `}`
    `}`
`]`
`}`
`

1.4 跑批测试

丰晓易/丰小帮/闲聊3个意图,测试数据438条

|----|---------------|------|--------------------------|
| 序号 | 模型 | 跑批结果 | 结果分析 |
| 1 | qwen3-max | 81% | |
| 2 | deepseek-v3.2 | 77% | |
| 3 | glm-4.7 | 73% | 1. 会出现tool_calls为None的情况 |

  • 小丰智能助手

2.1 数据构造

从考勤和薪税两个场景切入,生成测试数据。输入是多轮改写后的用户问题。

复制代码
{`
    `"messages":` `[`
        `{`
            `"role":` `"user",`
            `"content":` `"我今年有多少加班补休"`
        `},`
        `{`
            `"role":` `"assistant",`
            `"tool_calls":` `[`
                `{`
                    `"id":` `"call_001",`
                    `"type":` `"function",`
                    `"function":` `{`
                        `"name":` `"休假配额",`
                        `"arguments":` `"{\"leave_type\": \"加班补休\", \"quotaStartTime\": \"2025-01-01\",\"quotaEndTime\": \"2025-12-31\"}"`
                    `}`
                `}`
            `]`
        `}`
    `],`
    `"tools":` `[`
        `{`
            `"type":` `"function",`
            `"function":` `{`
                `"name":` `"休假配额",`
                `"description":` `"获取剩余假期天数",`
                `"parameters":` `{`
                    `"type":` `"object",`
                    `"properties":` `{`
                        `"leave_type":` `{`
                            `"type":` `"string",`
                            `"description":` `"假类名称,如加班补休、年假、婚假等"`
                        `},`
                        `"quotaStartTime":` `{`
                            `"type":` `"string",`
                            `"description":` `"查询开始日期"`
                        `},`
                        `"quotaEndTime":` `{`
                            `"type":` `"string",`
                            `"description":` `"查询结束日期"`
                        `}`
                    `}`
                `}`
            `}`
        `}`
    `]`
`}`
`

一级意图分类ToolCall跑批,共260条数据,共10个意图类别,结果如下:

|----|---------------|----------------|
| 序号 | 模型 | 跑批结果 |
| 1 | qwen3-max | 73.46% |
| 2 | deepseek-v3.2 | 74.23% |
| 3 | glm-4.7 | 73.08%(出话格式混乱) |

2.2 模型推理脚本

复制代码
`
`

2.3 实验结果

|----|------|------|------|
| 序号 | pe内容 | 跑批结果 | 结果分析 |
| 1 | | | |
| 2 | | | |

  • 面客智能体

3.1、整体框架

3.1.1、单轮function_call模型流程

3.1.2、多轮function_call模型流程

【智能体多轮function_call模型训练】

3.2、数据构造方法

3.2.1、单轮function_call模型数据构造

采用OpenAI Function Calling格式,只包含一轮的用户输入和工具调用结果。

复制代码
{`
    `"messages":` `[`
        `{`
            `"role":` `"user",`
            `"content":` `"What is the weather in San Francisco?"`
        `},`
        `{`
            `"role":` `"assistant",`
            `"tool_calls":` `[`
                `{`
                    `"id":` `"call_001",`
                    `"type":` `"function",`
                    `"function":` `{`
                        `"name":` `"get_current_weather",`
                        `"arguments":` `"{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"`
                    `}`
                `}`
            `]`
        `}`
    `],`
    `"tools":` `[`
        `{`
            `"type":` `"function",`
            `"function":` `{`
                `"name":` `"get_current_weather",`
                `"description":` `"Get the current weather in a given location",`
                `"parameters":` `{`
                    `"type":` `"object",`
                    `"properties":` `{`
                        `"location":` `{`
                            `"type":` `"string",`
                            `"description":` `"The city and state, e.g. San Francisco, CA"`
                        `},`
                        `"format":` `{`
                            `"type":` `"string",`
                            `"enum":` `[`
                                `"celsius",`
                                `"fahrenheit"`
                            `]`
                        `}`
                    `},`
                    `"required":` `[`
                        `"location"`
                    `]`
                `}`
            `}`
        `}`
    `]`
`}`
`

3.2.2、多轮function_call模型数据构造

采用OpenAI Function Calling格式,包含多轮数据,每一轮包括用户输入、工具调用、工具返回、模型回复4个部分。

复制代码
{`
  `"messages":` `[`
    `{`
      `"role":` `"system",`
      `"content":` `"你是一个专业的旅行助手,可以帮助用户查询天气、预订航班和酒店"`
    `},`
    `{`
      `"role":` `"user",`
      `"content":` `"我想去北京旅游,能告诉我明天的天气怎么样吗?"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"tool_calls":` `[`
        `{`
          `"id":` `"call_weather_001",`
          `"type":` `"function",`
          `"function":` `{`
            `"name":` `"get_weather",`
            `"arguments":` `"{\"location\": \"北京\", \"date\": \"tomorrow\"}"`
          `}`
        `}`
      `]`
    `},`
    `{`
      `"role":` `"tool",`
      `"tool_call_id":` `"call_weather_001",`
      `"content":` `"{\"temperature\": \"18-25°C\", \"condition\": \"晴\", \"humidity\": \"45%\"}"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"content":` `"北京明天天气晴朗,气温18-25度,湿度45%,非常适合旅游!"`
    `},`
    `{`
      `"role":` `"user",`
      `"content":` `"那太好了!请帮我查一下从上海到北京的航班,时间明天上午"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"tool_calls":` `[`
        `{`
          `"id":` `"call_flight_002",`
          `"type":` `"function",`
          `"function":` `{`
            `"name":` `"search_flights",`
            `"arguments":` `"{\"departure\": \"上海\", \"destination\": \"北京\", \"date\": \"tomorrow\", \"time_period\": \"morning\"}"`
          `}`
        `}`
      `]`
    `},`
    `{`
      `"role":` `"tool",` 
      `"tool_call_id":` `"call_flight_002",`
      `"content":` `"[{\"flight\": \"MU5101\", \"departure\": \"08:00\", \"arrival\": \"10:30\", \"price\": 680}, {\"flight\": \"CA1501\", \"departure\": \"09:30\", \"arrival\": \"12:00\", \"price\": 720}]"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"content":` `"找到两个航班选项:MU5101(08:00-10:30,680元)和CA1501(09:30-12:00,720元)。您需要预订哪个?"`
    `},`
    `{`
      `"role":` `"user",` 
      `"content":` `"预订MU5101,另外请帮我找一家王府井附近的酒店"`
    `},`
    `{`
      `"role":` `"assistant",`
      `"tool_calls":` `[`
        `{`
          `"id":` `"call_book_003",`
          `"type":` `"function",`
          `"function":` `{`
            `"name":` `"book_flight",`
            `"arguments":` `"{\"flight_number\": \"MU5101\", \"passenger\": \"用户\"}"`
          `}`
        `},`
        `{`
          `"id":` `"call_hotel_004",` 
          `"type":` `"function",`
          `"function":` `{`
            `"name":` `"search_hotels",`
            `"arguments":` `"{\"location\": \"王府井,北京\", \"check_in\": \"tomorrow\", \"nights\": 3}"`
          `}`
        `}`
      `]`
    `}`
  `],`
  `"tools":` `[`
    `{`
      `"type":` `"function",`
      `"function":` `{`
        `"name":` `"get_weather",`
        `"description":` `"获取指定城市和日期的天气信息",`
        `"parameters":` `{`
          `"type":` `"object",`
          `"properties":` `{`
            `"location":` `{"type":` `"string",` `"description":` `"城市名称"},`
            `"date":` `{"type":` `"string",` `"description":` `"日期"}`
          `},`
          `"required":` `["location",` `"date"]`
        `}`
      `}`
    `},`
    `{`
      `"type":` `"function",`
      `"function":` `{`
        `"name":` `"search_flights",`
        `"description":` `"搜索航班信息",`
        `"parameters":` `{`
          `"type":` `"object",`
          `"properties":` `{`
            `"departure":` `{"type":` `"string",` `"description":` `"出发城市"},`
            `"destination":` `{"type":` `"string",` `"description":` `"目的地城市"},`
            `"date":` `{"type":` `"string",` `"description":` `"出发日期"},`
            `"time_period":` `{"type":` `"string",` `"enum":` `["morning",` `"afternoon",` `"evening"]}`
          `},`
          `"required":` `["departure",` `"destination",` `"date"]`
        `}`
      `}`
    `},`
    `{`
      `"type":` `"function",` 
      `"function":` `{`
        `"name":` `"book_flight",`
        `"description":` `"预订指定航班",`
        `"parameters":` `{`
          `"type":` `"object",`
          `"properties":` `{`
            `"flight_number":` `{"type":` `"string",` `"description":` `"航班号"},`
            `"passenger":` `{"type":` `"string",` `"description":` `"乘客姓名"}`
          `},`
          `"required":` `["flight_number",` `"passenger"]`
        `}`
      `}`
    `},`
    `{`
      `"type":` `"function",`
      `"function":` `{`
        `"name":` `"search_hotels",` 
        `"description":` `"搜索酒店信息",`
        `"parameters":` `{`
          `"type":` `"object",`
          `"properties":` `{`
            `"location":` `{"type":` `"string",` `"description":` `"酒店位置"},`
            `"check_in":` `{"type":` `"string",` `"description":` `"入住日期"},`
            `"nights":` `{"type":` `"integer",` `"description":` `"住宿天数"}`
          `},`
          `"required":` `["location",` `"check_in"]`
        `}`
      `}`
    `}`
  `]`
`}`
`

3.3、训练方法

3.3.1、训练方案选择

采用LLaMA-Factory进行SFT训练,在LLaMA-Factory的ShareGPT格式多轮对话训练中,只有assistant角色的回复内容(gpt角色的value字段)会作为输出被模型学习 ,而user输入(human角色)和工具调用/返回(function_call/observation角色)的内容仅作为上下文输入,不会计算损失。

3.3.2、训练数据转换

因为面客智能体意图绝大部分意图无法获取真实的调用函数工具(除服务查询意图外的其他所有意图),只能输出中间的工具代用结果。因此只能模拟函数工具,将工具调用内容按照固定的模版拼接,作为工具返回结果,如「识别意图是xxx,抽取到以下实体:实体1是xxx,实体2是xxx,实体3是xxx」。

此外,处理多轮Function Calling的ShareGPT格式数据时,需要将原始的OpenAI function call格式转换为LLaMA-Factory的四种角色(human、observation、gpt、function_call)。下面是具体的转换方法和示例。

每一轮包括用户输入、工具调用、工具返回、模型回复4个部分。

用户输入:用户当前轮的输入

工具调用:符合OpenAI function call格式的工具调用结果,函数名对应意图类别,函数入参对应实体抽取结果

工具返回:识别意图是xxx,抽取到以下实体:实体1是xxx,实体2是xxx,实体3是xxx

模型回复:

3.3.3、转换后具体数据实例

3.3.3.1、单轮
复制代码
{`
    `"conversations":` `[`
        `{"from":` `"human",` `"value":` `"收件人是陆工"},`
        `{"from":` `"function_call",` `"value":` `"{\"name\": \"填单\", \"arguments\": {\"收件人姓名\": \"陆工\"}}"},`
        `{"from":` `"observation",` `"value":` `"{\"return\": \"识别意图是填单,抽取到以下实体:收件人姓名是陆工\"}"},`
        `{"from":` `"gpt",` `"value":` `"已联想选择收件人陆工的地址信息:-陆工 13040622233,-上海市上海市松江区九亭镇文亭路56弄23号902室请告诉我要寄递的物品,可拍照识别"}`
    `]`
`}`
`
3.3.3.2、多轮
复制代码
{`
    `"conversations":` `[`
        `{"from":` `"human",` `"value":` `"收件人是陆工"},`
        `{"from":` `"function_call",` `"value":` `"{\"name\": \"填单\", \"arguments\": {\"收件人姓名\": \"陆工\"}}"},`
        `{"from":` `"observation",` `"value":` `"{\"return\": \"识别意图是填单,抽取到以下实体:收件人姓名是陆工\"}"},`
        `{"from":` `"gpt",` `"value":` `"已联想选择收件人陆工的地址信息:-陆工 13040622233,-上海市上海市松江区九亭镇文亭路56弄23号902室请告诉我要寄递的物品,可拍照识别"},`
        `{"from":` `"human",` `"value":` `"托寄物:测量技术报告"},`
        `{"from":` `"function_call",` `"value":` `"{\"name\": \"填单\", \"arguments\": {\"物品名称\": \"测量技术报告\"}}"},`
        `{"from":` `"observation",` `"value":` `"{\"return\": \"识别意图是填单,抽取到以下实体:物品名称是测量技术报告\"}"},`
        `{"from":` `"gpt",` `"value":` `"已记录寄递物品:测量技术报告"}`
    `]`
`}`
`

3.4、模型效果

数据集为C端智能体任务意图识别测试集,数据量为2930条,包含117个意图。

3.4.1、纯PE

|------|--------------|---------|
| PE版本 | 模型 | 意图识别准确率 |
| v1 | qwen3-max | 68.91% |
| v1 | glm-4.7 | 66.76% |
| v1 | deepseek-3.2 | 36.99% |

v1版prompt

复制代码
`
`你是物流领域的Expert。`
`通过分析历史对话和用户最新输入给出你的回答。`
`你只能通过函数调用(tool_call)输出结果,禁止输出任何解释文字或裸 JSON。`

`【工具驱动规则】`
`- 本轮会提供一个或多个 tools。每个 tool 对应一类用户意图的处理工具,tool的 description 中包含该类意图的定义。`
`- 你必须严格遵循 tools 的 description 与 schema,严禁自创类别/字段/取值。`

`【Schema 严格性(强制)】`
`- 每次 tool_call 的 arguments 必须严格匹配该工具的 JSON schema:字段名完全一致、类型正确、遵守 enum。`
`- 禁止输出 schema 未定义字段。`

`【执行策略】`
`- 可以根据需求调用多种工具`

`【多轮理解】`
`- 必须结合历史对话判断当前用户最新输入意图。`
`- 只允许输出 tool_call(可多次,取决于工具数量),不得输出任何额外内容。`

`

3.5数据路径

tool schema路径:

/vepfs/sf_LLM/fy_2026/toolCall/customer_agent/customer_agent_117intent.yaml

  • 丰晓易

4.1 数据构造:

以账单推送为例,输入为用户单轮的要求:

复制代码
{`
`    "messages": [`
`        {`
`            "role": "user",`
`            "content": "帮我推送一下0123456789 6月账单"`
`        },`
`        {`
`            "role": "assistant",`
`            "tool_calls": [`
`                {`
`                    "id": "call_001",`
`                    "type": "function",`
`                    "function": {`
`                        "name": "账单推送",`
`                        "arguments": "{\"account_id\": \"0123456789\", \"credit_period\": \"202506\"}"`
`                    }`
`                }`
`            ]`
`        }`
`    ],`
`    "tools": [`
`        {`
`            "type": "function",`
`            "function": {`
`                "name": "账单推送",`
`                "description": "帮助用户查询"月度结算账号"对应账期的账单,再推送到用户的邮箱,其中"月度结算账号"又称"月结账号"、"月结卡号"。",`
`                "parameters": {`
`                    "type": "object",`
`                    "properties": {`
`                        "account_id": {`
`                            "type": "string",`
`                            "description": "需要查询或者推送的账单月度结算账号id,由10位纯阿拉伯数字组成,例如:"5325108988""`
`                        },`
`                        "credit_period": {`
`                            "type": "string",`
`                            "description": "提取需要查询或者推送的账单的账期,精确到月份,形式例如"202501"、"202502"、"202511",注意用户可能要求多个账期,都提取出来,以顿号连接,例如"202501、202502、202511"。如果用户没有提到年份,默认2025年,没有默认月份。"`
`                        },`
`                    }`
`                }`
`            }`
`        }`
`    ]`
`}`

`

4.2 模型效果

数据集为小易任务意图识别测试集,数据量为67条,包含3个意图。

|------|--------------|---------|
| PE版本 | 模型 | 意图识别准确率 |
| v1 | qwen3-max | 98.51% |
| v1 | glm-4.7 | 89.56% |
| v1 | deepseek-3.2 | 50.75% |

  • 服务中心

5.1 数据样本

路径:

数据中包含了System Prompt

复制代码
`    `{`
        `"conversations":` `[`
            `{`
                `"from":` `"system",`
                `"value":` `"你是物流小助手,名字叫"小丰",可以调用API工具为快递小哥解决"国内/外收寄标准"、"时效运费"、"计提"、"路由"、"保鲜服务"等查询问题,也可以回答一定的物流领域专业知识问题,同时还可以与快递小哥聊天解闷。\n背景信息:默认寄件地:中国广东省河源市,默认寄件时间:2024-10-04 17:55:43。"`
            `},`
            `{`
                `"from":` `"human",`
                `"value":` `"假发河源寄到台湾假发能收吗寄河源市寄到台湾南雄市假发能收吗"`
            `},`
            `{`
                `"from":` `"function_call",`
                `"value":` `"{\"name\": \"国内收寄标准查询\", \"arguments\": {\"question\": \"假发从河源市寄到台湾南雄市的国际收寄标准\"}}"`
            `},`
            `{`
                `"from":` `"observation",`
                `"value":` `"{\"return\": \"默认寄件时间:2024-10-04 17:55:43,默认寄件地址:中国广东省河源市\\n请问要寄什么?\"}"`
            `},`
            `{`
                `"from":` `"gpt",`
                `"value":` `"假发可以寄到台湾,具体收寄条件请查看字幕。"`
            `}`
        `],`
        `"tools":` `"[{\"name\": \"FAQ查询\", \"description\": \"输入顺丰内部相关问题,返回相应的答案\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"顺丰内部相关问题\"}}, \"required\": [\"question\"]}}, {\"name\": \"国内收寄标准查询\", \"description\": \"输入用户"大陆范围内物流收寄标准"相关的问题,返回相应的收寄标准信息\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"用户"大陆范围内物流收寄标准"相关的问题,注意问题中必须同时包含"收件城市"、"托寄物"信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"国际收寄标准查询\", \"description\": \"输入用户"大陆范围外物流收寄标准"相关的问题,返回相应的收寄标准信息\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"用户"大陆范围外物流收寄标准"相关的问题,注意问题中必须同时包含"收件城市"、"托寄物"信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"路由查询\", \"description\": \"输入形如"SF0261396282888"的订单号,返回相应的订单的物流状态,即物品送到哪了\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"输入包含物流订单号的问题,返回物流状态信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"运费查询\", \"description\": \"输入多少公斤物品送到哪个城市,返回需要多少运费\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"物流运费相关问题,必须包含"收件城市"信息,可以不包含重量信息,默认1KG\"}}, \"required\": [\"question\"]}}, {\"name\": \"包装查询\", \"description\": \"输入某个物品如何包装的相关问题,返回该物品包装方式对应的网页连接。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"查询某个物品如何包装的相关问题,注意问题中必须同时包含"物品"信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"时效查询\", \"description\": \"输入寄到哪个城市,返回预计什么时刻前送达\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"物流时效查询相关问题,必须包含"收件城市"信息。\"}}, \"required\": [\"question\"]}}, {\"name\": \"增值服务查询\", \"description\": \"输入一个物品送到具体城市物流增值服务相关问题,返回该增值服务的费用。一般该增值服务为"保价服务"。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"一个物品送到具体城市物流增值服务相关问题,问题中必须同时包含"具体收件城市"和"物品"信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"计提查询\", \"description\": \"输入多少公斤物品送到哪个城市,快递员的计提,即赚多少钱\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"必须包含"收件城市"信息,可以不包含重量信息,默认1KG\"}}, \"required\": [\"question\"]}}, {\"name\": \"保鲜服务查询\", \"description\": \"输入某个物品保鲜相关问题,返回该物品是否有保鲜服务以及保鲜服务你费用\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"必须包含"物品"信息\"}}, \"required\": [\"question\"]}}, {\"name\": \"产品推荐查询\", \"description\": \"输入物流产品推荐相关问题,返回推荐的物流产品列表。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"物流产品推荐相关的问题。\"}}, \"required\": [\"question\"]}}, {\"name\": \"物流订单妥投图片查询\", \"description\": \"输入形如"SF0261396282888"的订单号,要求返回该订单"妥投图片","妥投图片"是指物品派送完成后,快递员发给用户的快递照片。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"包含形如"SF026139628288"订单号的要求查询订单"妥投图片"的相关问题。\"}}, \"required\": [\"question\"]}}, {\"name\": \"物流订单验视图片查询\", \"description\": \"输入形如"SF0261396282888"的订单号,要求返回该订单"验视图片","验视图片"是指物品派送完成后,快递员发给用户的快递照片。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"包含形如"SF026139628288"订单号的要求查询订单"验视图片"的相关问题。\"}}, \"required\": [\"question\"]}}, {\"name\": \"物流录音查询\", \"description\": \"输入请求查询物流录音的相关问题,返回该快递员与用户交流的录音。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"输入请求查询物流录音的相关问题,只需要表达查询物流录音的意图,不需要包含其他信息。\"}}, \"required\": [\"question\"]}}, {\"name\": \"服务分查询\", \"description\": \"输入请求查询物流服务分的相关问题,返回该快递员的服务评分。\", \"parameters\": {\"type\": \"object\", \"properties\": {\"question\": {\"type\": \"string\", \"description\": \"只需要包含物流服务分查询的意图,不需要包含其他信息。\"}}, \"required\": [\"question\"]}}]"`
    `}`
`

5.2 测试方案

  1. 将工具转化为LangGraph的Tool对象;
  2. 调用cerate_agent接口创建工具调用Agent;
  3. 输入样本中的SystemPrompt和用户消息,查看模型输入的工具调用是否正确
  4. 目前仅测试单轮工具调用
  5. 使用领慧GLM4.6 模型

5.2 测试结果

单轮对话,可能会出现调用多个工具,以第一个为准,100个样本,准确率75%。

  • 热线客服意图识别

测试样本825条,目标意图共75个

|--------------|---------|
| 模型 | 意图识别准确率 |
| qwen3-max | 58.58% |
| glm-4.7 | 58.15% |
| deepseek-3.2 | 输出格式有问题 |

七、 sft 实验结果

|--------|-------------------|-----------------------------|----------|
| 模型 | 数据来源与数量 | tool数量 | 训练长度 |
| V1 | 包含三个场景数据,各场景1千条数据 | 随机加载30个热线客服意图+全量意图+全量AI寄件意图 | ≈18000 |
| V2 | 包含三个场景数据,各场景1千条数据 | 三个场景所有意图共103个tools | ≈32000 |

|----|------|---------------|-------------|
| 模型 | 测试场景 | 推理tool数量 | 准确率 |
| V1 | 服务中心 | 16 | 71.9% |
| | | 103 | 13.7% |
| | 热线客服 | 75 | 53% |
| | | 103 | 41.3% |
| V2 | 服务中心 | 16 | 48.2% |
| | | 103(xg+寄件+热线) | 70% |
| | 热线客服 | 75 103 | 69.2% 59.4% |

0130 sft实验

|------|------------------------------|---------|------------------------------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 实验编号 | 模型训练方法 | 工具范围 | 数据集范围 | acc | 细节 |
| 1 | 使用各场景范围内固定工具,不做采样也不做随机 | inscope | 3场景 训练数据: sampled 8k | 0.8458 | fulltool_3场景 【fulltool_3场景】 |
| 2 | 使用各场景范围内工具,随机采样70% | inscope | 3场景 训练数据: sampled 8k | 0.7656 | 70tools |
| 3 | 使用各场景范围内工具,随机采样20~60个工具 | inscope | 3场景 训练数据: sampled 8k | 0.6704 | 20-60tools |
| 4 | 使用各场景对应固定工具,不做采样也不做随机 | inscope | 6场景 训练数据: sampled 16 k | 0.7965 | fulltool_6场景 【fulltool_6场景】 |
| 5 | 使用各场景对应固定工具,不做采样也不做随机 | inscope | 6场景 训练数据: sampled 60 k | 0.8136 | https://fsdocs.sf-express.com/doc/DS2xWSG1Lam9iTGJn 【fulltool_6场景_moredata】 |
| | | | | | |

train_data(sample 8k/16k): /vepfs/sf_LLM/fy_2026/toolcall_data/train_dataset_0201

train_data(sample 60k): /vepfs/sf_LLM/fy_2026/toolcall_data/train_dataset_0202

test_data: /vepfs/sf_LLM/fy_2026/toolcall_data/test_dataset_0201

base_data: /vepfs/sf_LLM/fy_2026/toolcall_data/full

方法说明:

full tool : 每个场景使用自己场景的(inscope)全量工具;

20-60tool :每个场景随机采样20-60个inscope工具;

70%tools :随机采inscope工具的70%

结论:

  1. 随机采样或降采样都无法通过冷启动SFT达到较好的效果,冷启动阶段采取各场景范围内固定工具 训练策略,建立较好的baseline去做强化学习
  2. 准确率:工具数量少 > 工具数量多的场景,工具多的场景天然难度高(工具分的越细,可能存在一二级关系,导致边界模糊,难度上升)
  3. 类别融合后(意图不明、FAQ、其他等)效果有提升

优化方向:

  1. 工具集添加少量outscope,增加分类难度,看是否有提升
  2. 增加更多数据训练
  3. 设计RL的奖励解决错误预测outscope等问题

八、RL奖励函数

使用类别匹配、格式匹配、think长度、outscope惩罚等多维度奖励函数

权重参数设置:

|-------------------------|-----|
| intent_weight | 0.5 |
| format_weight | 0.1 |
| scope_weight | 0.2 |
| length_constrain_weight | 0.2 |

长度奖励函数图像例子,窗口和收敛点可根据需要设置:

  • RL训练结果

|-------|--------|--------------------------------|---------|
| 场景 | 准确率 | baseline(Fengyu-LLM-意图&实体-8B) | 差值 |
| AI寄件 | 95.23% | 94.4% | +0.83% |
| 小哥 | 78.27% | 93.5% | -15.23% |
| 热线客服 | 70.78% | 85.5% | -14.72% |
| 面客智能体 | 49.10% | / | / |
| 智能小丰 | 87.38% | | |
| 丰晓易 | 92.21% | | |

附录:

1. 20260122训练数据cot token数量统计

数据:

/vepfs/01453164/projects/tools_intent/tools_data/train_cot_0119.jsonl

  1. toolcall预测问题记录

【tool_call预测类别混淆分析】

  1. 类别统计

【3场景类别统计】

相关推荐
七老板的blog1 小时前
当 Spring StateMachine 遇见大模型:构建工业级 AI 写作流水线
java·人工智能·spring
一叶知秋dong1 小时前
Stable diffusion 工作原理
人工智能·深度学习·stable diffusion
zhumin7261 小时前
一种基于人类行为—内分泌映射的大语言模型动态情绪系统:从生理数据标定到虚拟激素驱动决策的工程化框架
人工智能·语言模型·自然语言处理
云烟成雨TD2 小时前
Spring AI 1.x 系列【46】MCP Security 模块
java·人工智能·spring
CRMEB系统商城2 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
Samooyou2 小时前
RAG项目案例--02在线检索&过滤流水线
人工智能·python·ai·全文检索·检索
动能小子ohhh2 小时前
DocForge平台的设计与开发--文件上传接口的实现
开发语言·人工智能·python·langchain·ocr·fastapi
朴马丁2 小时前
预制菜的“数字厨房”:PLM如何支撑菜品标准化与供应链高效协同?
大数据·人工智能·食品行业·流程行业plm
小沈同学呀2 小时前
SpringAI+MCPServer实战-StreamableHTTP协议打造企业级AI工具服务
人工智能·微服务架构·springai·mcpserver·javaai·streamablehttp