GLM 4.5 函数调用手册:从积分到问题求解

glm 4.5 函数调用

GLM 4.5,作为先进的大型语言模型(LLM) 具有代理功能,通过以下方式将自动化和智能决策提升到新的水平 函数调用通过利用函数调用,GLM 4.5 可以与外部工具和 API 交互、执行操作、检索数据并自动执行复杂的工作流程 - 使其不仅仅是一个对话模型。

然而,集成和排除函数调用故障可能颇具挑战性。本文针对您在使用 GLM 4.5 函数调用时可能遇到的常见问题(例如解析器错误、输出格式不正确或模式设计缺陷)提供了实用指南和解决方案。通过清晰的示例、故障排除技巧和最佳实践,本文可帮助您快速识别和解决问题,从而让您能够在实际应用中充分发挥 GLM 4.5 的代理潜力。

函数调用可以帮助 GLM 4.5 实现哪些更好的结果?

函数调用是大型语言模型(例如 GLM 4.5)中引入的一项强大功能。它允许模型以可控且可靠的方式与外部工具、API 或结构化代码进行交互。以下是函数调用为 GLM 4.5 带来的主要优势和改进结果:

1. 更准确、更可靠的输出

  • 提高事实性: 通过将计算、数据查找或数据库查询等任务委托给外部函数,GLM 4.5 可以避免纯基于文本的答案中常见的错误。
  • 幻觉减少: 该模型依赖于 API 或功能的验证结果,从而减少了生成不正确或虚假信息的机会。

2. 复杂任务的自动化

  • 任务链: GLM 4.5 可以将用户请求分解为多个步骤,为每个步骤调用适当的函数并组合结果。
  • 工作流程自动化: 它可以通过协调函数调用序列来自动化多步骤业务流程、数据处理或报告生成。

3. 增强与实际系统的集成

  • 访问实时数据: 通过函数调用,该模型可以从数据库、Web 服务或物联网设备中获取实时信息,使其响应更加及时和具有上下文感知能力。
  • 自定义操作: 企业可以定义自定义功能(例如发送电子邮件、下订单),使模型能够安全地执行特定领域的操作。

4. 提升用户体验

  • 互动应用: 用户可以像使用应用程序一样与模型进行交互,模型可以透明地触发后端功能。
  • 个性化: 功能可以获取用户特定的数据或设置,实现个性化响应。

5. 更好的错误处理和可解释性

  • 透明推理: 函数调用有助于追踪使用了哪些外部资源或工具,使模型的推理过程更易于审计。
  • 受控执行: 开发人员可以监控和限制模型可以调用的功能,从而提高安全性和可预测性。

GLM-4.5 中的函数调用有哪些限制?

1. 过度呼叫
GLM-4.5 有时可能会对外部工具或 API 进行过多或不必要的调用。这会增加代币使用量和运营成本,因为会消耗更多计算资源,但最终结果却不一定能受益。

2. 流式传输边缘案例
在流式传输模式下,如果在完整响应完成之前发送了部分 JSON 数据,下游应用程序可能会收到不完整的信息。如果没有适当的缓冲,这可能会导致输出处理出现错误或失败。

3. 资源足迹
对于函数调用而言,这意味着有限的硬件资源会影响模型高效处理大量请求、处理复杂数据或执行复杂的工具调用链的能力。在资源受限的环境中,函数调用的性能和准确性可能会显著降低。

使用 GLM-4.5 函数调用的好处

使用 Claude Code 对 GLM-4.5 的代理编码能力进行了独立评估,涵盖了前端开发、工具创建、数据分析、测试和算法实现等 52 项不同的编码任务。GLM-4.5 的工具调用成功率高达 90.6%,领先于 Claude-4-Sonnet(89.5%)、Kimi K2(86.2%)和 Qwen3-Coder(77.1%)。

使用 GLM-4.5 函数调用的好处

教程:GLM-4.5 中面向初学者的函数调用使用

本指南演示如何使用函数调用检索用户指定位置的当前天气信息。我们将讲解一个完整的 Python 代码示例。

函数调用的具体API格式请参考 文档!

尝试 glm 4.5
  • 初始化客户端

首先,您需要使用 Novita API 密钥初始化客户端。

从 openai 导入 OpenAI 导入 json 客户端 = OpenAI(base_url="https://api.novita.ai/v3/openai”,# 获取 Novita AI API 密钥来自:https://novita.ai/settings/key-management.api_key="<你的 Novita AI API 密钥>", ) 型号 = "zai-org/glm-4.5"
  • 定义要调用的函数

接下来,定义模型可以调用的 Python 函数。在本例中,它是一个获取天气信息的函数。

# 模拟获取天气数据的示例函数。def get_weather(location): """检索给定位置的当前天气。""" print("使用 location: ", location 调用 get_weather 函数) # 在实际应用中,您可以在此处调用外部天气 API。# 这是一个返回硬编码数据的简化示例。return json.dumps({"location": location, "temp": "60 华氏度"})
  • 使用工具和用户消息构建 API 请求

现在,创建对 Novita 端点的 API 请求。此请求包含 tools 参数,定义模型可以使用的功能,以及用户的消息。

tools = [ { "type": "function", "function": { "name": "get_weather", "description": "获取某个位置的天气,用户应该先提供位置", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市和州,例如加利福尼亚州旧金山", } }, "required": ["location"] }, } }, ] messages = [ { "role": "user", "content": "旧金山的天气如何?" } ] # 让我们发送请求并打印响应。response = client.chat.completions.create( model=model, messages=messages, tools=tools, ) # 如果在生产环境中,请检查响应是否包含工具调用。tool_call = response.choices[0].message.tool_calls[0] print(tool_call.model_dump())
  • 输出
{'id':'0','function':{'arguments':'{“location”:“加利福尼亚州旧金山”}','name':'get_weather'},'type':'function'}
  • 响应函数调用结果并获取最终答案

下一步是处理函数调用,执行 get_weather 函数,并将结果发送回模型以生成对用户的最终响应。

# 确保 tool_call 在上一步中已定义 if tool_call: # 使用助手的工具调用消息扩展对话历史记录 messages.append(response.choices[0].message) function_name = tool_call.function.name if function_name == "get_weather": function_args = json.loads(tool_call.function.arguments) # 执行函数并获取响应 function_response = get_weather( location=function_args.get("location")) # 将函数响应附加到消息 messages.append( { "tool_call_id": tool_call.id, "role": "tool", "content": function_response, } ) # 从模型中获取最终响应,现在使用函数结果 answer_response = client.chat.completions.create( model=model, messages=messages, # 注意:此处不要包含 tools 参数。 )打印(answer_response.choices[0].message)
  • 输出
{'id':'0','function':{'arguments':'{“location”:“加利福尼亚州旧金山”}','name':'get_weather'},'type':'function'}

Novita AI 现在提供与 Anthropic SDK 的兼容性

GLM-4.5 与 Claude Code 的结合迅速引起了 AI 界的关注,为实际应用提供了先进的代理功能。为了进一步简化这一集成, Novita AI 现在提供与 Anthropic SDK 的兼容性,让您可以通过熟悉的 Claude Code 界面轻松利用 GLM-4.5 的强大功能。

你可以检查一下 文档 了解更多详情!

1.安装Anthropic SDK

pip 安装人类

2.初始化客户端

Anthropic SDK 旨在从环境变量中提取 API 密钥和基本 URL: ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL。此外,您还可以在初始化 Anthropic 客户端时向其提供参数。

您可以在 设置页面.

  • 使用环境变量
导出 ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic”导出ANTHROPIC_API_KEY =“ “
  • 初始化Anthropic客户端时设置参数
导入 anthropic 客户端 = anthropic.Anthropic( base_url="https://api.novita.ai/anthropic”,api_key=" ")

3.调用API

导入 anthropic # 初始化客户端,如果您已经在环境变量中设置了 `ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY` #,则可以省略 `api_key` 和 `base_url` 参数。client = anthropic.Anthropic(base_url="https://api.novita.ai/anthropic”,api_key=" " ) message = client.messages.create( model="zai-org/glm-4.5", max_tokens=1000, temperature=1, system="您是世界级诗人。请仅用短诗回复。", messages=[ { "role": "user", "content": [ { "type": "text", "text": "为什么海洋是咸的?" } ] } ] ) print(message.content)

如何提高 GLM-4.5 函数调用的准确性

1. 架构清晰度

  • 这是什么意思: 使用简短、唯一的参数名称并避免嵌套 anyOf 直到解析器更加健壮。
  • 它解决了什么问题:
    • 防止参数混淆和命名冲突,使模型更容易正确填写参数。
    • 减少由于过于复杂的模式而导致的解析错误和函数调用失败。

2. 系统提示

  • 这是什么意思: 指示模型“首先决定是否需要工具;否则,直接回答。”
  • 它解决了什么问题:
    • 减少不必要或过多的工具/功能调用(过度调用)。
    • 有助于节省计算资源和运营成本。

3. 温度≤0.2

  • 这是什么意思: 将温度参数设置为 0.2 或更低。
  • 它解决了什么问题:
    • 降低输出随机性,确保更可预测和一致的行为。
    • 防止模式漂移,因此模型坚持预期的参数结构并减少错误。

4. 绝大部分储备使用 tool_choice="required"

  • 这是什么意思: 当用户明确请求函数调用时设置此选项。
  • 它解决了什么问题:
    • 确保模型始终进行所需的函数调用,提高可靠性和用户满意度。

5. 谨慎使用并行调用

  • 这是什么意思: 仅并行化真正独立的函数;否则,按顺序生成调用。
  • 它解决了什么问题:
    • 防止调用之间的参数混合或逻辑不一致。
    • 确保每个呼叫都收到正确的上下文和输入,从而获得更准确的结果。

排除 GLM-4.5 函数调用错误

症状可能的原因修复/解决方案
IndexError:解析器中的列表索引超出范围使用默认解析器;GLM ID 格式不同。使用以下命令启动服务器 --tool-call-parser glm4_moe.
随机文本与 JSON 混合温度过高或缺失 tool_choice.降低温度;设置 tool_choice"auto" or "required".
无休止的工具递归模型出现幻觉并重复呼叫。跟踪已执行的调用并中止主机逻辑中的重复调用。
OOM/资源不足FP8 构建仍然超过 Triton 内核上的共享内存。减少 num_stages 或切换到 Int4-Int8-Mix 量化。
未发出呼叫工具模式太模糊。添加严格 required 列表和明确的枚举值。

函数调用将 GLM 4.5 从对话模型转变为能够实时执行任务并自动化流程的智能代理。通过了解常见问题及其解决方案(例如解析器错误、JSON 格式或模式设计),您可以确保顺利集成并充分发挥 GLM 4.5 代理功能的潜力。我们希望本文能够解答常见问题,并帮助您自信地部署 GLM 4.5 函数调用。

常見問題解答

为什么函数调用对于 GLM 4.5 来说很重要 LLM?

函数调用使 GLM 4.5 能够以编程方式与外部服务、数据库和工具进行交互。这不仅支持文本生成,还支持自动化、多步推理、信息检索以及实际操作。

如何避免无休止的递归或重复的工具调用?

实现主机端逻辑来跟踪和中止重复的函数调用,防止无限循环。

为确保函数调用能够发出,架构设计的最佳实践是什么?

使用简洁、独特的参数名称,提供明确的枚举,并定义所需的参数,以使模型的模式清晰。

Novita AI 是助力您实现 AI 梦想的一体化云平台。集成 API、无服务器、 GPU 实例——您所需的经济高效的工具。无需任何基础设施,免费启动,即可将您的 AI 愿景变为现实。

推荐阅读


探索 Novita 的更多内容

订阅即可将最新帖子发送到您的电子邮箱。

发表评论

滚动到顶部

探索 Novita 的更多内容

立即订阅以继续阅读并访问完整档案。

继续阅读