Ayarlar

Dil

Çoklu Modellerle AI Ajanları Oluşturmak: Pratik Bir Mimari Rehberi

L
LemonData
·26 Şubat 2026·7 görüntüleme
#yapay zeka ajanları#çok modelli#mimari#öğretici#LangChain
Çoklu Modellerle AI Ajanları Oluşturmak: Pratik Bir Mimari Rehberi

Birden Fazla Modelle AI Ajanları Oluşturmak: Pratik Bir Mimari Rehberi

Çoğu AI ajanı her şey için tek bir model kullanır. Planlama adımı, araç çağrıları, özetleme, hata kurtarma. Bu demo için işe yarar. Üretimde ise bu israf olur.

Derin muhakeme gerektiren bir planlama adımı, JSON çıkarma adımı ile aynı modele ihtiyaç duymaz. Kod üretme görevi, sınıflandırma görevinden farklı gereksinimlere sahiptir. Claude Opus 4.6 ($25/1M çıktı token) kullanarak bir tarih dizisini formatlamak, duvar boyaması için kıdemli bir mimar tutmaya benzer.

İşte her adımı en uygun modele yönlendiren ajanlar nasıl oluşturulur.

Çok Modelli Ajan Mimarisi

Kullanıcı Talebi
    │
    ▼
┌─────────────┐
│   Yönlendirici     │  ← Görev karmaşıklığını sınıflandırır
│  (hızlı model)│
└──────┬──────┘
       │
   ┌───┴───┐
   ▼       ▼
┌──────┐ ┌──────┐
│Basit │ │Karmaşık│
│Model │ │Model  │
└──┬───┘ └──┬───┘
   │        │
   ▼        ▼
┌─────────────┐
│  Birleştirici  │  ← Sonuçları birleştirir
│  (hızlı model)│
└─────────────┘

Üç bileşen:

  1. Gelen görevleri karmaşıklıklarına göre sınıflandıran bir yönlendirici
  2. Farklı görev türlerine uygun modeller havuzu
  3. Gerekirse sonuçları birleştiren bir birleştirici

OpenAI SDK ile Uygulama

Tek bir API anahtarı kullanarak bir birleştirici üzerinden, birden fazla SDK yönetmeden tüm modellere erişebilirsiniz:

from openai import OpenAI

client = OpenAI(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# Maliyet/yetenek katmanlarına göre model havuzu
MODELS = {
    "router": "gpt-4.1-mini",        # $0.40/1M giriş - hızlı sınıflandırma
    "simple": "gpt-4.1-mini",         # $0.40/1M giriş - çıkarım, formatlama
    "reasoning": "claude-sonnet-4-6",  # $3.00/1M giriş - planlama, analiz
    "complex": "gpt-4.1",             # $2.00/1M giriş - kod üretimi, çok adımlı
    "budget": "deepseek-chat",         # $0.28/1M giriş - toplu işleme
}

def route_task(task: str) -> str:
    """Görev karmaşıklığını sınıflandırmak için ucuz bir model kullan."""
    response = client.chat.completions.create(
        model=MODELS["router"],
        messages=[
            {"role": "system", "content": """Bu görevi bir kategoriye ayır:
- basit: veri çıkarımı, formatlama, çeviri
- muhakeme: analiz, planlama, karşılaştırma
- karmaşık: kod üretimi, çok adımlı problem çözme
- bütçe: toplu işleme, kritik olmayan görevler
Sadece kategori adını yanıtla."""},
            {"role": "user", "content": task}
        ],
        max_tokens=10
    )
    category = response.choices[0].message.content.strip().lower()
    return MODELS.get(category, MODELS["simple"])

def execute_task(task: str, context: str = "") -> str:
    """Görevi uygun modele yönlendir ve çalıştır."""
    model = route_task(task)
    messages = []
    if context:
        messages.append({"role": "system", "content": context})
    messages.append({"role": "user", "content": task})

    response = client.chat.completions.create(
        model=model,
        messages=messages
    )
    return response.choices[0].message.content

Gerçek Dünya Ajanı: Kod İnceleme Boru Hattı

İşte pull requestleri inceleyen pratik çok modelli bir ajan:

def review_pr(diff: str) -> dict:
    """Çok modelli PR inceleme boru hattı."""

    # Adım 1: Değişiklikleri sınıflandır (ucuz model)
    classification = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{
            "role": "user",
            "content": f"Bu kod değişikliklerini sınıflandır: {diff[:2000]}\n"
                       "Kategoriler: bugfix, feature, refactor, docs, test"
        }],
        max_tokens=20
    ).choices[0].message.content

    # Adım 2: Güvenlik taraması (muhakeme modeli)
    security = client.chat.completions.create(
        model="claude-sonnet-4-6",
        messages=[{
            "role": "system",
            "content": "Sen bir güvenlik inceleyicisisin. Şunları kontrol et: "
                       "SQL enjeksiyonu, XSS, yetki atlatma, kodda gizli bilgiler, "
                       "güvensiz serileştirme. Satır numaralarına özel ol."
        }, {
            "role": "user",
            "content": f"Bu diffi güvenlik sorunları için incele:\n{diff}"
        }]
    ).choices[0].message.content

    # Adım 3: Kod kalitesi (genel model)
    quality = client.chat.completions.create(
        model="gpt-4.1",
        messages=[{
            "role": "user",
            "content": f"Kod kalitesini incele: isimlendirme, yapı, "
                       f"hata yönetimi, test kapsamı.\n{diff}"
        }]
    ).choices[0].message.content

    # Adım 4: Özet (ucuz model)
    summary = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{
            "role": "user",
            "content": f"Bu PR incelemesini 3 madde halinde özetle:\n"
                       f"Tür: {classification}\n"
                       f"Güvenlik: {security[:500]}\n"
                       f"Kalite: {quality[:500]}"
        }]
    ).choices[0].message.content

    return {
        "classification": classification,
        "security": security,
        "quality": quality,
        "summary": summary
    }

Tipik bir PR incelemesi için maliyet dökümü (2K token diff):

Adım Model Girdi Tokenları Maliyet
Sınıflandırma GPT-4.1-mini ~2,100 $0.0008
Güvenlik Claude Sonnet 4.6 ~2,500 $0.0075
Kalite GPT-4.1 ~2,500 $0.0050
Özet GPT-4.1-mini ~1,200 $0.0005
Toplam ~$0.014

Dört adımın tamamı için Claude Sonnet 4.6 kullanmak ~$0.028 tutardı. Çok modelli yaklaşım, maliyeti %50 azaltırken en güçlü modeli en çok ihtiyaç duyulan yerde (güvenlik incelemesi) kullanır.

LangChain Entegrasyonu

from langchain_openai import ChatOpenAI

# Farklı konfigürasyonlarla model örnekleri oluştur
fast = ChatOpenAI(
    model="gpt-4.1-mini",
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

reasoning = ChatOpenAI(
    model="claude-sonnet-4-6",
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# LangChain zincirlerinde kullan
from langchain_core.prompts import ChatPromptTemplate

classify_chain = ChatPromptTemplate.from_template(
    "Sınıflandır: {input}"
) | fast

analyze_chain = ChatPromptTemplate.from_template(
    "Derinlemesine analiz et: {input}"
) | reasoning

Ne Zaman Çok Modelli Ajan Kullanmalı

Çok modelli yönlendirme karmaşıklık katar. Ancak şu durumlarda buna değer:

  • Ajanınız çeşitli görev türleriyle uğraşıyor (sadece sohbet değil)
  • Aylık API maliyetleri 100$'ı aşıyor (tasarruf anlamlı hale gelir)
  • Belirli model güçlü yönlerine ihtiyacınız var (kod için Claude, uzun bağlam için Gemini, hız için GPT)
  • Bazı adımlar için gecikme önemli, bazılarında değil

Basit sohbet botları veya tek amaçlı ajanlar için tek model yeterlidir. Her isteğin aynı yeteneğe ihtiyaç duyduğu durumlarda yönlendirme yükü haklı değildir.

Önemli Noktalar

  1. Her adımı iyi yapan en ucuz modeli kullanın
  2. Gerçekten ihtiyaç duyulan görevler için pahalı modelleri ayırın
  3. Sınıflandırma/yönlendirme adımları her zaman en ucuz mevcut modeli kullanmalı
  4. Sadece token başı fiyat değil, ajan başı gerçek maliyeti ölçün
  5. Tek anahtarla API birleştirici, çok modelli erişimi önemli ölçüde basitleştirir

Tüm modellere tek API ile erişin: lemondata.cc tek API anahtarıyla 300+ model sunar. Birden fazla sağlayıcı hesabı yönetmeden çok modelli ajanlar oluşturun.

Share: