GLM-5.1 API Kullanımı: Kod Örnekleriyle Tam Kılavuz

Ashley Innocent

Ashley Innocent

8 April 2026

GLM-5.1 API Kullanımı: Kod Örnekleriyle Tam Kılavuz

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

ÖZET

GLM-5.1'e BigModel API aracılığıyla https://open.bigmodel.cn/api/paas/v4/ adresinden erişilebilir. API, OpenAI ile uyumludur: aynı uç nokta yapısı, aynı istek formatı, aynı akış paterni. Bir BigModel hesabına, bir API anahtarına ve glm-5.1 model adına ihtiyacınız var. Bu kılavuz kimlik doğrulamayı, ilk isteğinizi, akışı, araç çağırmayı ve entegrasyonunuzu Apidog ile test etmeyi kapsar.

Giriş

GLM-5.1, Z.AI'nin amiral gemisi ajan modeli olup Nisan 2026'da piyasaya sürülmüştür. SWE-Bench Pro'da 1 numarada yer alır ve her büyük kodlama kıyaslamasında GLM-5'in önündedir. Bir yapay zeka kodlama asistanı, özerk ajan veya uzun ufuklu görev yürütmeden faydalanan herhangi bir uygulama geliştiriyorsanız, GLM-5.1 entegre etmeye değerdir.

Geliştiriciler için iyi haber: API, OpenAI ile uyumludur. Zaten GPT-4 veya Claude üzerinde geliştirme yaptıysanız, temel URL'yi ve model adını değiştirerek GLM-5.1'e geçebilirsiniz. Yeni bir SDK öğrenmenize gerek yok. Farklı bir yanıt formatı ile uğraşmanıza gerek yok.

💡
Ajan API'lerinde ana zorluk test etmektir. Yüzlerce araç çağrısını dakikalarca çalıştıran bir modeli, kota tüketmeden gerçek API'ye karşı test etmek zordur. Apidog'un Test Senaryoları bunu çözer: ajanınızın yaptığı isteklerin tam sırasını tanımlayabilir, her durum için yanıtları taklit edebilir ve üretime geçmeden önce entegrasyonunuzun akışı, araç çağrılarını ve hata koşullarını doğru şekilde ele aldığını doğrulayabilirsiniz. Bu kılavuzdaki test bölümünü takip etmek için Apidog'u ücretsiz indirin.
düğme

Önkoşullar

İlk çağrınızı yapmadan önce şunlara ihtiyacınız var:

  1. bigmodel.cn adresinde bir BigModel hesabı. Kayıt ücretsizdir.
  2. BigModel konsolundaki API Anahtarları altında bir API anahtarı.
  3. Python 3.8+ veya Node.js 18+ (örnekler ikisini de kapsar).
  4. OpenAI SDK veya standart requests/fetch (GLM-5.1'in API'si OpenAI ile uyumludur).

API anahtarınızı bir ortam değişkeni olarak ayarlayın:

export BIGMODEL_API_KEY="your_api_key_here"

API anahtarlarını kaynak kodunuzda asla sabit kodlamayın.

Kimlik Doğrulama

Her istek, Authorization başlığında bir Bearer token'a ihtiyaç duyar:

Authorization: Bearer YOUR_API_KEY

BigModel API anahtarı formatı, bir nokta ile ayrılmış iki parçalı bir dize olan xxxxxxxx.xxxxxxxxxxxxxxxx şeklindedir. Bu, OpenAI'nin sk- formatından farklıdır ancak başlıkta aynı şekilde çalışır.

Temel URL

https://open.bigmodel.cn/api/paas/v4/

Sohbet tamamlamaları uç noktası:

POST https://open.bigmodel.cn/api/paas/v4/chat/completions

İlk isteğiniz

Curl Kullanımı

curl https://open.bigmodel.cn/api/paas/v4/chat/completions \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.1",
    "messages": [
      {
        "role": "user",
        "content": "Write a Python function that finds all prime numbers up to n using the Sieve of Eratosthenes."
      }
    ],
    "max_tokens": 1024,
    "temperature": 0.7
  }'

Python Kullanımı (requests)

import os
import requests

api_key = os.environ["BIGMODEL_API_KEY"]

response = requests.post(
    "https://open.bigmodel.cn/api/paas/v4/chat/completions",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    },
    json={
        "model": "glm-5.1",
        "messages": [
            {
                "role": "user",
                "content": "Write a Python function that finds all prime numbers up to n using the Sieve of Eratosthenes."
            }
        ],
        "max_tokens": 1024,
        "temperature": 0.7
    }
)

result = response.json()
print(result["choices"][0]["message"]["content"])

OpenAI SDK Kullanımı (önerilir)

API, OpenAI ile uyumlu olduğu için, özel bir temel URL ile resmi OpenAI Python SDK'sını kullanabilirsiniz:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["BIGMODEL_API_KEY"],
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {
            "role": "user",
            "content": "Write a Python function that finds all prime numbers up to n using the Sieve of Eratosthenes."
        }
    ],
    max_tokens": 1024,
    "temperature": 0.7
)

print(response.choices[0].message.content)

Bu en temiz yaklaşımdır. OpenAI SDK yeniden denemeleri, zaman aşımı yönetimini ve yanıt ayrıştırmasını halleder. Tüm bunları sadece BigModel temel URL'sine işaret ederek ücretsiz olarak alırsınız.

Yanıt formatı

Yanıt yapısı OpenAI'ninkiyle aynıdır:

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1744000000,
  "model": "glm-5.1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "def sieve_of_eratosthenes(n):\n    ..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 32,
    "completion_tokens": 215,
    "total_tokens": 247
  }
}

Yanıt metnine result["choices"][0]["message"]["content"] aracılığıyla erişin.

usage alanı, istek için token sayılarını gösterir. GLM-5.1 zirve saatlerde (14:00-18:00 UTC+8) 3 kat kota ile faturalandırdığından, kota tüketiminizi izlemek için bunu takip edin.

Akışlı yanıtlar

Uzun kod üretimi görevleri için, akış size tam yanıtı beklemek yerine token'ları geldikçe verir. Bu, kullanıcıya dönük herhangi bir uygulama için çok önemlidir.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["BIGMODEL_API_KEY"],
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

stream = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {
            "role": "user",
            "content": "Explain how a B-tree index works in a database, with a code example."
        }
    ],
    stream=True,
    max_tokens": 2048
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

print()  # akış tamamlandıktan sonra yeni satır

Akıştaki her parça, son parçadan bu yana yalnızca yeni token'ları içeren bir delta'dır. Son parçanın finish_reason"stop" (veya token limitine ulaşırsanız "length") olarak ayarlanır.

Ham isteklerle akış

OpenAI SDK'sını kullanmayı tercih etmiyorsanız:

import os
import json
import requests

api_key = os.environ["BIGMODEL_API_KEY"]

response = requests.post(
    "https://open.bigmodel.cn/api/paas/v4/chat/completions",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    },
    json={
        "model": "glm-5.1",
        "messages": [{"role": "user", "content": "Write a merge sort in Python."}],
        "stream": True,
        "max_tokens": 1024
    },
    stream=True
)

for line in response.iter_lines():
    if line:
        line = line.decode("utf-8")
        if line.startswith("data: "):
            data = line[6:]
            if data == "[DONE]":
                break
            chunk = json.loads(data)
            delta = chunk["choices"][0]["delta"]
            if "content" in delta:
                print(delta["content"], end="", flush=True)

Araç çağırma

GLM-5.1 araç çağırmayı destekler: konuşmanın ortasında fonksiyon yürütme isteği yeteneği. Bu, modelin kod çalıştırması, veritabanlarını araması, harici API'leri çağırması veya gerçek dünyada eylemler gerçekleştirmesi gereken ajanik iş akışları için temel mekanizmadır.

Araçları tanımlama

import os
import json
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["BIGMODEL_API_KEY"],
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "run_python",
            "description": "Execute Python code and return the output. Use this to test, profile, or benchmark code.",
            "parameters": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "The Python code to execute"
                    }
                },
                "required": ["code"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "read_file",
            "description": "Read the contents of a file",
            "parameters": {
                "type": "object",
                "properties": {
                    "path": {
                        "type": "string",
                        "description": "File path to read"
                    }
                },
                "required": ["path"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {
            "role": "user",
            "content": "Write a function to compute Fibonacci numbers, test it for n=10, and show me the output."
        }
    ],
    tools=tools,
    tool_choice="auto"
)

message = response.choices[0].message
print(f"Finish reason: {response.choices[0].finish_reason}")

if message.tool_calls:
    for tool_call in message.tool_calls:
        print(f"\nTool called: {tool_call.function.name}")
        print(f"Arguments: {tool_call.function.arguments}")

Araç çağırma yanıtlarını işleme

GLM-5.1 bir araç çağrısı istediğinde, fonksiyonu yürütür ve ardından sonucu bir sonraki mesajda döndürürsünüz:

import subprocess

def execute_tool(tool_call):
    """Execute the tool and return the result."""
    name = tool_call.function.name
    args = json.loads(tool_call.function.arguments)

    if name == "run_python":
        result = subprocess.run(
            ["python3", "-c", args["code"]],
            capture_output=True,
            text=True,
            timeout=10
        )
        return result.stdout or result.stderr

    elif name == "read_file":
        try:
            with open(args["path"]) as f:
                return f.read()
        except FileNotFoundError:
            return f"Error: file {args['path']} not found"

    return f"Unknown tool: {name}"


def run_agent_loop(user_message, tools, max_iterations=20):
    """Run a full agent loop with tool calling."""
    messages = [{"role": "user", "content": user_message}]

    for i in range(max_iterations):
        response = client.chat.completions.create(
            model="glm-5.1",
            messages=messages,
            tools=tools,
            tool_choice="auto",
            max_tokens": 4096
        )

        message = response.choices[0].message
        messages.append(message.model_dump())

        if response.choices[0].finish_reason == "stop":
            # Model bitti
            return message.content

        if response.choices[0].finish_reason == "tool_calls":
            # Her araç çağrısını yürütün ve sonuçları ekleyin
            for tool_call in message.tool_calls:
                tool_result = execute_tool(tool_call)
                messages.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": tool_result
                })

    return "Max iterations reached"


result = run_agent_loop(
    "Write a quicksort implementation, test it with a random list of 1000 integers, and report the time.",
    tools
)
print(result)

Bu desen, GLM-5.1'in ajanik bir model olarak gücüne doğrudan ölçeklenir. Modelin araçları ne zaman çağıracağına, sonuçları işleyeceğine ve bir çözüme ulaşana veya işinin bittiğine karar verene kadar devam etmesine izin verirsiniz.

Anahtar parametreler

Parametre Tip Varsayılan Açıklama
model string gerekli "glm-5.1" kullanın
messages dizi gerekli Konuşma geçmişi
max_tokens integer 1024 Oluşturulacak maksimum token sayısı (163.840'a kadar)
temperature float 0.95 Rastgelelik. Düşük = daha deterministik. Aralık: 0.0-1.0
top_p float 0.7 Çekirdek örnekleme. Z.AI kodlama görevleri için 0.7'yi önerir.
stream boolean false Akışlı yanıtları etkinleştir
tools dizi null Araç çağırma için fonksiyon tanımları
tool_choice string/object "auto" "auto", "none" veya belirli bir araç
stop string/array null Özel durdurma dizileri

Kodlama görevleri için önerilen ayarlar:

{
    "model": "glm-5.1",
    "temperature": 1.0,
    "top_p": 0.95,
    "max_tokens": 163840  # uzun ajanik çalıştırmalar için tam bağlam
}

Z.AI, kendi kıyaslama değerlendirmelerinde bu ayarları kullanır. Deterministik kod üretimi için sıcaklığı 0.2-0.4'e düşürün.

GLM-5.1'i kodlama asistanları ile kullanma

Z.AI Kodlama Planı, Claude Code, Cline, Kilo Code ve diğer AI kodlama asistanlarını BigModel API aracılığıyla GLM-5.1 üzerinden yönlendirmenizi sağlar. Bu, Claude Opus veya GPT-5.4'ü doğrudan çalıştırmaktan daha düşük maliyetle güçlü bir kodlama modeline sahip olmak istiyorsanız faydalıdır.

Claude Code kurulumu

Claude Code yapılandırma dosyanızda (~/.claude/settings.json veya eşdeğeri):

{
  "model": "glm-5.1",
  "baseURL": "https://open.bigmodel.cn/api/paas/v4/",
  "apiKey": "your_bigmodel_api_key"
}

Cline / Roo Code kurulumu

VS Code ayarlarınızda veya Cline uzantı yapılandırmasında:

{
  "cline.apiProvider": "openai",
  "cline.openAIBaseURL": "https://open.bigmodel.cn/api/paas/v4/",
  "cline.openAIApiKey": "your_bigmodel_api_key",
  "cline.openAIModelId": "glm-5.1"
}

Kota tüketimi

GLM-5.1, token başına faturalandırma yerine Z.AI kota sistemini kullanır: - Zirve saatler (14:00-18:00 UTC+8): istek başına 3 kat kota - Zirve dışı: istek başına 2 kat kota - Nisan 2026 sonuna kadar promosyon oranı: zirve dışı saatlerde 1 kat

Ağır ajanik iş yükleri için, uzun süreli görevleri zirve dışı saatlere planlayın. Z.AI'nin gösterdiği gibi 600 iterasyonluk bir optimizasyon çalışması, zirve saatlerinde önemli ölçüde daha fazla kota maliyetine neden olur.

GLM-5.1 API'sini Apidog ile test etme

Bir ajanik API entegrasyonunu test etmek, birden çok yanıt türünü doğru şekilde işlemeyi gerektirir: normal tamamlamalar, akış parçaları, araç çağrısı istekleri, araç sonuç mesajları ve hata durumları. Tüm bunları gerçek API'ye karşı test etmek kota tüketir ve canlı bir bağlantı gerektirir.

Apidog'un Akıllı Sahte (Smart Mock) özelliği, tüm bu yanıt durumlarını tanımlamanızı ve gerçek API'ye dokunmadan test etmenizi sağlar.

Sahte uç noktayı kurma

  1. Apidog'da yeni bir uç nokta oluşturun: POST https://open.bigmodel.cn/api/paas/v4/chat/completions
  2. Standart bir başarı yanıtı için bir Sahte Beklenti (Mock Expectation) ekleyin:
{
  "id": "chatcmpl-test123",
  "object": "chat.completion",
  "created": 1744000000,
  "model": "glm-5.1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "def sieve(n): ..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 32,
    "completion_tokens": 120,
    "total_tokens": 152
  }
}
  1. Bir araç çağrısı yanıtı için ikinci bir beklenti ekleyin:
{
  "id": "chatcmpl-tool456",
  "object": "chat.completion",
  "created": 1744000001,
  "model": "glm-5.1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc",
            "type": "function",
            "function": {
              "name": "run_python",
              "arguments": "{\"code\": \"print(2+2)\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 48,
    "completion_tokens": 35,
    "total_tokens": 83
  }
}
  1. Bir hız sınırı yanıtı ekleyin (HTTP 429):
{
  "error": {
    "message": "Rate limit exceeded. Please retry after 60 seconds.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}

Tam ajan döngüsünü test etme

Birden çok isteği birbirine zincirlemek için Apidog'un Test Senaryolarını kullanın. Bir ajan döngüsü testi için:

  1. Adım 1: Başlangıç mesajınızla /chat/completions adresine POST yapın, 200 ve finish_reason == "tool_calls" olduğunu doğrulayın
  2. Adım 2: Mesajlar dizisinde araç sonucuyla tekrar POST yapın, 200 ve finish_reason == "stop" olduğunu doğrulayın
  3. Adım 3: Son içeriği çıkarın ve beklenen kodu içerdiğini doğrulayın

Bu, herhangi bir kota harcamadan tam ajan döngüsünü test eder. Sahteyi 429 döndürecek şekilde değiştirerek hata işlemeyi de test edebilir, ardından yeniden deneme mantığınızın doğru çalıştığını doğrulayabilirsiniz.

Çok adımlı ajanik iş akışları için, Apidog'un Test Senaryoları değişkenler kullanarak adımlar arasında veri aktarmanıza olanak tanır, böylece 1. adımdaki request_id veya tool_call_id değerleri otomatik olarak 2. adıma akar. Bu, gerçek bir ajan döngüsünün nasıl çalıştığını yansıtır ve üretime geçmeden önce entegrasyon hatalarını yakalar.

Hata yönetimi

API standart HTTP durum kodlarını döndürür:

Durum Anlamı Eylem
200 Başarılı Yanıtı normal şekilde işleyin
400 Hatalı istek İstek formatınızı kontrol edin
401 Yetkisiz API anahtarınızı doğrulayın
429 Hız sınırı Retry-After başlık değerinden sonra tekrar deneyin
500 Sunucu hatası Üstel geri çekilme ile tekrar deneyin
503 Servis kullanılamıyor Üstel geri çekilme ile tekrar deneyin
import time
import requests

def call_with_retry(payload, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = requests.post(
                "https://open.bigmodel.cn/api/paas/v4/chat/completions",
                headers={"Authorization": f"Bearer {os.environ['BIGMODEL_API_KEY']}",
                         "Content-Type": "application/json"},
                json=payload,
                timeout=120
            )

            if response.status_code == 429:
                retry_after = int(response.headers.get("Retry-After", 60))
                print(f"Rate limited. Waiting {retry_after}s...")
                time.sleep(retry_after)
                continue

            response.raise_for_status()
            return response.json()

        except requests.exceptions.Timeout:
            wait = 2 ** attempt
            print(f"Timeout on attempt {attempt + 1}. Retrying in {wait}s...")
            time.sleep(wait)

    raise Exception("Max retries exceeded")

Bireysel adımların 30-60 saniye sürebildiği uzun ajanik çalıştırmalar için her zaman cömert bir zaman aşımı (120-300 saniye) ayarlayın. Modelin tam bir kod dosyası oluşturmak veya karmaşık bir kıyaslama sonucunu analiz etmek için zamana ihtiyacı olabilir.

Sonuç

GLM-5.1'in OpenAI ile uyumlu API'si, GPT veya Claude ile daha önce çalıştıysanız dakikalar içinde entegre edebileceğiniz anlamına gelir. Temel fark, uç nokta (open.bigmodel.cn) ve token başına faturalandırma yerine kota sistemidir.

Modelin uzun bir oturum boyunca yüzlerce araç çağrısı yaptığı ajanik uygulamalar için, GLM-5.1'in uzun ufuklu optimizasyon yeteneği gerçek bir avantajdır. Entegrasyonunuzun tüm uç durumları denetimsiz çalışmadan önce ele aldığından emin olmak için Apidog'un Akıllı Sahte ve Test Senaryoları aracılığıyla doğru testlerle eşleştirin.

GLM-5.1'in ne olduğu ve kıyaslamalarının nasıl karşılaştırıldığı hakkında bilgi için GLM-5.1 model genel bakışı'na bakın. Apidog ile AI ajan iş akışları oluşturma ve test etme hakkında daha fazla bilgi için AI ajan belleğinin nasıl çalıştığına bakın.

düğme

Sıkça Sorulan Sorular

GLM-5.1 API'si OpenAI ile uyumlu mu?Evet. İstek formatı, yanıt yapısı, akış protokolü ve araç çağırma formatı, OpenAI sohbet tamamlama API'si ile tamamen aynıdır. Temel URL'yi https://open.bigmodel.cn/api/paas/v4/ olarak ayarlayarak resmi OpenAI Python SDK'sını veya herhangi bir OpenAI uyumlu istemciyi kullanabilirsiniz.

API isteklerinde kullanılacak model adı nedir?Model adı olarak "glm-5.1" kullanın. Tam sürüm adı kullanmayın; sadece glm-5.1 çalışır.

GLM-5.1 API fiyatlandırması nasıl çalışır?BigModel API bir kota sistemi kullanır. GLM-5.1, zirve saatlerinde (14:00-18:00 UTC+8) 3 kat kota ve zirve dışı saatlerde 2 kat kota tüketir. Nisan 2026 sonuna kadar, zirve dışı kullanım promosyon oranı olarak 1 kat kota ile faturalandırılır.

Maksimum bağlam uzunluğu nedir?200.000 token giriş bağlamı. Maksimum çıktı 163.840 token'dır. Uzun ajanik çalıştırmalar için, modelin çıktısının görev ortasında kesilmesini önlemek amacıyla max_tokens'ı büyük bir değere (32.768 veya daha yüksek) ayarlayın.

GLM-5.1'i fonksiyon çağırma / araç kullanımı için kullanabilir miyim?Evet. GLM-5.1, OpenAI API'si ile aynı araç çağırma formatını destekler. Araçları type: "function" şemasıyla tanımlayın, bunları tools dizisinde geçirin ve ajan döngünüzdeki finish_reason: "tool_calls" yanıtlarını işleyin.

Kota harcamadan GLM-5.1 API çağrılarını nasıl test ederim?Her API durumu için sahte yanıtlar tanımlamak için Apidog'un Akıllı Sahte özelliğini kullanın: başarı, araç çağrıları, hız sınırları, hatalar. Geliştirme sırasında test paketinizi sahteye karşı çalıştırın ve yalnızca son doğrulama için gerçek API'yi kullanın.

GLM-5.1 model ağırlıklarını nerede bulabilirim?Açık kaynak ağırlıklar HuggingFace'te zai-org/GLM-5.1 adresinde bulunmaktadır. MIT Lisansı altında yayınlanmıştır ve yerel çıkarım için vLLM ve SGLang'i destekler.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin