GLM 4.5 — это продвинутая большая языковая модель (LLM) с возможностями агента, которая с помощью вызова функций выводит автоматизацию и интеллектуальное принятие решений на новый уровень. Благодаря вызову функций GLM 4.5 может взаимодействовать с внешними инструментами и API, выполнять действия, получать данные и автоматизировать сложные рабочие процессы — поэтому это далеко не просто разговорная модель.
Однако интеграция вызова функций и устранение связанных с ним проблем может быть сложной задачей. В этой статье вы найдете практические рекомендации и решения распространенных проблем, с которыми вы можете столкнуться при использовании вызова функций в GLM 4.5: ошибки парсера, некорректные форматы вывода или ошибки при проектировании схем. С помощью понятных примеров, советов по устранению неполадок и лучших практик эта статья поможет вам быстро находить и решать проблемы, чтобы полностью раскрыть потенциал агентных возможностей GLM 4.5 в ваших реальных приложениях.
Какие лучшие результаты позволяет получить GLM 4.5 с помощью вызова функций?
https://www.youtube.com/watch?v=KUEmEb71vzQ
1. Более точные и надежные результаты вывода
- Повышение достоверности информации: Передавая такие задачи, как вычисления, поиск данных или запросы к базам данных, внешним функциям, GLM 4.5 может избежать ошибок, характерных для ответов, сгенерированных исключительно на основе текста.
- Снижение количества галлюцинаций: Модель опирается на проверенные результаты от API или функций, что снижает вероятность генерации некорректной или выдуманной информации.
2. Автоматизация сложных задач
- Цепочки задач: GLM 4.5 может разбить запрос пользователя на несколько шагов, вызывая соответствующие функции для каждого шага и объединяя полученные результаты.
- Автоматизация рабочих процессов: Модель может автоматизировать многошаговые бизнес-процессы, обработку данных или генерацию отчетов, управляя последовательностями вызовов функций.
3. Улучшенная интеграция с реальными системами
- Доступ к актуальным данным: С помощью вызова функций модель может получать информацию в реальном времени из баз данных, веб-сервисов или устройств IoT, что делает ее ответы более актуальными и учитывающими контекст.
- Пользовательские действия: Компании могут определять пользовательские функции (например, отправка электронных писем, размещение заказов), что позволяет модели безопасно выполнять действия, специфичные для конкретной предметной области.
4. Улучшенный пользовательский опыт
- Интерактивные приложения: Пользователи могут взаимодействовать с моделью так, как если бы они использовали приложение: модель прозрачно вызывает бэкенд-функции.
- Персонализация: Функции могут получать данные или настройки, специфичные для конкретного пользователя, что позволяет генерировать персонализированные ответы.
5. Улучшенная обработка ошибок и объясняемость
- Прозрачное обоснование: Вызов функций позволяет отслеживать, какие внешние ресурсы или инструменты были использованы, что делает процесс обоснования модели более прозрачным для аудита.
- Контролируемое выполнение: Разработчики могут отслеживать и ограничивать набор функций, которые может вызывать модель, что повышает безопасность и предсказуемость работы.
Какие ограничения имеет вызов функций в GLM-4.5?
1. Чрезмерное количество вызовов
Иногда GLM-4.5 может делать избыточные или ненужные вызовы внешних инструментов или API. Это увеличивает расход токенов и операционные затраты, так как больше вычислительных ресурсов расходуется, не всегда принося пользу конечному результату.
2. Крайние случаи при потоковой передаче
В режиме потоковой передачи, если частичные данные JSON отправляются до завершения полного ответа, нижестоящие приложения могут получать неполную информацию. Без правильной буферизации это может привести к ошибкам или сбоям при обработке вывода.
3. Затраты ресурсов
Для вызова функций это означает, что ограниченные аппаратные ресурсы могут влиять на способность модели эффективно обрабатывать большое количество запросов, обрабатывать сложные данные или выполнять сложные цепочки вызовов инструментов. В средах с ограниченными ресурсами производительность и точность вызова функций могут заметно снижаться.
Преимущества использования вызова функций с GLM-4.5
Независимая оценка агентных возможностей GLM-4.5 в области программирования была проведена с использованием Claude Code и охватила 52 разнообразные задачи программирования: фронтенд-разработка, создание инструментов, анализ данных, тестирование и реализация алгоритмов. GLM-4.5 достиг ведущего показателя успешности вызова инструментов в 90,6%, опередив Claude-4-Sonnet (89,5%), Kimi K2 (86,2%) и Qwen3-Coder (77,1%).

Руководство для начинающих: использование вызова функций в GLM-4.5
В этом руководстве показано, как использовать вызов функций для получения актуальной информации о погоде в указанном пользователем местоположении. Мы разберем полный пример кода на Python.
С конкретным форматом API для вызова функций вы можете ознакомиться в документации!

Попробуйте GLM 4.5 прямо сейчас!
- Инициализация клиента
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# Get the Novita AI API Key from: https://novita.ai/settings/key-management.
api_key="<YOUR Novita AI API Key>",
)
model = "zai-org/glm-4.5"
- Определение вызываемой функции
# Example function to simulate fetching weather data.
def get_weather(location):
"""Retrieves the current weather for a given location."""
print("Calling get_weather function with location: ", location)
# In a real application, you would call an external weather API here.
# This is a simplified example returning hardcoded data.
return json.dumps({"location": location, "temperature": "60 degrees Fahrenheit"})
- Формирование API-запроса с параметрами tools и сообщением пользователя
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather of an location, the user shoud supply a location first",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "What is the weather in San Francisco?"
}
]
# Let's send the request and print the response.
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# Please check if the response contains tool calls if in production.
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
- Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
- Отправка результата вызова функции и получение итогового ответа
# Ensure tool_call is defined from the previous step
if tool_call:
# Extend conversation history with the assistant's tool call message
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)
# Execute the function and get the response
function_response = get_weather(
location=function_args.get("location"))
# Append the function response to the messages
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# Get the final response from the model, now with the function result
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# Note: Do not include tools parameter here.
)
print(answer_response.choices[0].message)
- Вывод
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
Novita AI теперь поддерживает совместимость с SDK Anthropic
Сочетание GLM-4.5 и Claude Code быстро привлекло внимание сообщества ИИ, предоставляя продвинутые агентные возможности для реальных приложений. Чтобы дополнительно упростить эту интеграцию, Novita AI теперь предлагает совместимость с SDK Anthropic, что позволяет вам легко использовать возможности GLM-4.5 через привычный интерфейс Claude Code.
Подробную информацию вы можете найти в документации!
1. Установка SDK Anthropic
pip install anthropic
2. Инициализация клиента
SDK Anthropic предназначены для получения API-ключа и базового URL из переменных окружения: ANTHROPIC_API_KEY и ANTHROPIC_BASE_URL. Также вы можете передать эти параметры клиенту Anthropic при его инициализации.
Просмотреть и управлять своими API-ключами вы можете на странице настроек.
- Использование переменных окружения
export ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic"
export ANTHROPIC_API_KEY="<YOUR_NOVITA_API_KEY>"
- Передача параметров при инициализации клиента Anthropic
import anthropic
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
3. Вызов API
import anthropic
# Initialize the client, if you already set `ANTHROPIC_BASE_URL` and `ANTHROPIC_API_KEY`
# in the environment variables, you can omit the `api_key` and `base_url` parameters.
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
message = client.messages.create(
model="zai-org/glm-4.5",
max_tokens=1000,
temperature=1,
system="You are a world-class poet. Respond only with short poems.",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Why is the ocean salty?"
}
]
}
]
)
print(message.content)
Как повысить точность вызова функций в GLM-4.5
1. Ясность схемы
- Суть: Используйте короткие, уникальные имена параметров и избегайте вложенных
anyOf, пока парсер не станет более надежным. - Что это решает:
- Предотвращает путаницу в параметрах и конфликты имен, упрощая модели корректное заполнение аргументов.
- Снижает количество ошибок парсинга и неудачных вызовов функций, вызванных слишком сложными схемами.
2. Системный промпт
- Суть: Дайте модели инструкцию «сначала определить, нужен ли инструмент; если нет — ответить напрямую».
- Что это решает:
- Снижает количество ненужных или избыточных вызовов инструментов/функций (чрезмерного количества вызовов).
- Помогает экономить вычислительные ресурсы и операционные затраты.
3. Температура ≤ 0,2
- Суть: Установите параметр температуры на значение 0,2 или ниже.
- Что это решает:
- Снижает случайность вывода, обеспечивая более предсказуемое и стабильное поведение.
- Предотвращает дрейф схемы, поэтому модель придерживается заданной структуры параметров и снижает количество ошибок.
4. Использование tool_choice="required"
- Суть: Установите эту опцию, когда пользователь явно запрашивает вызов функции.
- Что это решает:
- Гарантирует, что модель всегда выполнит требуемый вызов функции, повышая надежность и удовлетворенность пользователей.
5. Осторожное использование параллельных вызовов
- Суть: Параллелизуйте только действительно независимые функции; в остальных случаях генерируйте вызовы последовательно.
- Что это решает:
- Предотвращает смешивание аргументов или логическую несогласованность между вызовами.
- Гарантирует, что каждый вызов получает корректный контекст и входные данные, что приводит к более точным результатам.
Устранение ошибок вызова функций в GLM-4.5
| Симптом | Возможная причина | Исправление / Решение |
|---|---|---|
| IndexError: list index out of range в парсере | Используется парсер по умолчанию; формат идентификаторов GLM отличается. | Запустите сервер с параметром --tool-call-parser glm4_moe. |
| Случайный текст, смешанный с JSON | Слишком высокая температура или отсутствует параметр tool_choice. |
Снизьте температуру; установите для tool_choice значение "auto" или "required". |
| Бесконечная рекурсия вызовов инструментов | Модель генерирует повторяющиеся вызовы (галлюцинации). | Отслеживайте выполненные вызовы и прерывайте дубликаты в логике хоста. |
| OOM / Нехватка ресурсов | Сборка FP8 все еще превышает объем общей памяти в ядрах Triton. | Уменьшите значение num_stages или переключитесь на квантование Int4-Int8-Mix. |
| Вызов не генерируется | Схема инструмента слишком неоднозначная. | Добавьте строгий список required и явные значения перечислений (enum). |
Вызов функций превращает GLM 4.5 из разговорной модели в интеллектуального агента, который может выполнять задачи и автоматизировать процессы в реальном времени. Понимая типичные проблемы и их решения — такие как ошибки парсера, форматирование JSON или проектирование схем — вы можете обеспечить беспроблемную интеграцию и полностью раскрыть агентные возможности GLM 4.5. Мы надеемся, что эта статья прояснила распространенные вопросы и дала вам уверенность для развертывания вызова функций в GLM 4.5.
Часто задаваемые вопросы
Почему вызов функций важен для GLM 4.5 как агентной LLM? Вызов функций позволяет GLM 4.5 программно взаимодействовать с внешними сервисами, базами данных и инструментами. Это обеспечивает автоматизацию, многошаговое рассуждение, поиск информации и выполнение действий в реальном мире, выходя за рамки генерации текста.
Как избежать бесконечной рекурсии или повторяющихся вызовов инструментов? Реализуйте логику на стороне хоста для отслеживания и прерывания дублирующих вызовов функций, чтобы предотвратить бесконечные циклы.
Какие лучшие практики проектирования схемы гарантируют генерацию вызовов функций? Используйте краткие, уникальные имена параметров, добавляйте явные перечисления (enum) и определяйте обязательные параметры, чтобы сделать схему понятной для модели.
Novita AI — это универсальная облачная платформа, которая помогает реализовать ваши амбиции в области ИИ. Интегрированные API, бессерверные решения, экземпляры GPU — доступные инструменты, которые вам нужны. Избавьтесь от необходимости управления инфраструктурой, начните бесплатно и воплотите ваше видение ИИ в реальность.
