Agent iş akışları · 2026-10-10

Mistral Large 4 ile araç çağıran ajan: tool_choice ve düşünme izi

mistral/mistral-large-4 ile araç çağıran ajan döngüsü: tool_choice seçenekleri, required yerine adlı fonksiyon ve reasoning_content'in geri gönderilmesi.

Şema: mistral/mistral-large-4 modeli ile uygulamanın araçları arasında https://llmtr.com/v1 üzerinden giden araç çağrısı ve geri dönen araç sonucu döngüsü.

Kısa yanıt: araç çağırır, ama tool_choice required yoktur

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. Mistral Large 4'ü araç çağıran bir ajanda mistral/mistral-large-4 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 çağrıyı tool_calls alanında döndürür, siz de sonucu role: "tool" mesajıyla geri verirsiniz.

Mistral, Large 4'ü kodlama ve ajan iş akışları için konumlar. Ajan kurarken üç şeyi bilmek gerekir: tool_choice için auto, none ve adı verilen fonksiyon çalışır, required çalışmaz; model tek yanıtta birden fazla araç çağırabilir; önceki asistan mesajları reasoning_content alanıyla birlikte geri gönderilmelidir.

Mistral Large 4 ile araç çağıran bir ajan nasıl kurulur?

Aşağıdaki Python döngüsü OpenAI SDK'sıyla bir sipariş sorgulama aracı tanımlar. Her turda asistan mesajı model_dump(exclude_none=True) ile olduğu gibi geçmişe eklenir; böylece reasoning_content alanı da korunur. Model araç çağırmadıysa döngü cevabı yazdırıp biter. Çağırdıysa her tool_calls öğesi için aracı çalıştırır ve sonucu tool_call_id ile birlikte role: "tool" mesajı olarak ekler.

Döngüye bir tur sınırı koyun (örnekte 5) ve max_tokens değerini birkaç bin token tutun. Düşünme varsayılan olarak açıktır; düşünme token'ları max_tokens bütçesinden harcanır ve çıktı fiyatından faturalanır. finish_reason değeri length olan yanıt tamamlanmamıştır; bütçeyi artırıp o turu tekrarlayın.

OpenAI Python SDK ile lookup_order aracını kullanan, asistan mesajlarını reasoning_content ile birlikte geçmişte tutan ajan döngüsü.

import json
from openai import OpenAI

client = OpenAI(base_url="https://llmtr.com/v1", api_key="llmtr-your_key")

def lookup_order(order_id: str) -> dict:
    return {"order_id": order_id, "status": "shipped"}

tools = [{
    "type": "function",
    "function": {
        "name": "lookup_order",
        "description": "Fetches an order by its order number",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]

messages = [{"role": "user", "content": "Where are orders 4417 and 4418?"}]
for _ in range(5):
    response = client.chat.completions.create(
        model="mistral/mistral-large-4",
        messages=messages,
        tools=tools,
        tool_choice="auto",
        max_tokens=4096,
    )
    message = response.choices[0].message
    # Keep reasoning_content: the model reads its earlier reasoning from it.
    messages.append(message.model_dump(exclude_none=True))
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        args = json.loads(call.function.arguments)
        messages.append({
            "role": "tool",
            "tool_call_id": call.id,
            "content": json.dumps(lookup_order(**args)),
        })

tool_choice: auto, none, adlı fonksiyon ve required

auto, aracı çağırıp çağırmayacağına modelin karar vermesidir ve birden fazla aracınız varsa çoğu turda doğru seçimdir; istemde hangi aracın ne zaman kullanılacağını açıkça yazın. none araç çağrısını kapatır. Bir aracı zorunlu kılmak için fonksiyonu adıyla verin. Aşağıdaki curl isteği lookup_order fonksiyonunu adıyla zorunlu kılar ve düşünmeyi kapatır.

tool_choice: "required" bu modelde yoktur: istek 400 invalid_request ile reddedilir ve error.details.reason alanı tool_choice_required_unsupported değerini taşır. required kullanan bir ajanı Large 4'e taşırken tek araç varsa fonksiyon adını, birden çok araç varsa auto ile istemdeki talimatı kullanın.

mistral/mistral-large-4'te tool_choice değerleri (2026-10-10 tarihinde kontrol edildi)
tool_choiceSonuç
autoModel aracı çağırıp çağırmayacağına kendisi karar verir
noneAraç çağrılmaz, model metinle cevap verir
{"type": "function", "function": {"name": "lookup_order"}}Adı verilen fonksiyon çağrılır
required400 invalid_request, error.details.reason: tool_choice_required_unsupported

lookup_order fonksiyonunu adıyla zorunlu kılan ve reasoning_effort none gönderen curl isteği.

curl https://llmtr.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMTR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral/mistral-large-4",
    "reasoning_effort": "none",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "Fetch order 4417."}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "lookup_order",
        "description": "Fetches an order by its order number",
        "parameters": {
          "type": "object",
          "properties": {"order_id": {"type": "string"}},
          "required": ["order_id"]
        }
      }
    }],
    "tool_choice": {"type": "function", "function": {"name": "lookup_order"}}
  }'

Paralel araç çağrıları ve araç sonuçları

Model tek yanıtta birden fazla araç çağrısı döndürebilir; örnekteki iki siparişli soru iki lookup_order çağrısı üretebilir. tool_calls dizisinin tamamını işleyin ve her sonucu kendi tool_call_id değeriyle ayrı bir role: "tool" mesajı olarak ekleyin; sonucu eksik çağrı bırakmayın. Çağrıların tek tek gelmesini istiyorsanız parallel_tool_calls: false gönderin.

Araç sonuçlarını kısa ve yapılandırılmış tutun: geçmişe eklenen her sonuç sonraki turlarda girdi token'ı olarak sayılır. Ajanın son cevabı bir şemaya uymalıysa response_format ile json_schema ve strict: true gönderebilirsiniz.

Düşünme izini geri göndermek ve turların maliyeti

Çok turlu konuşmada önceki asistan mesajlarını aldığınız gibi, reasoning_content dahil geri gönderin. Model önceki turda ne düşündüğünü bu alandan okur; araç döngülerinde turlar arası tutarlılık buna bağlıdır. Geri gönderilen düşünme girdi token'ı olarak faturalanır. Alanı silerseniz daha az token harcarsınız, ama model önceki turda neye karar verdiğini bilmez.

Örnek: 1.500 token'lık bir düşünme izi bir sonraki turda önbellekten okunmadan girdi olarak gönderilirse 20 Ekim 2026 00:00 UTC'ye kadar 1.500 x 0,68 $ / 1 milyon = 0,00102 $, o andan itibaren 1,36 $ fiyatıyla 0,00204 $ tutar. Maliyeti düşürmenin yolu izi silmek değil, düşünmeyi gereken turda açmaktır: hangi aracın çağrılacağı belli olan basit yönlendirme turlarında reasoning_effort: "none" ya da mistral/mistral-large-4:none, plan çıkarma ve sonuçları birleştirme turlarında high kullanın. Seviye her istekte ayrı seçilir.

Sınırlar ve LLMTR'de başlamak

Yanıt başına çıktı en fazla 262.144 token'dır; daha büyük bir max_tokens 400 döndürür. Bağlam penceresi 524.288 token'dır ve uzun araç geçmişleri bu pencereye sığmalıdır. temperature 0 ile 1,5 arasında olmalıdır; seed ve user alanları 422 alır. Akışta düşünme delta.reasoning_content, cevap delta.content ile gelir.

Başlamak için llmtr.com'da hesap açın, ön ödemeli kredi yükleyin ve Dashboard > API Anahtarları altında bir anahtar oluşturun; yukarıdaki döngüde base_url olarak https://llmtr.com/v1 kullanın. Her istek işlendiği andaki katalog fiyatıyla krediden düşülür; ajanın tur tur maliyetini kullanım sayfasında anahtar ve model bazında görürsünüz.

Mistral Large 4 ile araç çağıran ajan kurma

Bir araç tanımlayın, mistral/mistral-large-4 ile döngüyü kurun ve asistan mesajlarını reasoning_content ile birlikte geçmişe ekleyin.

  1. Araç tanımı. tools dizisinde fonksiyonu adı, açıklaması ve JSON Schema parametreleriyle tanımlayın.
  2. tool_choice. Birden fazla araçta auto kullanın, tek zorunlu araçta fonksiyonu adıyla verin; required göndermeyin.
  3. Döngü. Asistan mesajını reasoning_content ile geçmişe ekleyin, her tool_calls öğesinin sonucunu role tool mesajıyla ekleyin ve bir tur sınırı koyun.

Sık sorulan sorular

Mistral Large 4 tool_choice required destekliyor mu?

Hayır. tool_choice: "required" gönderilen istek 400 invalid_request döndürür ve error.details.reason alanında tool_choice_required_unsupported yazar. Bir aracı zorunlu kılmak için fonksiyonu adıyla verin.

Mistral Large 4'te reasoning_content geri gönderilmeli mi?

Evet. Çok turlu konuşmalarda ve araç döngülerinde önceki asistan mesajlarını reasoning_content dahil geri gönderin; model önceki düşünmesini oradan okur. Geri gönderilen iz girdi token'ı olarak faturalanır.

Mistral Large 4 aynı anda birden fazla araç çağırabilir mi?

Evet, tek yanıtta birden fazla tool_calls öğesi dönebilir. Hepsini işleyip sonuçlarını ayrı role: "tool" mesajlarıyla ekleyin ya da çağrıların tek tek gelmesi için parallel_tool_calls: false gönderin.

İlgili yazılar