需定义航班查询函数Schema、对接第三方API、配置调用链路、处理模糊输入、设置超时降级机制。具体包括注册函数并声明参数,桥接VariFlight等API,校验参数并回传结果,映射机场三字码与标准化时间,超时返回错误提示且禁止虚构信息。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望使用千问的Function Calling功能构建一个能查询实时航班信息的智能助手,则需要将自然语言请求映射为结构化函数调用,并对接支持航班数据的第三方API。以下是实现该功能的具体步骤:
一、定义航班查询函数Schema
Function Calling依赖预定义的函数描述,模型需理解何时及如何调用航班查询函数。该函数应明确接收出发地、目的地、日期等必要参数,并声明返回字段含义。
1、在系统提示词中注册函数,包含name、description、parameters三个字段。
2、parameters中指定flight_number(字符串,可选)、departure_airport(字符串,必填)、arrival_airport(字符串,必填)、flight_date(字符串,格式YYYY-MM-DD,必填)。
3、确保description明确说明该函数用于获取指定航段与日期的实时起飞/到达状态、计划与实际时间、登机口及延误原因等。
二、接入符合要求的航班数据API
千问本身不提供航班数据,必须通过后端服务桥接外部API,将模型生成的函数调用参数转发至真实数据源并解析响应。
1、选择支持RESTful接口且含实时字段的API服务商,例如VariFlight开放平台或Cirium FlightStats(需申请API Key)。
2、在后端编写路由接口,接收千问传入的JSON参数,构造对应HTTP请求(如GET /flights?dep=PEK&arr=SHA&date=2024-06-15)。
3、对API返回的JSON进行清洗,提取status、scheduled_departure、actual_departure、gate、delay_reason等关键字段,封装为统一结构返回给千问。
三、配置Function Calling调用链路
需确保用户提问触发函数调用后,模型能正确解析返回结果并生成自然语言回复,整个过程需闭环控制,避免未调用或调用失败时静默处理。
1、向千问发送用户输入(如“查一下今天CA123从北京到上海的航班”)及已注册的函数Schema。
2、捕获模型输出中的function_call字段,提取name和arguments,验证参数完整性(如缺失flight_date则补默认值为当日)。
3、将校验后的参数传入后端航班查询接口,获取结构化响应,并以tool_response形式回传给千问继续推理。
四、处理多意图与模糊输入
用户可能使用非标准表述(如“首都机场飞虹桥的现在几点起飞”),需增强参数抽取鲁棒性,避免因命名不一致导致调用失败。
1、在前置NLU模块中引入机场三字码映射表,将“首都机场”→“PEK”,“虹桥”→“SHA”,“浦东”→“PVG”。
2、对时间表达式做标准化,识别“现在”“今天”“明天”并转换为YYYY-MM-DD格式;若未提日期,默认取当前日。
3、当用户仅提供航班号(如“MU5103”)时,主动调用航班号解析函数反查起降机场与日期,再发起主查询。
五、设置超时与降级响应机制
外部API可能存在延迟或不可用,必须保障助手在函数调用异常时仍能给出确定性反馈,而非中断对话流。
1、为后端航班请求设置5秒超时,超时后返回{error: "data_unavailable", message: "实时数据暂不可用"}。
2、在千问的system prompt中明确指令:“若收到tool_response含error字段,必须直接告知用户数据不可用,不得虚构信息”。
3、对空响应或字段缺失(如actual_departure为空)的情况,统一表述为该航班尚未更新实时状态,请稍后重试。


















