API ve SDKKılavuz
OpenAI uyumlu bir API ile Python'da fonksiyon çağırma
Araçları gönderin, tool_calls değerlerini okuyun ve sonucu role tool ile döndürün: MiniMax-M2.7 ile Python'da iki adımlı bir fonksiyon çağırma döngüsü.

Bu sayfada
Fonksiyon çağırma (araç çağırma), bir modelin kodunuzdan bir fonksiyon çalıştırmasını istemesini sağlar. İstekle birlikte bir tools listesi gönderirsiniz, model metin yerine tool_calls ile yanıt verir, fonksiyonu kendiniz çalıştırırsınız ve sonucunu role: tool içeren bir mesajla geri gönderirsiniz. Ardından model nihai yanıtı yazar. Bu kılavuz, MiniMax-M2.7 (id MiniMaxAI/, 180K bağlam, yanıt başına en fazla 8.192 çıktı token'ı) ile OpenAI uyumlu https:/ uç noktasına karşı tüm döngüyü Python'da gösterir.
Araç çağırma, katalogdaki her model için destekleniyor olarak listelenmiştir (CheapTokens dokümanları, 22 Ekim 2026'da kontrol edildi). Bir API anahtarına ihtiyacınız var; henüz bir istek yapmadıysanız ilk API isteğiniz ile başlayın.
Fonksiyon çağırma nasıl çalışır#
Model hiçbir şeyi çalıştırmaz. Yalnızca yapılandırılmış bir istek üretir: "{\"city\": \"Paris\"} ile get_weather çağır". Programınız gerçek işi yapar ve geri bildirir. Bu, iki istekten oluşan bir döngü oluşturur:
- İstek 1. Kullanıcı mesajını ve
toolslistesini gönderirsiniz. Model ya metinle yanıt verir ya da bir veya daha fazlatool_callsdöndürür. - Kodunuz. Her çağrıyı ayrıştırır, eşleşen fonksiyonu çalıştırır ve sonucu toplarsınız.
- İstek 2. Tüm konuşmayı yeniden gönderirsiniz: orijinal mesajlar,
tool_callsiçeren asistan mesajı ve her çağrı için birrole: toolmesajı. Model, nihai yanıtı yazmak için sonuçları kullanır.
Her istek tüm geçmişi yeniden gönderir, bu nedenle araç döngüleri tek bir sorudan daha fazla giriş token'ı kullanır. Bu sizin için yeni ise, token nedir yazısını okuyun.
İstemciyi kurun#
OpenAI SDK'yı (pip install openai) kurun ve anahtarınızı kaynak kod yerine bir ortam değişkenine koyun:
export CHEAPTOKENS_API_KEY="your-key-here"Temel URL https:/'dir. Model id'sini CheapTokens dokümantasyonundan alın: farklı sağlayıcılar aynı modeli farklı adlandırır. Bu kılavuz MiniMaxAI/ kullanır.
Bir fonksiyon tanımlayın ve ilk isteği gönderin#
Bir fonksiyon tools dizisinde tanımlanır. Her girişte type: function ve name, description ve JSON Schema olarak yazılmış parameters içeren bir function nesnesi bulunur. Modelin fonksiyonu ne zaman çağıracağına karar vermek için okuduğu şey açıklamadır, bu yüzden onu kısa ve somut bir cümle olarak yazın.
Aşağıda eksiksiz bir betik var. Hava durumu fonksiyonu sahte verilerle bir saplamadır, böylece örnek ek hizmet gerektirmez:
import json
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
MODEL = 'MiniMaxAI/MiniMax-M2.7'
def get_weather(city: str) -> dict:
# Stub with fake data: replace with a real lookup
fake = {'Paris': 14, 'Tokyo': 19}
return {'city': city, 'temp_c': fake.get(city, 10)}
FUNCTIONS = {'get_weather': get_weather}
tools = [
{
'type': 'function',
'function': {
'name': 'get_weather',
'description': 'Get the current temperature in Celsius for a city.',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': 'City name, for example Paris'},
},
'required': ['city'],
},
},
}
]
messages = [{'role': 'user', 'content': 'What is the weather in Paris right now?'}]
# Step 1: the model decides whether to call a function
first = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
message = first.choices[0].message
if not message.tool_calls:
print(message.content)
raise SystemExit
# Step 2: run every requested call and send the results back
messages.append(message)
for call in message.tool_calls:
args = json.loads(call.function.arguments)
result = FUNCTIONS[call.function.name](**args)
messages.append({
'role': 'tool',
'tool_call_id': call.id,
'content': json.dumps(result),
})
final = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
print(final.choices[0].message.content)Döngünün çalışıp çalışmadığına üç ayrıntı karar verir:
call.bir JSON dizesidir, sözlük değil.function. arguments json.loadsile ayrıştırın.- Her
role: toolmesajı, yanıtladığı çağrınıntool_call_iddeğerini taşımalıdır; bu dacall.id'dur. - Bir araç mesajının
contentdeğeri bir dizedir. Yapılandırılmış sonuçlar içinjson.dumpskullanın.
Görmeniz gerekenler#
İlk istekten sonra alanları yazdırırsanız, şöyle görünürler (çağrı id'si her çalıştırmada farklıdır):
finish_reason: tool_calls
call.id: call_abc123
call.function.name: get_weather
call.function.arguments: {"city": "Paris"}Ardından betik nihai yanıtı yazdırır; "Şu anda Paris'te 14 °C." gibi düz bir cümle. İfade her çalıştırmada değişir; sayı fonksiyonunuzdan gelir.
Birden fazla çağrı ve daha uzun döngüler#
Bir model tek bir yanıtta birden fazla çağrı döndürebilir; örneğin iki şehirdeki hava durumunu sorduğunuzda. Bu nedenle örnek message. üzerinde döner ve her çağrıyı kendi id'siyle yanıtlar. OpenAI'nin fonksiyon çağırma kılavuzu da aynı davranışı açıklar: varsayılan tool_choice değeri auto iken model sıfır, bir veya birkaç fonksiyon çağırabilir (OpenAI dokümanları, 22 Ekim 2026'da kontrol edildi; sayfada son güncelleme tarihi yok ve daha yeni Responses API şeklini açıklıyor, bu kılavuz ise / uç noktasının Chat Completions şeklini kullanıyor).
Ajanlar, model araç istemeyi bırakana kadar iki adımı tekrarlar. İstekleri bir döngüye alın ve her zaman bir adım sınırı belirleyin:
for _ in range(5): # safety limit against endless loops
response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
message = response.choices[0].message
if not message.tool_calls:
print(message.content)
break
messages.append(message)
for call in message.tool_calls:
args = json.loads(call.function.arguments)
result = FUNCTIONS[call.function.name](**args)
messages.append({'role': 'tool', 'tool_call_id': call.id, 'content': json.dumps(result)})Yanıtın token token görünmesini istiyorsanız, bunu Python'da akış ile birleştirin.
MiniMax-M2.7 neden araç döngülerine uygundur#
Bir araç döngüsü, büyüyen bir geçmişle çok sayıda istek gönderir. Bu desen için CheapTokens MiniMax-M2.7 sunar: 180K bağlam, yanıt başına en fazla 8.192 çıktı token'ı, günün her saatinde yoğun saatler olmadan tek fiyat ve tüm modeller için tek bakiye. Giriş ve çıktı birlikte sayıldığında, OpenRouter'ın referans fiyatından daha ucuzdur (CheapTokens fiyat karşılaştırması, 31 Ekim 2026'da kontrol edildi).
1M token başına güncel fiyatlar: giriş $0.05, çıktı $0.15. Örnek bir iş yükü olarak (ölçüm değil), toplamda yaklaşık 2.700 giriş ve 350 çıktı token'ı içeren yukarıdaki iki isteklik gidiş-dönüş $0.00019 tutar. Tam fiyat listesi fiyatlandırma sayfasında.
Başka bir modeli denemek için yalnızca id'yi değiştirin; id listesi modeller sayfasında.
Çalışmazsa#
message.değeritool_ calls None. Model metinle yanıt verdi. Fonksiyondescriptionaçıklamasını daha belirgin yapın ve sorunun gerçekten fonksiyona ihtiyaç duyduğundan emin olun.argumentsüzerindejson.. Model geçersiz JSON üretti.JSONDecodeError json.loadsifadesinitry/exceptiçine alın ve hata metnini araç sonucu olarak geri gönderin, böylece model düzeltilmiş argümanlarla yeniden deneyebilir.- İkinci istek başarısız oluyor veya model sonucu yok sayıyor. Her çağrının eşleşen
tool_call_iddeğerine sahip tam olarak birrole: toolmesajı olduğunu vetool_callsiçeren asistan mesajının bunlardan önce geçmişte bulunduğunu kontrol edin. FUNCTIONS[...]içindeKeyError. Model, kaydetmediğiniz bir fonksiyonun adını verdi. Çökmek yerine araç sonucu olarak kısa bir hata dizesi döndürün.- Yanıt kesiliyor.
finish_reasondeğerini kontrol edin:lengthdeğeri çıktı token sınırına ulaşıldığı anlamına gelir. Bir AI yanıtı neden cümle ortasında durur yazısına bakın. - 401 veya kimlik doğrulama hataları. Anahtarın
CHEAPTOKENS_içinde olduğunu ve temel URL'ninAPI_ KEY /v1ile bittiğini kontrol edin.
Sonraki adımlar#
Saplamayı gerçek bir fonksiyonla değiştirin: bir veritabanı sorgusu, bir arama çağrısı veya bir hesap makinesi. tools ve FUNCTIONS dizilerine daha fazla giriş ekleyin ve her fonksiyon sonucunu kısa tutun, çünkü sonraki her istekte geçmişe geri gider. Bir anahtar almak ve ilk çağrıyı yapmak için CheapTokens dokümanlarını açın.



