DEV Community

Cover image for GLM-5.1 API Kullanımı: Kod Örnekleriyle Tam Kılavuz
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

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

ÖZET

GLM-5.1'e BigModel API üzerinden https://open.bigmodel.cn/api/paas/v4/ adresinden erişebilirsiniz. API, OpenAI ile tamamen uyumludur: aynı uç nokta yapısı, istek formatı ve akış paterni. Bir BigModel hesabı, API anahtarı ve glm-5.1 model adına ihtiyacınız var. Bu rehberde kimlik doğrulama, ilk API çağrısı, akışlı cevaplar, araç çağırma ve Apidog ile entegrasyon testi adım adım anlatılmaktadır.

Apidog'u bugün deneyin

GLM-5.1 API şeması

Giriş

GLM-5.1, Z.AI'nin amiral gemisi ajan modeli Nisan 2026'da piyasaya sürüldü. SWE-Bench Pro'da 1 numarada yer alır ve tüm büyük kodlama kıyaslamalarında GLM-5’in önündedir. Eğer bir yapay zeka kodlama asistanı, özerk ajan veya uzun vadeli görevler yürüten bir uygulama geliştiriyorsanız GLM-5.1'i entegre etmek mantıklıdır.

Geliştiriciler için avantaj: API, OpenAI ile uyumludur. GPT-4 veya Claude ile çalıştıysanız sadece temel URL ve model adını değiştirerek GLM-5.1'e geçebilirsiniz. Yeni bir SDK öğrenmenize veya farklı bir yanıt formatıyla uğraşmanıza gerek yok.

💡 Ajan API’lerinde en büyük zorluk: Test. Yüzlerce araç çağrısını çalıştırmak ve gerçek API'ye karşı test yapmak kota tüketir. Apidog’un Test Senaryoları ile ajanınızın yaptığı istekleri sıralayabilir, her durum için yanıtları taklit edebilir ve entegrasyonunuzun akış, araç çağrıları ve hata koşullarını üretimden önce doğrulayabilirsiniz. Test bölümünü uygulamak için Apidog’u ücretsiz indirebilirsiniz.

Önkoşullar

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

  1. bigmodel.cn üzerinde BigModel hesabı (ücretsiz kayıt).
  2. BigModel konsolunda API anahtarı (API Keys altından alınır).
  3. Python 3.8+ veya Node.js 18+ (örnekler ikisini de kapsar).
  4. OpenAI SDK veya standart requests/fetch (API, OpenAI ile uyumludur).

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

export BIGMODEL_API_KEY="your_api_key_here"
Enter fullscreen mode Exit fullscreen mode

API anahtarlarını kaynak koduna sabit yazmayın.

Kimlik Doğrulama

Her istek şu başlığı içerir:

Authorization: Bearer YOUR_API_KEY
Enter fullscreen mode Exit fullscreen mode

BigModel API anahtarı, iki parçalı bir dizedir: xxxxxxxx.xxxxxxxxxxxxxxxx. OpenAI'nin sk- formatından farklıdır ama başlıkta aynı şekilde kullanılır.

Temel URL

https://open.bigmodel.cn/api/paas/v4/
Enter fullscreen mode Exit fullscreen mode

Sohbet tamamlamaları uç noktası:

POST https://open.bigmodel.cn/api/paas/v4/chat/completions
Enter fullscreen mode Exit fullscreen mode

İlk İsteğ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
  }'
Enter fullscreen mode Exit fullscreen mode

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"])
Enter fullscreen mode Exit fullscreen mode

OpenAI SDK Kullanımı (Önerilir)

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)
Enter fullscreen mode Exit fullscreen mode

OpenAI SDK ile yeniden deneme, zaman aşımı ve yanıt ayrıştırma ücretsiz şekilde gelir. Tek yapmanız gereken BigModel temel URL’sini tanımlamaktır.

Yanıt Formatı

Yanıt yapısı OpenAI ile 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
  }
}
Enter fullscreen mode Exit fullscreen mode

Yanıt metnine result["choices"][0]["message"]["content"] ile erişin.

usage alanı token sayılarını gösterir. GLM-5.1, zirve saatlerde (14:00-18:00 UTC+8) 3 kat kota kullanır; bu nedenle kota tüketiminizi izleyin.

Akışlı Yanıtlar

Uzun kod üretimi için akış, yanıtı beklemeden token'ları gelirse gösterir. Kullanıcıya dönük uygulamalar için önerilir.

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
Enter fullscreen mode Exit fullscreen mode

Her parça, son parçadan bu yana yeni token’ları getirir. Son parçada finish_reason "stop" (veya token limitine ulaşırsanız "length") olur.

Ham İsteklerle Akış

OpenAI SDK kullanmazsanı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)
Enter fullscreen mode Exit fullscreen mode

Araç Çağırma

GLM-5.1, OpenAI ile aynı araç çağırma (function calling) formatını destekler. Konuşma sırasında fonksiyon yürütme istekleri göndermek için kullanılı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}")
Enter fullscreen mode Exit fullscreen mode

Araç Çağırma Yanıtlarını İşleme

Model araç çağırdığında, fonksiyonu yürütüp sonucu bir sonraki mesajda döndürmelisiniz:

import subprocess

def execute_tool(tool_call):
    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):
    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":
            return message.content

        if response.choices[0].finish_reason == "tool_calls":
            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)
Enter fullscreen mode Exit fullscreen mode

Bu desen, GLM-5.1’in ajanik model olarak tam potansiyelini kullanır. Modelin araçları ne zaman çağıracağına, sonuçları işleyip bir çözüme ulaşana 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 Üretecek maksimum token (163.840'a kadar)
temperature float 0.95 Rastgelelik. 0.0-1.0 arası
top_p float 0.7 Çekirdek örnekleme. Kodlama için 0.7 önerilir
stream boolean false Akışlı yanıtlar için true
tools dizi null Araç fonksiyon tanımları
tool_choice string/object "auto" "auto", "none" veya spesifik 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
}
Enter fullscreen mode Exit fullscreen mode

Deterministik kod üretimi için temperature değerini 0.2-0.4'e çekin.

GLM-5.1'i Kodlama Asistanları ile Kullanma

Z.AI Kodlama Planı, Claude Code, Cline, Kilo Code gibi AI kodlama asistanlarını BigModel API üzerinden GLM-5.1 ile çalıştırmanızı sağlar. Güçlü bir kodlama modeli kullanmak isteyenler için faydalıdır.

Claude Code Kurulumu

Konfigürasyon dosyanızda (~/.claude/settings.json):

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

Cline / Roo Code Kurulumu

VS Code ayarlarında veya Cline uzantı konfigürasyonunda:

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

Kota Tüketimi

GLM-5.1, Z.AI kota sistemiyle çalışı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: zirve dışı saatlerde 1 kat kota

Uzun süreli görevleri zirve dışı saatlere planlayarak kota maliyetinizi düşürün.

GLM-5.1 API’sini Apidog ile Test Etme

Bir ajanik API entegrasyonunu test etmek için birçok yanıt türünü (tamamlama, akış, araç çağrısı, hata) işlemeniz gerekir. Gerçek API'ye karşı test kota tüketir.

Apidog Akıllı Sahte arayüzü

Apidog’un Akıllı Sahte (Smart Mock) özelliğiyle tüm bu yanıtları tanımlayın, kota harcamadan test edin.

Sahte Uç Nokta Kurulumu

  1. Apidog’da yeni bir uç nokta oluşturun: POST https://open.bigmodel.cn/api/paas/v4/chat/completions
  2. Başarı yanıtı için bir Sahte Beklenti 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
     }
   }
Enter fullscreen mode Exit fullscreen mode
  1. Araç çağrısı yanıtı için ikinci bir beklenti:
   {
     "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
     }
   }
Enter fullscreen mode Exit fullscreen mode
  1. Hız sınırı (HTTP 429) yanıtı:
   {
     "error": {
       "message": "Rate limit exceeded. Please retry after 60 seconds.",
       "type": "rate_limit_error",
       "code": "rate_limit_exceeded"
     }
   }
Enter fullscreen mode Exit fullscreen mode

Tam Ajan Döngüsü Testi

Apidog’un Test Senaryoları ile zincirleme testler kurabilirsiniz:

  1. Adım 1: Başlangıç mesajı ile /chat/completions'a POST yapın, 200 ve finish_reason == "tool_calls" doğrulayın.
  2. Adım 2: Araç sonucuyla tekrar POST yapın, 200 ve finish_reason == "stop" doğrulayın.
  3. Adım 3: Son içeriği çıkarın ve beklenen kodu içerdiğini kontrol edin.

Bu şekilde kota harcamadan tam ajan döngüsünü test edebilirsiniz. Sahteyi 429 döndürecek şekilde değiştirerek hata işlemeyi de sınayabilirsiniz.

Çok adımlı iş akışlarında, Apidog Test Senaryoları sayesinde adımlar arası veri aktarımı otomatik gerçekleşir (request_id, tool_call_id gibi değerler). Bu, gerçek bir ajan döngüsünü simüle eder ve entegrasyon hatalarını canlıya çıkmadan yakalamanızı sağlar.

Hata Yönetimi

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

Durum Anlamı Eylem
200 Başarılı Yanıtı 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ığı kadar bekleyip tekrar deneyin
500 Sunucu hatası Üstel geri çekilme ile tekrar deneyin
503 Servis kullanımda Üstel geri çekilme ile tekrar deneyin

Otomatik tekrar ve zaman aşımı için örnek kod:

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")
Enter fullscreen mode Exit fullscreen mode

Uzun ajanik çalıştırmalarda zaman aşımını 120-300 saniye gibi cömert bir değere ayarlayın. Modelin tam kod dosyası üretmesi veya karmaşık analiz yapması zaman alabilir.

Sonuç

GLM-5.1’in OpenAI ile uyumlu API’si, GPT veya Claude ile çalıştıysanız hızlı entegrasyon sağlar. Temel farklılıklar: uç nokta (open.bigmodel.cn) ve kota bazlı faturalandırma sistemidir.

Uzun oturumlu, çok adımlı ve araç kullanan ajanik uygulamalar için GLM-5.1’in optimizasyon kapasitesi büyük avantaj sunar. Entegrasyonunuzun tüm durumlarını üretime çıkmadan önce Apidog’un Akıllı Sahte ve Test Senaryoları ile detaylıca test edin.

GLM-5.1’in detayları ve karşılaştırması için GLM-5.1 model genel bakışına bakabilirsiniz. Apidog ile AI ajan iş akışları oluşturma ve test etme hakkında daha fazla bilgi için AI ajan belleği nasıl çalışır yazısını inceleyin.

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 tamamlamaları API’siyle tamamen aynıdır. Temel URL’yi https://open.bigmodel.cn/api/paas/v4/ olarak ayarlayarak resmi OpenAI Python SDK’sı veya herhangi bir OpenAI uyumlu istemciyle kullanabilirsiniz.

API isteklerinde kullanılacak model adı nedir?

Sadece "glm-5.1" kullanın.

GLM-5.1 API fiyatlandırması nasıl çalışır?

BigModel API kota ile çalışır. GLM-5.1, zirve saatlerinde (14:00-18:00 UTC+8) 3 kat, zirve dışı saatlerde 2 kat kota tüketir. Nisan 2026 sonuna kadar promosyon ile zirve dışı kullanımda 1 kat kota kullanılır.

Maksimum bağlam uzunluğu nedir?

200.000 token giriş bağlamı, maksimum çıktı 163.840 token’dır. Uzun çalışmalar için max_tokens’ı yüksek ayarlayın.

GLM-5.1’i fonksiyon çağırma/araç kullanımı için kullanabilir miyim?

Evet. OpenAI ile aynı araç çağırma formatı desteklenir. Araçları type: "function" şemasıyla tanımlayın, tools dizisine ekleyin ve 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 Apidog’un Akıllı Sahte özelliğiyle yanıtlar tanımlayın. Test paketinizi sahteye karşı çalıştırın, sadece 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. MIT Lisansı altında yayınlanmıştır ve vLLM, SGLang ile yerel çıkarım desteklenir.

Top comments (0)