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.
İlgili LLM & Üretken YZ soruları
- RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?
- Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.
- Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?
- LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?
- Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?
- Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.