不支持函数调用的大语言模型解决技巧
一、这是什么概念解释当使用不支持原生函数调用的大语言模型时如 Moonshot、某些开源模型无法像 GPT-4 那样使用bind_tools()和tool_calls。解决方案通过精心设计的 Prompt让模型以JSON 格式输出工具调用指令然后手动解析并执行工具。核心思想不依赖模型的原生函数调用能力让模型输出结构化的 JSON{name: 工具名, arguments: {参数}}手动解析 JSON 并执行对应的工具二、有什么用应用场景场景说明使用国产模型Moonshot、智谱、通义千问等早期版本不支持原生函数调用使用开源模型Llama、Qwen 等开源模型部署时降低成本某些支持函数调用的模型价格较高用便宜模型替代统一接口让不同能力的模型都能使用工具调用功能灵活控制完全控制工具调用的解析和执行流程三、完整示例代码#!/usr/bin/env python # -*- coding: utf-8 -*- import json import os from typing import Type, Any, TypedDict, Dict, Optional import requests from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableConfig, RunnablePassthrough from langchain_core.tools import BaseTool, render_text_description_and_args from langchain_openai import ChatOpenAI from pydantic import Field, BaseModel import dotenv dotenv.load_dotenv() # 第一步定义工具与原生方式相同 class WeatherArgsSchema(BaseModel): city: str Field(description需要查询天气的城市例如北京) class WeatherTool(BaseTool): 查询指定城市的天气预报 name: str weather_query description: str 当你需要查询天气信息时使用此工具 args_schema: Type[BaseModel] WeatherArgsSchema def _run(self, city: str) - str: # 实际调用天气 API return f{city}今天晴天温度 25°C # 第二步创建工具字典和执行函数 weather_tool WeatherTool() tool_dict {weather_tool.name: weather_tool} tools [weather_tool] # 定义工具调用请求的类型 class ToolCallRequest(TypedDict): name: str arguments: Dict[str, Any] # 定义工具执行函数 def invoke_tool( tool_call_request: ToolCallRequest, config: Optional[RunnableConfig] None, ) - str: 执行工具调用 name tool_call_request[name] requested_tool tool_dict.get(name) return requested_tool.invoke(tool_call_request.get(arguments), configconfig) # 第三步构建 Prompt关键 # 将工具列表渲染成文本描述 rendered_tools render_text_description_and_args(tools) system_prompt f你是一个聊天机器人可以访问以下工具。 以下是每个工具的名称和描述 {rendered_tools} 根据用户输入返回要使用的工具的名称和输入。 将您的响应作为具有name和arguments键的JSON块返回。 arguments应该是一个字典其中键对应于参数名称值对应于请求的值。 prompt ChatPromptTemplate.from_messages([ (system, system_prompt), (human, {query}) ]) # 第四步创建执行链 # 使用不支持函数调用的模型 llm ChatOpenAI(modelmoonshot-v1-8k, temperature0) # 链路Prompt - LLM - 解析JSON - 执行工具 chain ( prompt | llm | JsonOutputParser() # 关键解析模型输出的 JSON | RunnablePassthrough.assign(outputinvoke_tool) # 执行工具并将结果赋值给 output ) # 第五步调用 result chain.invoke({query: 北京今天天气怎么样}) print(result) # 输出类似 # { # name: weather_query, # arguments: {city: 北京}, # output: 北京今天晴天温度 25°C # }四、流程对比图┌─────────────────────────────────────────────────────────────────────────┐ │ 原生函数调用 VS Prompt Engineering 方式对比 │ └─────────────────────────────────────────────────────────────────────────┘ 原生支持函数调用 (GPT-4) 用户提问 LLM 应用层 │ │ │ ▼ ▼ │ 北京天气 ──────────▶│ 返回 tool_calls │ │ │ (结构化对象) │ │ │ [{name: weather, │ │ │ args: {...}}] │ │◀──────────────────│ │ │ │ │ │ 解析 tool_calls │ │ │ │ │ ▼ │ │ 调用工具 ──────────────────────────────────────▶│ │ │ │◀─────────────────────────────────────────│ 工具返回 │ │ ▼ │ │ 构造 ToolMessage ──────▶│ 生成最终回答 │ │ │ │ │◀──────────────────│ │ 最终回答 │ 不支持函数调用 (Moonshot) 用户提问 LLM 应用层 │ │ │ ▼ ▼ │ 北京天气 ──────────▶│ 返回文本 │ │ │ (JSON字符串) │ │ │ {name: weather│ │ │ arguments: {...│ │ │ }} │ │◀──────────────────│ │ │ │ │ ▼ │ │ JsonOutputParser │ │ (解析 JSON) │ │ │ │ │ ▼ │ │ invoke_tool() ────────────────────────────────▶│ (手动执行工具) │ │ │ │◀─────────────────────────────────────────│ 工具返回 │ │ │ ▼ ▼ ▼ 返回完整结果 │ {name, arguments, output} │ ┌─────────────────────────────────────────────────────────────────────────┐ │ 核心差异 │ └─────────────────────────────────────────────────────────────────────────┘ 原生方式 Prompt Engineering 方式 - LLM 返回结构化对象 - LLM 返回 JSON 文本 - 自动解析 tool_calls - 手动用 JsonOutputParser 解析 - 使用 ToolMessage 反馈 - 直接将结果附加到输出 - 模型内置支持 - 完全靠 Prompt 设计学习资源推荐如果你想更深入地学习大模型以下是一些非常有价值的学习资源这些资源将帮助你从不同角度学习大模型提升你的实践能力。一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取四、AI大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。

相关新闻

直播回顾 | 从编制说明看标准质量——如何编写一份规范、严谨的编制说明

直播回顾 | 从编制说明看标准质量——如何编写一份规范、严谨的编制说明

直播回顾2026年3月5日下午14:30,标准通推出了新一期标准通大讲堂——“从编制说明看标准质量——如何编写一份规范、严谨的编制说明”,提高您标准的整体质量!本次直播以线上直播的形式与广大用户见面。通过编辑器的实操演示,帮助用…

2026/7/5 22:45:37 阅读更多 →
宝东站计算机联锁工程设计

宝东站计算机联锁工程设计

宝东站计算机联锁工程设计 本设计以宝鸡东站(一等编组站,陇海/宝成/宝中干线交汇)为工程对象,遵循TB/T 3027-2015、TB 10007、EN 50126/50128/50129等标准,采用二乘二取二(22取2)安全冗余架构&a…

2026/7/7 4:54:12 阅读更多 →
绿色测试新范式:代码静态分析在软件碳足迹监测中的应用

绿色测试新范式:代码静态分析在软件碳足迹监测中的应用

1. 软件测试的碳中和使命 随着全球数字产业能耗占比突破9%(国际能源署2025报告),软件系统已成为隐形"碳排放大户"。传统测试关注功能与性能,却忽视代码级能耗特征——单次API调用可能产生0.2gCO2e,而冗余循…

2026/7/2 22:49:36 阅读更多 →

最新新闻

华硕笔记本性能控制革命:G-Helper轻量级工具完全指南

华硕笔记本性能控制革命:G-Helper轻量级工具完全指南

华硕笔记本性能控制革命:G-Helper轻量级工具完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…

2026/7/7 14:46:59 阅读更多 →
allure的安装及配置

allure的安装及配置

allure是一款轻量级并且非常灵活的开源 测试报告框架。 它支持绝大多数测试框架,它简单易用,易于集成。 一、allure的下载 -下载网址(allure官网):Allure Report — Open-source HTML test automation report tool …

2026/7/7 14:44:58 阅读更多 →
MAX9744与TM4C123GH6PZ音频系统设计与优化

MAX9744与TM4C123GH6PZ音频系统设计与优化

1. 为什么选择MAX9744和TM4C123GH6PZ组合 在音频功率增强方案中,MAX9744 D类音频功率放大器与TM4C123GH6PZ微控制器的组合堪称黄金搭档。这套方案特别适合需要兼顾高音质和小型化的应用场景,比如便携式音响系统、车载音频升级、智能家居中控等。 MAX974…

2026/7/7 14:42:58 阅读更多 →
13DOF传感器与PIC18F97J94实现高精度定位导航方案

13DOF传感器与PIC18F97J94实现高精度定位导航方案

1. 项目背景与核心需求在嵌入式系统开发领域,精确的定位与导航能力正成为各类智能设备的基础需求。传统GPS定位在室内或复杂环境中往往表现不佳,而单纯依赖惯性测量单元(IMU)又存在累积误差问题。这正是13DOF传感器与PIC18F97J94微控制器组合方案的价值所…

2026/7/7 14:42:58 阅读更多 →
写一个自己的操作系统,用哪台手机?

写一个自己的操作系统,用哪台手机?

为裸机 OS 开发,该买哪台手机当目标机做裸机 OS 目标机的手机选择(2025–2026)靳若琦 Ruoqi Jin(独立研究员) 选题整理 本文为 AI 聚合搜索调研报告太长不看拿来做首发 bring-up 的主力机,建议直接在二手市…

2026/7/7 14:42:58 阅读更多 →
3步轻松搞定系统启动盘:Balena Etcher完整使用指南

3步轻松搞定系统启动盘:Balena Etcher完整使用指南

3步轻松搞定系统启动盘:Balena Etcher完整使用指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾因制作系统启动盘而感到困惑?…

2026/7/7 14:38:57 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻