Pek çok ekip, ajana “pazarı araştır, rakipleri takip et ve rakamları bir tabloya dök” diyen tek bir istemle başlar. Demoda çalışır. Üretimde ise kayar, çünkü bunlar biçimleri birbirinden farklı üç iştir. Araştırma, bitmesi gereken sınırlı bir sorudur. İzleme, hiç bitmeyen ve çoğu zaman sessiz kalması gereken tekrarlayan bir sorudur. Bilgi çıkarma ise birinin elinde zaten olan malzemeye uygulanan bir şemadır. Üçünü tek bir ajanda çalıştırabilirsiniz; ama her birinin kendi planına, kendi çıktı sözleşmesine ve kendi “bitti” tanımına ihtiyacı vardır ve üçü de tek bir kanıt deposunu paylaşmalıdır. Bu rehber bunun nasıl kurulacağını ve sisteminizden bir şey çıkmadan önce ajanın nerede durup sorması gerektiğini gösteriyor.
Üç iş, üç ayrı biçim
| Boyut | Araştırma | İzleme | Bilgi çıkarma |
|---|---|---|---|
| Girdi | Bir soru ve izin verilen kaynakların listesi | Tekrarlayan bir soru, kaynaklar, sıklık ve bir önemlilik kuralı | Bir şema ve okunacak belgeler |
| Plan | Çalışmadan önce onaylanan sıralı adımlar | Sürümlü bir tanım ve bir başlangıç durumu | Türleri belli, “bilinmiyor” değerine izin veren alan listesi |
| Çıktı | Alıntılı bulgular ve açık sorular | İnceleme bekleyen değişiklik olayları | Her alan için değer, pasaj ve durum içeren kayıtlar |
| Ne zaman biter | Kabul ölçütleri karşılandığında ya da bütçe tükendiğinde | Her çalıştırma biter; izleyicinin kendisi sürer | Her alan dolduğunda ya da bilinmiyor diye işaretlendiğinde |
| Tipik hata | Sessizce genişleyen kapsam | Alarm yorgunluğu ya da bir değişiklik üzerine harekete geçmek | Boş alanlara yazılan makul görünen tahminler |
İşleri ayrı tutmanın nedeni en alttaki satırdır. Her hatanın çaresi farklıdır ve hepsini karıştıran tek bir döngü genellikle üçünü birden yaşar. Çatı seçmeden önce web erişimi için ajan mimarisi yazısını okumakta fayda var, çünkü alttaki araç katmanı her iş için ortaktır.
Ayrı planlar, veri olarak saklanmış
Her iş, bir şey çalışmadan önce bir insanın okuyabileceği bir plan nesnesiyle başlamalıdır. Planları sistem isteminin içine gömülü düz yazı olarak değil, veri olarak tutun; böylece sürümlenebilir, karşılaştırılabilir ve onaylanabilirler.
arastirma_plani:
soru: Kısa listemizdeki hangi tedarikçiler veri saklama politikası yayımlıyor?
adimlar: [tedarikçi sitelerini listele, politika sayfalarını bul, saklama koşullarını alıntıla, boşlukları not et]
izinli_kaynaklar: [kısa listedeki tedarikçi alan adları]
butce: {en_fazla_arac_cagrisi: 40, en_fazla_dakika: 20}
kabul: her tedarikçi için alıntılanmış bir politika pasajı ya da açık bir bulunamadı kaydı
izleme_tanimi:
surum: 3
soru: Kısa listedeki bir tedarikçi saklama koşullarını değiştirdi mi?
kaynaklar: [araştırma planının bulduğu politika adresleri]
onemli: saklama süresi, silme süreci ya da veri konumunda değişiklik
siklik: haftalık, pazartesi 09:00, Europe/Istanbul
bildirim: e-posta
cikarma_semasi:
saklama_suresi: {tur: metin, bilinmiyor_olabilir: evet}
talep_uzerine_silme: {tur: evet_hayir_bilinmiyor}
veri_konumu: {tur: metin, bilinmiyor_olabilir: evet}İki kural planları dürüst tutar. Boş bir kaynak listesi “hiç kaynak yok” anlamına gelmelidir, asla “her kaynak” değil. Soru değiştiğinde de çalışan işin kendini genişletmesine izin vermek yerine yeni bir plan sürümü yazın; değişen soru yeni bir plan ister notu bunun gerekçesini ayrıntılı anlatıyor. Bütçeler de plana aittir: araç çağrısı sınırı, süre sınırı ve ajan para harcıyorsa bir harcama sınırı.
Katı sözleşmeli ayrı çıktılar
Ajan her şey için tek bir serbest biçimli rapor döndürürse, aşağı akıştaki hiçbir şey doğrulanmış bir bulguyu bir tahminden ayıramaz. Her işe kendi çıktı türünü verin ve her sonucu bu türe göre doğrulayın:
Bulgu: iddia, alinti, kaynak_no, durum: destekleniyor | kaynak_bulunamadi DegisiklikOlayi: izleme_surumu, onceki_kaynak_no, sonraki_kaynak_no, fark, onemlilik, durum: inceleme_bekliyor CikarilanDeger: kayit_no, alan, deger, pasaj, kaynak_no, durum: bulundu | bilinmiyor
Sözleşmelerin neyi dışarıda bıraktığına dikkat edin. Alıntısı olmayan bir bulgu destekleniyor diye işaretlenemez; açık bir soruya dönüşür ve açık sorular silinmez, saklanır. Değişiklik olayında “yapılan işlem” diye bir alan yoktur, çünkü bir değişikliği fark etmek ile onun üzerine harekete geçmek farklı kişilere ait farklı adımlardır. Pasajı olmayan çıkarılmış bir değer, değer sayılmaz. Sözleşmesini bozan çıktıyı sessizce onarmak yerine reddedin ve reddi kaydedin. Tekrarlayan retler, zayıf bir istemi ya da güvenilmez bir aracı bulmanın en hızlı yoludur.
Üç iş için tek kanıt deposu
Üç işin her biri webi ayrı ayrı çekip kendi kopyasını tutmamalıdır. Alınan her belgeyi tek bir depoya koyun ve işlerin ona kimlik numarasıyla başvurmasını sağlayın.
kaynak_no: src-7f3a url: https://vendor.example/legal/retention alinma_zamani: YYYY-AA-GGTSS:DD:SSZ icerik_ozeti: normalleştirilmiş metnin sha256 özeti yontem: arama sonucu, ardından sayfa çekme robots_uygun: evet
Bunun getirisi hızlı gelir. Bir araştırma bulgusu, izleyicinin sonradan karşılaştırma yapacağı aynı anlık görüntüye atıf yapabilir. Bilgi çıkarma, araştırmacının okuduğu metnin aynısını okur; böylece itiraz edilen bir değer geldiği metne kadar izlenebilir. Tekrarlanan çekmeler ortadan kalkar, birinin bir sayfanın hangi sürümünü gördüğü tartışması da. Ortak bir depo dürüst sınırları da görünür tutar: atıf kanıta işaret eder ama tek başına hiçbir şeyi kanıtlamaz; inceleyen kişinin pasajın iddiada söylenen şeyi gerçekten söyleyip söylemediğini yine kontrol etmesi gerekir. Erişim katmanı için ölçekte yapılandırılmış veri çıkarma yazısına bakın. Siteleri yormadan çekin, robots kurallarına ve site koşullarına uyun ve kimsenin size vermediği bir oturum açma ekranını aşmak için asla tarayıcı aracı kullanmayın.
Eylemlerin sistemden çıktığı yerde onay
Okumak, karşılaştırmak ve taslak hazırlamak, her adımı bir insan izlemeden bütçe sınırları içinde yürüyebilir. Duraklamanın yeri sınırdır: bir eylemin ajanın kendi çalışma alanı dışındaki bir şeyi değiştirdiği ya da ajanın yapabileceklerini genişlettiği nokta. Tipik örnekler:
- herhangi birine e-posta, mesaj ya da rapor göndermek;
- bir CRM'e, veritabanına ya da paylaşılan bir belgeye yazmak;
- dosya dışa aktarmak;
- herhangi bir şeyi silmek;
- yeni bir izleyici başlatmak dahil, bir zamanlama oluşturmak ya da değiştirmek;
- başka bir ajanı çalıştırmak ya da ajanın kendi talimatlarını düzenlemek.
Bunu istemde değil, araç katmanında zorunlu kılın. “Göndermeden önce sor” diyen bir istem bir öneridir. Çağrıyı reddeden bir sarmalayıcı ise bir kontroldür.
CONSEQUENTIAL = {'send_email', 'crm_write', 'export_files', 'delete', 'create_schedule', 'spawn_agent'}
def call_tool(name, args, decisions):
if name in CONSEQUENTIAL:
decision = decisions.get(attempt_key(name, args))
if decision is None or not decision.approved:
return request_approval(name, args) # çağrıyı kelimesi kelimesine göster
if decision.args != args:
return request_approval(name, args) # onaydan sonra argümanlar değişti
return TOOLS[name](**args)Üç ayrıntı önemlidir. Onay, belirli argümanlarla yapılan tek bir denemeye bağlıdır; bir e-postayı onaylamak bir sonrakini onaylamak anlamına gelmez. Kontrol, aradaki sürede argümanlar ya da bağlam değişmiş olabileceği için çalıştırma anında yeniden yapılır. Onaylayan kişi de çağrıyı dostane bir açıklamayla değil, ajanın yaptığı haliyle görür. Bir insan için duran yedi eylem sınıfı notu bu sınırı daha ayrıntılı çiziyor.
GoCux nerede devreye girer
GoCux ne bir tarayıcı robot ne de bir arama API'sidir. Çekme işini yine ajanınızın araçları, sizin yetki verdiğiniz bir tarama ya da dışa aktarma adımıyla yapar; içe aktarılan sayfalar özgün sayfa referansını ve alınma tarihini korur. GoCux'un sağladığı, bu rehberde anlatılan yapının işin etrafında hazır olarak bulunmasıdır.
GoCux'ta araştırma; bir soru, sıralı adımlar ve bir kaynak izin listesinden oluşan bir plandır. Taslak olarak kaydedilir, çalışmadan önce onay ister ve yürütülürken genişleyemez. Pulse, izleme işini onaylanmış, sürümlü bir tanım ve değişikliklerin tek tek incelendiği kayıtlarla karşılar. Bilgi çıkarma, değerleri her birinin dayandığı pasajla birlikte döndürür ve eksik değerleri bilinmiyor olarak tutar. Bir iş emri, bir işi hedefine, kapsamına ve kabul ölçütlerine bağlar; her adım gerçekleştiği anda iş emrinin kaydına yazılır. Göndermek, dışa aktarmak, silmek, zamanlamak ve başka bir ajanı işe koşmak, bir karar için duran yedi sınıfın arasındadır. İş emrini yazmaya bir görevin nasıl tanımlanacağı sayfasından başlayabilirsiniz.
Kurulum kontrol listesi
- Her işin, çalışmadan önce okunup onaylanabilen kendi plan nesnesi var.
- Boş bir kaynak listesi hiç kaynak olmadığı anlamına geliyor.
- Çıktı türleri doğrulanıyor; sözleşmeyi bozan çıktılar reddedilip kaydediliyor.
- Alıntısız bulgular atılmıyor, açık soru olarak saklanıyor.
- Tüm işler URL, alınma zamanı ve içerik özeti tutan tek bir kanıt deposundan okuyor.
- Sonuç doğuran araç çağrıları, o denemeye ait bir karar oluşana kadar kodda engelleniyor.
- Araç çağrısı, süre ve harcama bütçeleri her iş için ayrı belirleniyor.
- Değişen bir soru, sessizce genişletilmiş bir çalıştırma değil, yeni bir plan sürümü üretiyor.
Bu iş akışını çalışma alanınıza taşıyın.
Kapsamı belirleyin. Kanıtları inceleyin. Gereken adımları onaylayın.