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

Jais 3 ile araç çağıran Arapça ajan: OpenAI tools döngüsü

ifm/jais-3-mova-36b-a4b ile Arapça konuşan ve araç çağıran bir ajan kurun: tool_choice auto, iki turlu döngü ve hata durumları, Python örneğiyle.

Basit şema: bir ajan https://llmtr.com/v1 üzerindeki ifm/jais-3-mova-36b-a4b'ye istek gönderir, model get_order_status aracını çağırır, araç sonucu geri döner ve ajan son cevabı alır.

Kısa yanıt: araçları tool_choice auto ile verin

LLMTR, farklı sağlayıcıların dil modellerine tek bir OpenAI uyumlu API ile erişim veren bir gateway'dir. Jais 3'ü ifm/jais-3-mova-36b-a4b kimliğiyle https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağırır, araçları OpenAI biçiminde tools alanında tanımlarsınız. Model bir aracı çağırmaya karar verdiğinde yanıtta tool_calls döner; aracı siz çalıştırır, sonucu tool mesajıyla geri gönderirsiniz.

IFM, model kartında Jais 3'ün Arapça ve İngilizce asistan ve ajan uygulamaları için tasarlandığını yazar. LLMTR'de bu satırda yalnızca tool_choice auto çalışır. required, adlandırılmış bir fonksiyon ve araçlar ekliyken none, istek modele gitmeden 400 ile reddedilir; hata mesajı kullanılacak biçimi söyler.

Jais 3 ile araç çağıran bir Arapça ajan nasıl kurulur?

Aşağıdaki Python örneği bir sipariş durumu aracı tanımlar. Kullanıcı Arapça olarak siparişini sorar; model get_order_status aracını order_id ile çağırır, örnek aracı çalıştırır ve sonucu tool mesajı olarak geçmişe ekler. İkinci istekte model sonucu okuyup Arapça cevap verir. Döngü en fazla dört tur döner, böylece yanlış giden bir konuşma sonsuza kadar sürmez.

Asistanın tool_calls taşıyan mesajını geçmişe olduğu gibi ekleyin, ardından her çağrı için tool_call_id değerini taşıyan bir tool mesajı gönderin. Önceki asistan mesajlarında reasoning_content alanını geri göndermeniz gerekmez. Modelin ürettiği argümanlar bir JSON dizesidir; örnek bunu ayrıştırırken oluşabilecek hatayı yakalar ve hatayı da araç sonucu olarak modele bildirir.

Model varsayılan olarak her turda yanıttan önce düşünür ve düşünme token'ları max_tokens sınırına sayılır. Örnek bu yüzden 4.096 token verir. Bir tur finish_reason length ile biterse sınırı yükseltin.

ifm/jais-3-mova-36b-a4b ile get_order_status aracını tool_choice auto üzerinden çağıran, araç sonucunu tool mesajıyla geri gönderen ve en fazla dört tur dönen OpenAI Python SDK 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"])
MODEL = "ifm/jais-3-mova-36b-a4b"

TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "get_order_status",
            "description": "Return the shipping status of an order by its number.",
            "parameters": {
                "type": "object",
                "properties": {"order_id": {"type": "string"}},
                "required": ["order_id"],
            },
        },
    }
]


def get_order_status(order_id: str) -> dict:
    # Replace with your own order system.
    return {"order_id": order_id, "status": "shipped", "eta": "2026-10-21"}


messages = [
    {"role": "system", "content": "أنت مساعد خدمة عملاء. أجب بالعربية."},
    {"role": "user", "content": "أين طلبي رقم 1042؟"},
]

for _ in range(4):
    response = client.chat.completions.create(
        model=MODEL, messages=messages, tools=TOOLS, tool_choice="auto", max_tokens=4096
    )
    message = response.choices[0].message
    if not message.tool_calls:
        print(message.content)
        break
    messages.append(
        {
            "role": "assistant",
            "content": message.content,
            "tool_calls": [call.model_dump() for call in message.tool_calls],
        }
    )
    for call in message.tool_calls:
        try:
            result = get_order_status(**json.loads(call.function.arguments))
        except (json.JSONDecodeError, TypeError) as err:
            result = {"error": str(err)}
        messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})

Jais 3'te hangi tool_choice biçimleri çalışır?

Tablo bu satırda LLMTR'nin tool_choice değerlerine verdiği cevabı gösterir. Belirli bir aracın çağrılmasını istiyorsanız tool_choice auto kullanın ve bunu sistem isteminde söyleyin; yanıtta tool_calls olup olmadığını kodunuzda kontrol edin. Araç kullanımını kapatmak için tools alanını hiç göndermeyin.

LLMTR'de ifm/jais-3-mova-36b-a4b için tool_choice, 17 Ekim 2026 itibarıyla
tool_choiceSonuç
auto (veya alan yok)Desteklenir; model aracı çağırıp çağırmamaya kendisi karar verir
required400 invalid_request; auto kullanın
Adlandırılmış fonksiyon400 invalid_request; auto kullanın
none (araçlar ekliyken)400 unsupported_input; tools alanını göndermeyin

Döngüyü sağlam tutmak

Tur sayısını sınırlayın: model bir aracı tekrar tekrar çağırırsa döngü sizin koyduğunuz sınırda durur. Araç sonuçlarını kısa ve JSON olarak verin; modelin okuyacağı tek şey bu metindir. Araç bir hata dönerse bunu da sonuç olarak verin, böylece model kullanıcıya ne olduğunu söyleyebilir.

Aracın çağrılması zorunlu olan adımlar varsa, örneğin her cevaptan önce bir veritabanı sorgusu gerekiyorsa, bu adımı modelden beklemek yerine kodunuzda çalıştırıp sonucu isteme ekleyin. Zorunlu araç çağrısı gereken işlerde aynı üreticinin ifm/k2-horizon-375b-a23b modeli required ve adlandırılmış fonksiyonu destekler.

Araç tanımları da istemin parçasıdır ve her turda yeniden gönderilir. Uzun açıklamalar yerine kısa, net parametre adları kullanın.

Ajanı test etmek ve hataları ele almak

Araç fonksiyonlarını modelden ayrı test edin: get_order_status gibi bir fonksiyonun sabit girdilerle doğru sonucu döndürdüğünü birim testle doğrulayın. Ardından döngüyü birkaç tipik Arapça soruyla çalıştırın ve modelin hangi soruda aracı çağırdığını, hangisinde doğrudan cevap verdiğini kaydedin. Aracın çağrılmadığı bir soruda cevap uydurulmuşsa sistem istemine aracın ne zaman kullanılacağını daha açık yazın.

Döngü içinde 429 alırsanız iki durumu ayırın. Retry-After birkaç saniyeyse kısa süreli istek sınırına takılmışsınızdır; o kadar bekleyip aynı isteği tekrarlayın. Retry-After saatlerle ölçülüyorsa günlük hak dolmuştur; döngüyü durdurup kullanıcıya bildirin. 400 hatası isteğin biçimiyle ilgilidir; mesajı kaydedip isteği düzeltmeden tekrarlamayın.

Her turun usage değerlerini ve finish_reason'ı kaydetmek, hangi turun ne kadar token harcadığını ve bir cevabın sınırda kesilip kesilmediğini sonradan görmenizi sağlar.

Ücretsiz dönem, günlük hak ve veri notu

Satır 5 Kasım 2026 23:59'a (TSİ) kadar ücretsizdir ve her hesabın bu model için günde 200.000 token hakkı vardır, yeni açılan hesaplar ilk gün daha düşük bir hakla başlar; girdi ve çıktı birlikte sayılır. Ajan döngülerinde her tur geçmişin tamamını yeniden gönderdiği için hak tek tek sorulara göre daha hızlı tükenir; her yanıttaki usage.total_tokens değerlerini toplayarak harcamayı izleyin. Hak dolduğunda API 429 döner ve Retry-After başlığı ne zaman yeniden deneyebileceğinizi söyler; hak her gün 00:00'da (TSİ) yenilenir. 6 Kasım 2026 00:00'dan itibaren model 410 model_retired döner.

LLMTR'deki model sayfasının veri notuna göre istemler ve tamamlamalar sağlayıcı tarafından günlüğe kaydedilebilir ve modeli geliştirmek için kullanılabilir. Araç sonuçları da istemin parçasıdır: müşteri adı, adres ya da kart bilgisi gibi verileri araç sonucuna koymayın.

Jais 3 ile araç çağıran bir Arapça ajan kurma

Aracı OpenAI biçiminde tanımlayın, tool_choice auto ile isteği gönderin ve araç sonucunu tool mesajıyla geri verin.

  1. Aracı tanımlama. tools alanında aracın adını, açıklamasını ve JSON Schema parametrelerini OpenAI biçiminde yazın.
  2. İlk istek. ifm/jais-3-mova-36b-a4b'ye tool_choice auto ile Arapça soruyu gönderin ve yanıtta tool_calls olup olmadığını kontrol edin.
  3. Sonucu geri verme. Aracı çalıştırın, sonucu tool_call_id ile bir tool mesajı olarak ekleyin ve modelin Arapça cevabını almak için isteği tekrarlayın.

Sık sorulan sorular

Jais 3 araç çağırmayı destekliyor mu?

Evet. LLMTR'de ifm/jais-3-mova-36b-a4b OpenAI biçiminde araç çağırır. tool_choice auto kullanılır; required, adlandırılmış fonksiyon ve araçlarla birlikte none 400 döner.

Jais 3'te belirli bir aracı zorlayabilir miyim?

Hayır. tool_choice ile zorlama bu modelde reddedilir. Aracın gerekliliğini sistem isteminde söyleyin ya da zorunlu adımı kendi kodunuzda çalıştırın. Zorunlu araç çağrısı gerekiyorsa ifm/k2-horizon-375b-a23b required ve adlandırılmış fonksiyonu destekler.

Geçmişe reasoning_content eklemem gerekiyor mu?

Hayır. Önceki asistan mesajlarını content ve varsa tool_calls ile eklemeniz yeterlidir; reasoning_content alanını geri göndermeniz gerekmez.

İlgili yazılar