Function calling (tool use) nasıl çalışır? Basit bir LLM agent döngüsü nasıl kurulur?

Cevap

Function calling'de geliştirici, modele kullanabileceği araçları (isim, açıklama, JSON Schema parametreleri) tanımlar. Model gerektiğinde serbest metin yerine yapılandırılmış bir araç çağrısı döndürür. Aracı model çalıştırmaz, uygulama çalıştırır ve sonucu modele geri verir. Model bu sonuçla devam eder.

Agent döngüsü

Agent, modelin bir hedefe ulaşana kadar araçları kendi seçip art arda çağırdığı bir döngüdür (ReAct yaklaşımı: düşün, aksiyon al, gözlemle, tekrarla).

tools = [{
    "name": "get_order_status",
    "description": "Sipariş numarasına göre kargo durumunu döndürür.",
    "input_schema": {"type": "object",
                     "properties": {"order_id": {"type": "string"}},
                     "required": ["order_id"]},
}]

messages = [{"role": "user", "content": "12345 numaralı siparişim nerede?"}]
for step in range(MAX_STEPS):                   # sonsuz döngüye karşı limit
    resp = llm.chat(messages=messages, tools=tools)
    messages.append(resp.message)
    if not resp.tool_calls:
        break                                   # nihai cevap
    for call in resp.tool_calls:
        try:
            result = TOOL_REGISTRY[call.name](**call.arguments)  # argümanları doğrula
        except Exception as e:
            result = {"error": str(e)}          # hatayı modele geri ver
        messages.append({"role": "tool", "tool_call_id": call.id, "content": result})

Not: Mesaj formatı sağlayıcıya göre değişir (OpenAI, Anthropic, açık modeller). Mantık aynıdır.

İyi araç tasarımı

  • Açık isimler ve ayrıntılı açıklamalar: Model aracı açıklamaya bakarak seçer.
  • Az sayıda, iyi ayrışmış araç. Benzer araçlar modeli şaşırtır.
  • Argümanları her zaman sunucu tarafında doğrulayın, modelin ürettiği girdiye güvenmeyin.
  • Hata mesajları modelin düzeltebileceği kadar açıklayıcı olsun.
  • Yıkıcı işlemler (para transferi, silme) için insan onayı.

MCP (Model Context Protocol)

MCP, araçların ve veri kaynaklarının LLM uygulamalarına standart bir protokolle sunulmasını sağlar. Function calling modelin çağrıyı nasıl ifade ettiğini tanımlar. MCP ise araçların nasıl keşfedildiğini ve farklı istemci ve sunucular arasında nasıl yeniden kullanılabildiğini standartlaştırır.

Agent'larda yaygın sorunlar

Sonsuz döngüler, yanlış araç seçimi, adımlar biriktikçe artan bağlam ve maliyet, hataların zincirleme büyümesi. Bu yüzden adım limiti, maliyet bütçesi, ayrıntılı tracing ve adım bazlı değerlendirme şarttır. Önce basit, deterministik bir workflow ile çözülebilecek bir problemi agent'a çevirmemek de iyi bir mühendislik kararıdır.

  1. RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?OrtaLLM & Üretken YZYapay Zeka
  2. Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.ZorLLM & Üretken YZYapay Zeka
  3. Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?KolayLLM & Üretken YZYapay Zeka
  4. LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?KolayLLM & Üretken YZYapay Zeka
  5. Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?OrtaLLM & Üretken YZYapay Zeka
  6. Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?ZorLLM & Üretken YZYapay Zeka

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle