Bloga dön

Yeni başlayanlar için AIKılavuz

Ajanlar her adımda modele ihtiyaç duyar mı? Sabit adımları koda koyun

Her araç sonucunun neden bir model çağrısı daha tetiklediği, hangi ajan adımlarının düz kod olabileceği ve 3 adımlı bir döngünün ek çağrıyla ve olmadan maliyeti.

Yazan: CheapTokens TeamYayınlanma tarihi: 6 dk okuma

Kapak: derlemenin geçtiği ve sonraki adımın model çağrısı değil bir kural olduğu kısa bir ajan döngüsü
Bu sayfada
  1. Neden bir araç sonucu bir model çağrısı daha demek
  2. Hangi adımlar karar gerektirir, hangileri sabittir
  3. 3 adımlı bir döngü, ek çağrıyla ve olmadan
  4. HarnessMM yazarları ne bildiriyor
  5. Kendi ajanınızı on dakikada kontrol edin

Ajanınız on dakika çalıştı ve fatura görevden daha büyük. Çoğu zaman sebep sıkıcıdır: her araç sonucundan sonra harness, sonraki adım bariz olsa bile modeli tekrar çağırır.

Yani hayır, bir ajan her adımda modele ihtiyaç duymaz. Modele, bir şeyin kararlaştırılması gereken yerlerde ihtiyaç duyar. Geçen bir derlemeden sonra testleri çalıştırmak gibi her zaman aynı olan bir adım, kodunuzda düz bir kural olabilir.

Önemsemek için bir para sebebi var. Her ek çağrı tüm bağlamı girdi token'ları olarak yeniden okur (uzun sohbet makalesi nedenini gösterir), bu yüzden atlanan bir çağrı kendi kısa yanıtından daha fazlasını tasarruf ettirir. Döngü sizin için yeniyse, bir AI ajanı nasıl çalışır ile başlayın ve geri dönün.

Neden bir araç sonucu bir model çağrısı daha demek#

Model hiçbir şey çalıştırmaz. "lütfen make build çalıştır" yazar, harness'iniz (modelin etrafındaki program) onu çalıştırır, çıktıyı konuşmaya yapıştırır ve şimdiye kadarki her şeyle modeli tekrar çağırır. Döngünün tamamı budur. Model, bir aracın ne döndürdüğünü ancak siz onu çağırdığınızda öğrenir.

Her adımdan sonra yöneticiyi arayıp "şimdi ne?" diye soran yeni bir iş arkadaşı düşünün, oysa kontrol listesi "derlemeden sonra testleri çalıştır" diyor. Yönetici her seferinde aynı şeyi yanıtlar ve her çağrı hikayenin tamamını baştan okumak için bir dakikaya mal olur.

Bir ajan günlüğünde bu şöyle görünür. Görev "başarısız testi düzelt" olsun:

Üç model çağrısı olan bir ajan günlüğü, burada çağrı 2 yalnızca sabit bir kuralı tekrarlıyor
Örnek ajan günlüğü: çağrı 2 her çalıştırmada aynı yanıt

Çağrı 2 ilginç olanı. Derleme geçti, sonraki adım her zaman testler ve model "testleri çalıştır" demek için bağlamın tamamını okuyor. Çağrı 1 ve çağrı 3 farklı: çağrı 1 nasıl başlanacağını seçiyor, çağrı 3 test sonuçlarını okuyup raporu yazıyor. Bunlar gerçek iş.

Hangi adımlar karar gerektirir, hangileri sabittir#

Üç soru çoğu adımı ayırır:

  • Sonraki eylem net bir sinyalle mi belirleniyor, örneğin çıkış kodu, bir HTTP durumu veya "bulundu / bulunamadı"?
  • O sinyal her göründüğünde aynı eylem mi?
  • Yanlış bir tahmini geri almak ucuz mu?

Üç evet: bunu bir kural olarak yazın. Aksi halde adım modelde kalır.

Kodlama dışında ikinci bir örnek. Bir destek betiği çalıştırdığınızı varsayalım: bir müşteri yazar, betik siparişi arar, sonra yanıtlar. Siparişi numarasıyla aramak koddur. "Siparişiniz {id} {status} durumunda" ifadesini bir şablondan doldurmak da koddur. "Kırık geldi, şimdi ne olacak?" ifadesini okuyup iade, değişim ve özür arasında seçim yapmak bir yargıdır, yani bu üç değil bir model çağrısıdır.

Eşleştir

Her adımı kim ele almalı?

  • Derleme çıkış kodu 0 ile bitti ve sonraki adım her zaman testlerKod: sonraki adım sabit
  • Testler bir yığın iziyle başarısız oldu; hangi dosyanın değişmesi gerekiyor?Model: yeni bir yargı
  • Sipariş numarayla bulundu, şimdi durumunu yanıt şablonuna koyKod: şablonu doldur
  • Müşteri "kırık geldi, şimdi ne olacak?" yazıyorModel: serbest metni okuma

Bir koruma bunu güvenli kılar: kural yalnızca mutlu yolu kapsar. Derleme çıkış kodu 1 ile mi başarısız oldu? Testler kırmızı mı? Bir araç kuralın beklemediği bir şey mi döndürdü? Kontrolü aynen eskisi gibi modele geri verin. Yalnızca tek olası yanıtı olan çağrıları kaldırıyorsunuz, modeli döngüden çıkarmıyorsunuz.

3 adımlı bir döngü, ek çağrıyla ve olmadan#

"Başarısız testi düzelt" günlüğüne sayılar koyalım. Varsayımlar, hepsi bizim ve sizinkilerle değiştirmesi kolay:

  • sistem istemi artı görev: 3.000 token
  • derleme günlüğü: 1.500 token; test günlüğü: 2.000 token
  • yalnızca bir araç isteyen yanıt: 60 token; son rapor: 300 token

Sayıyı tahmin et

Test çalıştırması koda taşınırsa döngü kaç model çağrısı yapar?

Cevabı göster

Cevap: 2

İki: biri derlemeyi başlatmak, biri her iki sonucu okuyup raporu yazmak için. Test çalıştırması artık bir karar gerektirmiyor.

Her adımda model. Çağrı 1, 3.000 token okur. Çağrı 2, 3.000 + 60 + 1.500 = 4.560 okur. Çağrı 3, 4.560 + 60 + 2.000 = 6.620 okur. Toplam girdi: 3.000 + 4.560 + 6.620 = 14.180 token; çıktı: 60 + 60 + 300 = 420.

Test çalıştırması kodda. Çağrı 1, 3.000 token okur. Harness derlemeyi, ardından testleri kurala göre çalıştırır ve çağrı 2, 3.000 + 60 + 1.500 + 2.000 = 6.560 okur. Toplam girdi: 3.000 + 6.560 = 9.560 token; çıktı: 60 + 300 = 360.

Fark 14.180 − 9.560 = 4.620 girdi token'ı, girdinin yaklaşık üçte biri, artı bir küçük yanıt. DeepSeek-V4-Flash'te böyle bir görev ilk yolda $0.00025, ikincisinde $0.00018 tutar. Tek görev yuvarlama hatasıdır. Ajanınızın günde 500 tane yaptığını varsayalım (14.180 × 500 = 7.090.000 girdi token'ı, 420 × 500 = 210.000 çıktı token'ı; 4.780.000 ve 180.000'e karşı):

Günde 500 görev, aynı model
  • Her adımda model$0.127
  • Test çalıştırması kodda$0.0897

Fark bağlamla büyür: modelin sürüklediği günlükler ne kadar uzunsa, atlanan bir yeniden okuma o kadar değerlidir. İşte aynı döngü yan yana:

Test çalıştırması kodda bir kural olduğunda üç model çağrısına karşı iki
Aynı görev: ortadaki model çağrısı kayboluyor

Kodda kural birkaç satırdır. Bu sözde koddur, yardımcı adları sizindir:

python
result = run_tool(call)              # the model asked for: make build
messages.append(tool_message(result))

if call.name == "build" and result.exit_code == 0:
    tests = run_tool("make test")    # fixed rule, no model call
    messages.append(tool_message(tests))
# anything else (build failed, odd output) goes back to the model

reply = call_model(messages)         # the model reads everything once

HarnessMM yazarları ne bildiriyor#

Fikir yalnızca bize ait değil. HarnessMM, arXiv'de bir ön baskıdır (arXiv:2610.32813, 23 Ekim 2026'da gönderildi, 2 Kasım 2026'da kontrol edildi), Yuhua Jiang, Chang Xu, Feifei Gao ve Li Zhao tarafından. Gözlemleri: ajan harness'leri, daha önceki bir çağrı sonraki eylemi zaten belirlemiş olsa bile araç geri bildiriminden sonra modeli sık sık tekrar çağırır. Düzeltmeleri, korumalı karar yeniden kullanımı, bu kararı yeniden oynatır ve yeni bir anlamsal karar ortaya çıktığında, kanıt desteklenmediğinde veya seçici çekimser kaldığında orijinal modele geri döner. Yukarıdaki if aynı fikrin elle yazılmış halidir; korumalarının nasıl karar verdiği makalede.

Yazarlar HumanEval'de şu sonuçları bildiriyor:

  • Codex harness: görev başına 66,72k → 47,02k token (−%29,54), başarı %90,82'de değişmedi.
  • DeepSeek Harness: görev başına 96,28k → 11,62k token (−%87,93), başarı %71,43 → %85,71.

Bunları dikkatle okuyun. Tek bir kıyaslama, yazarların kendi harness'i, hakem değerlendirmesinden geçmemiş bir ön baskı ve arXiv sayfası hiç kod listelemiyor. Anlatımlarda "%88" görebilirsiniz: bu yalnızca DeepSeek Harness rakamıdır, Codex'inki yaklaşık %30'dur. Her ikisini de bir yön olarak alın, ajanınız için bir vaat olarak değil. Kendi günlüğünüz size daha fazlasını söyler.

Kendi ajanınızı on dakikada kontrol edin#

Her model çağrısının günlüğünü açın, her yanıttan gelen usage sayılarıyla (Python'da ajan token maliyetini izleme bir yol gösterir). Sonra son yirmi çalıştırmayı okuyun ve her çağrıyı işaretleyin: karar mı sabit mi. Bir çağrı, sonraki eylem bu çalıştırmalar boyunca hiç değişmediyse adaydır. Günlüğünüz ne gösteriyor?

Durumunu seç

Günlüğünüz ne gösteriyor?

Her çalıştırmada aynı çağrı çifti

Orada sabit bir kural saklı. Bunu çıkış kodu gibi net bir sinyal üzerine bir if olarak yazın ve sinyal beklenmedik bir şey olduğunda modeli yedek olarak tutun.

Yalnızca araç çıktısını yeniden biçimlendiren veya kopyalayan çağrılar

Bunları koddaki bir şablona taşıyın. Metin gerçekten bir modele ihtiyaç duyuyorsa, bu en büyük modeliniz için değil, ucuz bir model için küçük bir iştir.

Sonraki adımın içerikle değiştiği çağrılar

Modeli burada tutun. Model bunun içindir ve daha ucuz bir model genellikle basit bir sınıflandır-ve-seç adımını halleder; bkz. model yönlendirme: önce ucuz model.

Her çağrı dev bir günlüğü yeniden okuyor

Konuşmaya geri gideni kırpın: araç çıktısını bağlam dışında tutun. Aynı görev hiçbir çağrıyı kaldırmadan daha ucuz olur.

Bunu uzun bağlamlı bir modelde denemek isterseniz, CheapTokens ajan döngüleri için DeepSeek-V4-Flash (deepseek-ai/DeepSeek-V4-Flash-0731) sunar: her saatte tek fiyat, 380K bağlam ve yanıt başına 32.768'e kadar çıktı token'ı. Hâlâ karar gerektiren adımlar için 390K bağlamlı GLM-5.3-Flash (zai-org/GLM-5.3-Flash) var. Her ikisi de https://api.cheaptokens.dev/v1 adresindeki OpenAI ve Anthropic uyumlu API üzerinden çalışır, tüm modeller için tek bakiye ile. Kurulum dokümanlarda, fiyatlar fiyatlandırma sayfasında ve model sayfası ucuz DeepSeek.