函数调用基础
- 函数调用(Function Calling)是大模型的核心能力,允许模型识别用户意图并将其转化为结构化函数调用。通过这种方式,模型可以与外部系统交互,执行数据查询、API调用、工具使用等操作,并将结果整合到对话中。 函数调用使大模型能够实时获取业务系统数据,弥补知识时效性限制,提供更精准、实时的回答,显著增强模型在专业领域的应用价值。
- 核心优势:将非结构化自然语言转换为结构化参数,实现人机交互到系统操作的无缝衔接,大幅提升业务流程自动化水平。
业务场景描述
- 通过自然语言告诉大模型:帮我帮我查询小明同学的数据成绩,那么大模型自动回调具体的 PIG AI 代码实现联动查询数据或api 返回具体的成绩
开发自己的函数
定义接收字段
当用户在前端输入自然语言查询(如”小明成绩是多少?“)时,我们需要将这种非结构化的查询转换为后端可处理的结构化JSON数据。 为此,我们需要定义一个接收实体类,用于接收大模型解析后的结构化参数:
定义函数
增加函数提示词
- 在
pigx-knowledge/src/main/resources/prompts
目录下创建MathScoreFunctionCalling.st
文件
文件名需与上面定义的类名保持一致,PIG AI 会自动发现并加载该函数
测试使用
在前端的 AI 联动界面中,您可以使用自然语言进行各种提问,例如”查询小明的数学成绩”、“小明这次考试考得怎么样”或”告诉我小明的成绩”等。系统会自动理解您的意图,调用相应的函数,并准确返回小明的数学成绩。这展示了大模型如何通过函数调用与业务系统无缝集成,将自然语言转化为结构化操作,提升用户交互体验。
业务使用
函数调用(Function Calling)是连接大模型能力与业务系统的关键桥梁。通过将业务功能封装为标准化接口,实现自然语言到结构化操作的智能转换,让AI真正成为业务增长的智能引擎。
行业应用案例
教育场景:智能成绩分析
- 业务场景:家长询问”小明最近三次数学考试的平均分是多少?”
- 函数角色:成绩分析函数自动解析时间范围、学科类型、统计维度
- 实现方式:
ScoreAnalysisFunction
对接学校考试系统,动态计算指定维度的学习趋势 - 业务价值:减少教师30%的重复查询工作,提升家长服务响应速度至秒级
电商场景:订单状态追踪
- 业务场景:用户提问”我昨天买的手机发货了吗?订单号23456”
- 函数角色:
OrderQueryFunction
自动提取订单号,对接ERP系统实时查询 - 实现方式:通过JWT token验证用户身份,确保订单数据隔离
- 业务价值:降低客服中心50%的常规查询量,提升用户自助服务率
医疗场景:检查报告解读
- 业务场景:患者询问”上周三做的血常规报告有什么异常指标?”
- 函数角色:
MedicalReportFunction
对接HIS系统,智能标记异常数据 - 实现方式:结合医学知识图谱进行指标关联分析
- 业务价值:缩短患者报告解读等待时间从2天到实时响应
最佳实践
🔹 精准功能定义:每个函数应聚焦单一业务场景,如PaymentStatusFunction
只处理支付状态查询
🔹 安全隔离:通过Spring Security实现函数级权限控制,敏感操作强制二次验证
🔹 性能优化:对高频函数(如订单查询)采用Redis缓存+批量查询策略
🔹 监控体系:通过Prometheus监控函数调用耗时、成功率等关键指标
重要安全规范:所有业务函数必须实现权限校验方法 checkParams()
,因为大模型返回的数据不一定稳定!
📌 核心要义:函数调用不是简单的API封装,而是构建以业务目标为导向的智能决策中枢,通过持续的场景挖掘和效果反馈,实现AI能力的螺旋式进化