
LiteRT-LM Function Calling完全解析如何6步打通从JSON Schema声明到自动执行闭环【免费下载链接】LiteRT-LMLiteRT-LM is Googles production-ready, high-performance, open-source inference framework for deploying Large Language Models on edge devices.项目地址: https://gitcode.com/GitHub_Trending/li/LiteRT-LMLiteRT-LM 是 Google 推出的生产级、高性能、开源的端侧大模型推理框架其Function Calling函数调用/工具调用能力让运行在手机上、嵌入式设备上的大模型也能动手做事声明 JSON Schema 工具、模型自动生成调用、解析执行并回填结果形成完整闭环。本文带你用最短路径理解并跑通 LiteRT-LM 的 Function Calling 全流程。一、什么是 Function Calling端侧大模型的自动执行闭环 普通大模型只会说话而 Function Calling 让模型学会动手当用户提问超出模型自身知识范围比如实时天气、股价时模型不会瞎编而是输出一条结构化的工具调用指令由你的应用真正执行函数再把结果喂回模型最终用自然语言回答用户。LiteRT-LM 中这套机制由三方协作完成参与方职责应用Application声明工具名称/参数/描述、实现并执行真实函数、管理对话循环模型Model决定何时调用工具、生成工具调用串或输出自然语言LiteRT-LM翻译消息格式、执行推理、检测并解析工具调用、维护对话历史整个闭环共 8 步来自官方 Tool Use 文档应用声明工具 → 用户发消息 → 模型输出工具调用串 → LiteRT-LM 检测并解析成 JSON → 应用执行真实函数 → 应用把结果以role: tool消息回填 → 模型基于结果生成回答或继续调用工具 → 循环。二、第一步用 JSON Schema 声明工具声明工具只需在建Conversation时设置Preface对象的tools字段——一个 JSON 数组每个元素就是一个 [JSON Schema] 风格仓库内部约定的函数描述name、description、parameters。以天气工具为例节选自 docs/api/cpp/tool-use.md{ name: get_weather, description: Returns the weather for a given location., parameters: { type: object, properties: { location: { type: string, description: The location to get the weather for. } }, required: [location] } }声明后通过ConversationConfig::Builder().SetPreface(preface)交给会话对象。Python 用户有更省事的写法python/litert_lm/tools.py 提供tool_from_function()直接把普通 Python 函数转成 Tool——它自动读取函数签名和 docstring生成符合规范的 JSON Schema无需手写def get_weather(location: str) - dict: Returns the weather for a given location. ... tool tool_from_function(get_weather) 工具的描述description写得越清晰模型选择工具、填参数就越准确。三、第二步模型如何发起工具调用用户发送 How is the weather in Paris? 后调用conversation-SendMessage(user_message)模型的回复不是普通文本而是一个tool_calls数组{ tool_calls: [ { type: function, function: { name: get_weather, arguments: { location: Paris } } } ] }关键点LiteRT-LM 已经替你把模型输出的原始字符串解析成了结构化 JSON应用层拿到的直接就是函数名 参数对象零正则、零手工切分。四、解析引擎揭秘FormatTools / ToMessage 三大环节声明变提示词、调用串变 JSON、结果变提示词的幕后功臣是每个模型自带的ModelDataProcessor实现位于 runtime/conversation/model_data_processor/覆盖 Gemma、Qwen3、MiniCPM 等模型家族。三个环节一一对应FormatTools把应用声明的 JSON Schema 工具数组格式化成该模型训练时见过的提示词格式注入系统上下文ToMessage把模型生成的工具调用字符串解析成tool_callsJSON。底层由 runtime/components/tool_use/ 的解析器完成支持JSON 函数调用、Python 函数调用、模型专属 FC 方言三种语法fc_parser_utils.h、json_parser_utils.h、python_parser_utils.h并通过 runtime/components/tool_use/antlr/ 下基于 ANTLR 的词法/语法分析器保证解析的健壮性MessageToTemplateInput把工具调用与工具结果格式化回模型模板输入完成上下文闭环。五、第三步执行工具并回填结果闭环完成 ✅执行函数是应用的责任——从tool_calls中取出name与arguments调用本地实现然后以role: tool的消息把结果发回tool_message {role: tool, content: weather_result} model_message conversation.send_message(tool_message)模型收到后会输出自然语言回答The weather in Paris is sunny with a temperature of 72°F...闭环结束。完整可运行的 C 对话循环外层用户循环 内层工具循环见 docs/api/cpp/tool-use.md 的 Tool Calling Loop 一节测试用例可参考 python/litert_lm/tool_test.py。Android/Kotlin 用户还有个福利LiteRT-LM 的 Kotlin API 支持自动工具调用——用注解标注类方法模型生成工具调用后框架自动调用对应方法无需手写执行循环见 docs/api/kotlin/getting_started.md。六、进阶启用约束解码让工具调用语法 100% 合法 模型偶尔会手抖生成残缺的 JSON 吗会。LiteRT-LM 的解决方案是Constrained Decoding约束解码在采样阶段直接屏蔽词表中不合法的 token从生成源头保证语法正确。启用方式只有一行ConversationConfig::Builder builder; builder.SetEnableConstrainedDecoding(true); // 读取工具声明强制合法 FC 语法除了内置的工具调用约束解码还可以接入LLGuidance做自定义约束正则 / JSON Schema / Lark 文法相关实现在 runtime/components/constrained_decoding/完整用法见 docs/api/cpp/constrained-decoding.md。七、常见问题速答Q流式输出Streaming下工具调用还能用吗能。使用SendMessageAsync时文本块照常流式回调一旦检测到工具调用开头LiteRT-LM 会自动等待剩余部分生成完毕、解析完整表达式后将tool_callsJSON 一次性推入回调应用逻辑与同步模式一致。Q哪些模型支持 Function Calling只要模型打包时带有对应的ModelDataProcessor配置即可仓库已内置 Gemma 4、Qwen3、MiniCPM5 等模型族的处理器实现model_data_processor工厂会自动按模型元数据选择。Q声明多个工具时模型会选错吗把description写具体、参数required标全并开启约束解码基本可以杜绝选错工具和参数格式错误。八、参考路径与延伸阅读 资源路径Tool Use 官方指南核心文档docs/api/cpp/tool-use.md约束解码指南docs/api/cpp/constrained-decoding.mdANTLR 解析器生成说明docs/api/cpp/tool-use-antlr.md工具解析器源码runtime/components/tool_use/模型数据处理器runtime/conversation/model_data_processor/Python 工具接口python/litert_lm/tools.pyC 语言 APIc/experimental.h项目总览README.md总结LiteRT-LM 的 Function Calling JSON Schema 声明 → FormatTools 注入提示词 → 模型生成调用串 → ANTLR 解析为 JSON → 应用执行 → 结果回填 → 自然语言收尾。配合一行开关的约束解码端侧 Agent 的自动执行闭环就能在生产环境中稳定运转。【免费下载链接】LiteRT-LMLiteRT-LM is Googles production-ready, high-performance, open-source inference framework for deploying Large Language Models on edge devices.项目地址: https://gitcode.com/GitHub_Trending/li/LiteRT-LM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考