Agent iş akışları · 2026-10-12
Alice AI LLM Flash ile araç çağıran ajan: tools, tool_calls ve döngü
yandex/alice-ai-llm-flash ile OpenAI tools biçiminde araç çağıran ajan döngüsü: tool_calls okumak, role tool mesajı, adım sınırı ve tur başına maliyet.
Kısa yanıt: OpenAI tools biçimi ve tool_calls kalmayana kadar dönen bir döngü
LLMTR (llmtr.com), Türkiye'de ve global sağlayıcılarda barındırılan dil modellerine tek, OpenAI uyumlu API'den erişim veren bir gateway'dir. Alice AI LLM Flash'ı araç çağıran bir ajanda yandex/alice-ai-llm-flash kimliğiyle, https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktası üzerinden kullanırsınız. Araçlar OpenAI biçimindeki tools dizisiyle tanımlanır. Model bir araç çağırmak istediğinde yanıtın message.tool_calls alanı dolu gelir; aracı siz çalıştırır, sonucu role tool mesajıyla geri gönderirsiniz.
LLMTR kataloğu Flash'ı ajan senaryoları ve araç kullanan asistanlar için ayarlanmış hızlı bir model olarak tanımlar. Bağlam penceresi 65.536 token'dır. 1M token başına fiyatlar: girdi 0,819672 $, önbellekten okunan girdi 0,204918 $, çıktı 1,639344 $.
Alice AI LLM Flash ile araç çağıran bir ajan nasıl kurulur?
Aşağıdaki Python döngüsü OpenAI SDK'sıyla tek bir araç tanımlar: sipariş numarasıyla siparişin durumunu döndüren get_order_status. Her turda istek messages ve tools ile gönderilir. Yanıtta tool_calls yoksa model doğrudan cevap vermiştir; döngü message.content'i yazdırıp biter.
tool_calls doluysa döngü asistan mesajını olduğu gibi geçmişe ekler, ardından listedeki her çağrı için function.arguments alanındaki JSON metnini çözer, aracı çalıştırır ve sonucu role tool mesajı olarak ekler. Bu mesajın tool_call_id alanı, çağrının id değerinin aynen kopyasıdır; değerin belirli bir biçimde olduğunu varsaymayın. Sonraki istek yeni geçmişi taşır ve model son cevabı araç sonucuna göre yazar.
Döngüye bir adım sınırı koyun (örnekte MAX_STEPS = 5). Model her turda yeniden araç çağırırsa sınıra gelindiğinde döngü durur ve uygulama kendi yedek cevabını verir.
OpenAI Python SDK ile get_order_status aracını tanımlayan, tool_calls kalmayana kadar dönen ve adım sınırı olan ajan döngüsü.
import json
import os
from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])
def get_order_status(order_id: str) -> dict:
# Replace with a call to your own order system.
return {"order_id": order_id, "status": "shipped"}
tools = [{
"type": "function",
"function": {
"name": "get_order_status",
"description": "Returns the current status of an order by its order number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string", "description": "Order number"}},
"required": ["order_id"],
},
},
}]
messages = [
{"role": "system", "content": "You are a store support assistant. "
"Use get_order_status for questions about an order."},
{"role": "user", "content": "Where is order 4417?"},
]
MAX_STEPS = 5
for step in range(MAX_STEPS):
response = client.chat.completions.create(
model="yandex/alice-ai-llm-flash",
messages=messages,
tools=tools,
max_tokens=1024,
)
message = response.choices[0].message
if not message.tool_calls:
# No tool call: the model answered directly.
print(message.content)
break
messages.append(message.model_dump(exclude_none=True))
for call in message.tool_calls:
args = json.loads(call.function.arguments)
messages.append({
"role": "tool",
"tool_call_id": call.id, # copied exactly as returned
"content": json.dumps(get_order_status(**args)),
})
else:
print("Stopped after", MAX_STEPS, "steps without a final answer.")
Döngüde her mesaj ne taşır?
Araç döngüsünde geçmiş birkaç tür mesajdan oluşur ve sıra önemlidir: asistanın araç çağrısı mesajı, ona cevap veren role tool mesajından önce gelir. tools dizisi bir mesaj değildir; her istekte messages ile birlikte ayrı bir alan olarak gönderilir.
| Mesaj | role | Taşıdığı alanlar | Ne zaman eklenir |
|---|---|---|---|
| Sistem istemi | system | content: ajanın talimatı ve aracın ne zaman kullanılacağı | En başta, her istekte aynı metinle |
| Kullanıcı sorusu | user | content: kullanıcının isteği | Sistem isteminden sonra |
| Araç çağrısı | assistant | tool_calls: her öğede id, function.name ve JSON metni olarak function.arguments | Model araç çağırdığında, olduğu gibi |
| Araç sonucu | tool | tool_call_id: çağrının id değeri, aynen; content: aracın sonucu | Her araç çağrısından sonra |
| Son cevap | assistant | content: kullanıcıya gidecek metin; tool_calls yok | Döngü burada biter |
Model araç çağırmazsa
Yandex'in fonksiyon çağırma sayfası, isteğe tools alanını eklemenin modelin bir aracı gerçekten çağıracağı anlamına gelmediğini belirtir. Döngü bu durumu hata olarak değil, olağan bir sonuç olarak işlemelidir: tool_calls boşsa message.content son cevaptır.
Aracın kullanılması gereken bir akışta, örnekteki gibi, sistem isteminde aracın hangi durumda çağrılacağını açıkça yazın. Cevap mutlaka bir araç sonucuna dayanmalıysa, çağrı gelmediğinde bunu uygulamanızda kontrol edip kullanıcıya kendi mesajınızı gösterin.
İki turluk bir döngünün maliyeti
Her tur ayrı bir istektir ve kendi girdi ve çıktı token'larıyla faturalanır. İkinci turun girdisi büyür, çünkü geçmiş artık araç çağrısını ve sonucunu da taşır.
Örnek: ilk tur 1.200 girdi ve 60 çıktı token'ı (araç çağrısı), ikinci tur 1.350 girdi ve 150 çıktı token'ı (son cevap) olsun. İlk tur 0,001082 $, ikinci tur 0,001352 $ tutar; toplam 2.550 girdi ve 210 çıktı token'ı için 0,002434 $.
İkinci tur, ilk turun mesajlarıyla aynı başladığı için bu tekrarlanan baş Flash'ın önbelleğinden okunabilir; okunan token'lar 0,204918 $ fiyatından faturalanır. İsabet garanti olmadığından örnek hesap önbelleksiz yapılmıştır. LLMTR'deki 1M token fiyatları Yandex'in yayımladığı USD liste fiyatlarıyla aynıdır (2026-10-12'de kontrol edildi). Bu modelin fiyatına marj eklenmez; LLMTR'nin %8 platform payı yalnızca kredi yüklerken alınır.
Sınırlar ve LLMTR'de başlamak
Alice AI LLM Flash yalnızca metin kabul eder; görsel içeren istek 400 unsupported_input ile reddedilir ve ücretlendirilmez. reasoning_effort gönderilen istek 400 invalid_request döndürür. finish_reason değeri length olan yanıt kesilmiştir; max_tokens değerini artırıp o turu yeniden gönderin.
Başlamak için llmtr.com'da hesap açın ve ön ödemeli kredi yükleyin, Dashboard > API Anahtarları altında bir anahtar oluşturun ve SDK'da base_url olarak https://llmtr.com/v1 kullanın. Ham anahtar yalnızca bir kez gösterilir; LLMTR_API_KEY gibi bir ortam değişkeninde saklayın. Aynı anahtar katalogdaki her modelde çalışır.
Alice AI LLM Flash ile araç çağıran ajana başlamak
Hesap açın, anahtar oluşturun ve yandex/alice-ai-llm-flash'a tools dizisiyle ilk isteği gönderin.
- Hesap ve kredi. llmtr.com'da hesap açın ve ön ödemeli kredi yükleyin.
- API anahtarı. Dashboard > API Anahtarları altında bir anahtar oluşturun. Ham anahtar bir kez gösterilir; LLMTR_API_KEY ortam değişkeninde saklayın.
- İlk istek. SDK'da base_url olarak https://llmtr.com/v1, model olarak yandex/alice-ai-llm-flash verin ve tools dizisiyle ilk isteği gönderin.
Sık sorulan sorular
tools gönderince Alice AI LLM Flash her zaman araç çağırır mı?
Hayır. Yandex'in fonksiyon çağırma sayfasına göre tools alanı modelin bir aracı çağıracağı anlamına gelmez. Yanıtta tool_calls yoksa message.content'i son cevap olarak işleyin ve döngüyü bitirin.
tool_call_id değerini nereden alırım?
Modelin döndürdüğü tool_calls öğesinin id alanından. Değeri değiştirmeden role tool mesajının tool_call_id alanına kopyalayın; belirli bir biçimde olduğunu varsaymayın.
Araç çağıran bir ajanın maliyeti nasıl hesaplanır?
Her tur ayrı bir istek olarak girdi ve çıktı token'larıyla faturalanır. 1.200 girdi + 60 çıktı ve 1.350 girdi + 150 çıktı token'lı iki tur, toplam 2.550 girdi ve 210 çıktı token'ı için 0,002434 $ tutar.