GLM 4.5는 에이전트 기능을 탑재한 최첨단 대규모 언어 모델(LLM)로, 함수 호출(function calling) 을 통해 자동화와 지능형 의사 결정을 한 단계 끌어올립니다. 함수 호출을 활용하면 GLM 4.5는 외부 도구 및 API와 상호작용하고, 작업을 수행하며, 데이터를 검색하고, 복잡한 워크플로를 자동화할 수 있어 단순한 대화형 모델을 넘어서는 기능을 제공합니다.
하지만 함수 호출을 통합하고 문제를 해결하는 것은 어려울 수 있습니다. 이 글에서는 GLM 4.5에서 함수 호출을 사용할 때 마주할 수 있는 파서 오류, 잘못된 출력 형식, 스키마 설계 실수와 같은 일반적인 문제에 대한 실용적인 가이드와 해결책을 제공합니다. 명확한 예시, 문제 해결 팁, 모범 사례를 통해 이 글은 여러분이 문제를 빠르게 식별하고 해결할 수 있도록 도와 실제 애플리케이션에서 GLM 4.5의 에이전트 잠재력을 완전히 활용할 수 있게 합니다.
함수 호출이 GLM 4.5에 어떤 더 나은 결과를 가져다줄 수 있나요?
함수 호출은 GLM 4.5와 같은 대규모 언어 모델에 도입된 강력한 기능으로, 모델이 제어 가능하고 신뢰할 수 있는 방식으로 외부 도구, API 또는 구조화된 코드와 상호작용할 수 있게 합니다. 다음은 함수 호출이 GLM 4.5에 가져다주는 주요 이점과 개선된 결과입니다:
https://www.youtube.com/watch?v=KUEmEb71vzQ
1. 더 정확하고 신뢰할 수 있는 출력
- 향상된 사실성: 계산, 데이터 조회, 데이터베이스 쿼리와 같은 작업을 외부 함수에 위임함으로써 GLM 4.5는 순수 텍스트 기반 답변에서 흔히 발생하는 오류를 피할 수 있습니다.
- 환각(Hallucination) 감소: 모델이 API나 함수에서 검증된 결과에 의존하기 때문에 잘못되거나 조작된 정보를 생성할 가능성이 줄어듭니다.
2. 복잡한 작업 자동화
- 작업 체이닝: GLM 4.5는 사용자 요청을 여러 단계로 분해하고 각 단계에 적합한 함수를 호출한 후 결과를 결합할 수 있습니다.
- 워크플로 자동화: 함수 호출 시퀀스를 조율하여 다단계 비즈니스 프로세스, 데이터 처리, 보고서 생성과 같은 작업을 자동화할 수 있습니다.
3. 실제 시스템과의 통합 강화
- 실시간 데이터 접근: 함수 호출을 통해 모델은 데이터베이스, 웹 서비스, IoT 디바이스에서 실시간 정보를 가져와 응답을 더 최신 상태이고 컨텍스트를 인식하도록 만들 수 있습니다.
- 사용자 정의 작업: 기업은 이메일 발송, 주문 처리와 같은 사용자 정의 함수를 정의하여 모델이 도메인 특화 작업을 안전하게 수행할 수 있게 할 수 있습니다.
4. 사용자 경험 개선
- 인터랙티브 애플리케이션: 사용자는 앱을 사용하는 것처럼 모델과 상호작용할 수 있으며, 모델은 백엔드 함수를 투명하게 트리거합니다.
- 개인화: 함수가 사용자별 데이터나 설정을 가져와 개인화된 응답을 제공할 수 있습니다.
5. 향상된 오류 처리 및 설명 가능성
- 투명한 추론: 함수 호출을 통해 어떤 외부 리소스나 도구가 사용되었는지 추적할 수 있어 모델의 추론 프로세스를 더 쉽게 감사할 수 있습니다.
- 제어된 실행: 개발자는 모델이 호출할 수 있는 함수를 모니터링하고 제한할 수 있어 안전성과 예측 가능성이 향상됩니다.
GLM-4.5의 함수 호출 한계는 무엇인가요?
1. 과도한 호출 GLM-4.5는 때때로 외부 도구나 API에 과도하거나 불필요한 호출을 할 수 있습니다. 이는 토큰 사용량과 운영 비용을 증가시키며, 최종 결과에 항상 도움이 되지 않으면서 더 많은 컴퓨팅 리소스가 소모됩니다.
2. 스트리밍 엣지 케이스 스트리밍 모드에서 전체 응답이 완성되기 전에 일부 JSON 데이터가 전송되면 다운스트림 애플리케이션이 불완전한 정보를 받을 수 있습니다. 적절한 버퍼링이 없으면 출력 처리 중 오류나 실패가 발생할 수 있습니다.
3. 리소스 사용량 함수 호출의 경우 제한된 하드웨어 리소스가 모델이 대량의 요청을 효율적으로 처리하고, 복잡한 데이터를 처리하거나, 정교한 도구 호출 체인을 실행하는 능력에 영향을 미칠 수 있습니다. 리소스가 제한된 환경에서는 함수 호출의 성능과 정확도가 눈에 띄게 저하될 수 있습니다.
GLM-4.5와 함께 함수 호출을 사용하는 이점
Claude Code를 사용해 프론트엔드 개발, 도구 생성, 데이터 분석, 테스트, 알고리즘 구현과 같은 52가지 다양한 코딩 작업을 대상으로 GLM-4.5의 에이전트 코딩 능력을 독립적으로 평가한 결과, GLM-4.5는 90.6%의 최고 수준의 도구 호출 성공률을 기록해 Claude-4-Sonnet(89.5%), Kimi K2(86.2%), Qwen3-Coder(77.1%)를 능가했습니다.

초보자를 위한 GLM-4.5 함수 호출 사용 튜토리얼
이 가이드는 사용자가 지정한 위치의 현재 날씨 정보를 검색하기 위해 함수 호출을 사용하는 방법을 보여줍니다. 완전한 Python 코드 예시를 함께 살펴보겠습니다.
함수 호출의 구체적인 API 형식은 문서를 참고하세요!

- 클라이언트 초기화 먼저 Novita API 키로 클라이언트를 초기화해야 합니다.
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"
- 호출할 함수 정의 다음으로 모델이 호출할 수 있는 Python 함수를 정의합니다. 이 예시에서는 날씨 정보를 가져오는 함수입니다.
# 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 요청 구성
이제 Novita 엔드포인트에 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'}
- 함수 호출 결과로 응답하고 최종 답변 받기
다음 단계는 함수 호출을 처리하고
get_weather함수를 실행한 후 결과를 모델에 다시 전송하여 사용자에게 대한 최종 응답을 생성하는 것입니다.
# 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, 이제 Anthropic SDK와 호환됩니다
GLM-4.5와 Claude Code의 조합은 AI 커뮤니티에서 빠르게 주목을 받으며 실제 애플리케이션을 위한 고급 에이전트 기능을 제공하고 있습니다. 이 통합을 더욱 간소화하기 위해 Novita AI는 이제 Anthropic SDK와의 호환성을 제공하여, 친숙한 Claude Code 인터페이스를 통해 GLM-4.5의 성능을 쉽게 활용할 수 있게 합니다.
자세한 내용은 이 문서를 확인하세요!
1. Anthropic SDK 설치
pip install anthropic
2. 클라이언트 초기화
Anthropic SDK는 환경 변수 ANTHROPIC_API_KEY와 ANTHROPIC_BASE_URL에서 API 키와 기본 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. 온도(Temperature) ≤ 0.2
- 의미: 온도 매개변수를 0.2 이하로 설정하세요.
- 해결하는 문제:
- 출력의 무작위성을 낮춰 더 예측 가능하고 일관된 동작을 보장합니다.
- 스키마 드리프트를 방지하여 모델이 의도한 매개변수 구조를 준수하고 오류를 줄입니다.
4. tool_choice="required" 사용
- 의미: 사용자가 명시적으로 함수 호출을 요청한 경우 이 옵션을 설정하세요.
- 해결하는 문제:
- 모델이 항상 필요한 함수 호출을 수행하도록 보장하여 신뢰성과 사용자 만족도를 높입니다.
5. 병렬 호출은 필요한 경우에만 사용
- 의미: 실제로 독립적인 함수에만 병렬화를 적용하고, 그 외에는 호출을 순차적으로 생성하세요.
- 해결하는 문제:
- 호출 간 인수 혼합이나 논리적 불일치를 방지합니다.
- 각 호출이 올바른 컨텍스트와 입력을 받도록 보장하여 더 정확한 결과를 도출합니다.
GLM-4.5 함수 호출 오류 문제 해결
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 파서에서 IndexError: list index out of range | 기본 파서 사용; GLM ID 형식이 다름. | 서버를 --tool-call-parser glm4_moe 옵션으로 시작하세요. |
| JSON에 무작위 텍스트가 섞여 있음 | 온도가 너무 높거나 tool_choice가 누락됨. |
온도를 낮추고 tool_choice를 "auto" 또는 "required"로 설정하세요. |
| 끝없는 도구 재귀 호출 | 모델이 반복 호출을 환각(Hallucination)으로 생성함. | 호스트 로직에서 실행된 호출을 추적하고 중복 호출을 중단하세요. |
| 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는 AI 야망을 실현할 수 있도록 지원하는 올인원 클라우드 플랫폼입니다. 통합 API, 서버리스, GPU 인스턴스 — 필요한 모든 비용 효율적인 도구를 제공합니다. 인프라 부담을 없애고 무료로 시작하여 AI 비전을 현실로 만드세요.
