Function Calling & Structured Output
[Translation Pending]\n\n# 第 07 期 | Function Calling 与结构化输出
副标题:让 Gemma 输出严格的 JSON Schema,实现工具调用(Function Calling)模式,为 Agent 集成打下基础。
🎯 学习目标
- 理解 Function Calling 的核心原理及其在 LLM 应用中的重要性。
- 掌握通过高级 Prompt Engineering 技术,引导 Gemma 模型输出严格遵循 JSON Schema 的结构化数据。
- 学习如何将工具定义(Tool Definition)融入 Prompt,模拟实现 Gemma 的工具调用(Function Calling)模式。
- 了解如何利用 Python 库(如 Pydantic)对 Gemma 的结构化输出进行验证和解析,提高应用健壮性。
📖 核心概念讲解
7.1 什么是 Function Calling?
在大型语言模型(LLM)的语境中,Function Calling(或称 Tool Use、Tool Calling)是指 LLM 能够理解用户的意图,并决定何时以及如何调用外部工具或函数来完成任务的能力。这使得 LLM 不再仅仅是一个文本生成器,而是可以与外部世界(如数据库、API、计算器、网页搜索等)进行交互的智能代理。
Function Calling 的基本流程:
- 用户输入: 用户提出一个请求,例如“请帮我查询伦敦现在的天气”。
- LLM 接收: LLM 接收到这个请求。
- LLM 决策: LLM 分析请求,识别出需要调用外部工具(如天气查询 API)才能回答。
- LLM 输出工具调用: LLM 不直接回答,而是生成一个结构化的输出(通常是 JSON 格式),指示要调用的工具名称及其参数,例如:
{"tool_name": "get_current_weather", "parameters": {"location": "London"}}。 - 外部系统执行: 应用程序(或 Agent 框架)解析 LLM 的输出,调用对应的真实函数或 API。
- 结果返回: 真实函数执行后,将结果(例如“伦敦现在多云,气温 15°C”)返回给应用程序。
- LLM 总结: 应用程序将函数执行结果再次作为上下文输入给 LLM。
- LLM 回答用户: LLM 根据工具执行的结果,生成一个自然语言的回答返回给用户。