Çok Açılı Analiz İçin Bir Ajan Sürüsü: LLM'lerden Uzman Bir Ekip Oluşturma

@h100envy
İNGILIZCE2 gün önce · 15 Tem 2026
625K
273
38
13
754

TL;DR

Bu rehber, karmaşık kararların derinlemesine ve çok açılı analizini sağlamak için çelişkili önyargılara sahip bir uzman ekibini simüle eden bir çoklu ajan LLM sisteminin nasıl kurulacağını açıklamaktadır.

Hızla ilgili değil. Birkaç ajanı farklı bakış açılarıyla aynı karar üzerinde tartıştırmak ve her birinden daha iyi bir sonuca ulaşmakla ilgili. Orkestratör, uzmanlar ve birleştirme için tam kodla birlikte.

Bir modelden bir kararı değerlendirmesini istediğinizde, genellikle ortalama ve ihtiyatlı bir bakış açısı sunar. Kabul etme, yumuşatma, denge bulma eğilimindedir. Sorun da budur: önemli bir karar tek bir ortalama bakış açısıyla değerlendirilemez, farklı yönlerden saldırıya uğramalıdır.

Bir ajan sürüsü bunu yapısal olarak çözer. Her biri belirli bir role ve önyargıya sahip birkaç uzman yaratırsınız: biri sadece parayı düşünür, bir diğeri sadece teknik riski, üçüncüsü sadece kullanıcıyı. Aynı kararı bağımsız olarak analiz eder, farklı sonuçlara ulaşır ve ardından bu sonuçların bir uzlaşmasını zorlarsınız. Buradaki değer hız değil, anlaşmazlığın yapıya inşa edilmiş olmasıdır. Tek bir ajan kendi kendisiyle grup düşüncesine yönelirken, bir rol sürüsü bunu yapmaz.

Bu makale, böyle bir sürünün nasıl oluşturulacağını kodla birlikte gösteriyor. Üç bölümü ele alıyoruz: rolleri atayan orkestratör, bağımsız olarak analiz eden uzmanlar ve bunları tek bir sonuçta uzlaştıran birleştirme.

Mimari: Orkestratör, Uzmanlar, Birleştirme

Analiz için bir sürü üç bileşenden oluşur.

Orkestratör, görevi alır ve hangi uzman rollerinin gerekli olduğuna karar verir. Bir ürün lansmanını değerlendirmek için bunlar bir yatırımcı, bir mühendis, bir ürün uzmanı, bir güvenlik görevlisi olabilir. Orkestratör kendisi analiz yapmaz, rolleri dağıtır.

Uzmanlar paralel ve bağımsız olarak çalışır. Her biri aynı kararı kendi merceğinden görür. Kritik bir şekilde, birbirlerinin sonuçlarını görmezler, aksi takdirde uyum başlar. Bağımsızlık, farklı bakış açıları üreten şeydir.

Birleştirme, uzmanların sonuçlarını toplar ve uzlaştırır: nerede anlaştıkları, nerede çeliştikleri, tüm açılardan nihai kararın ne olduğu. Bu, ortalama almak değil, anlaşmazlığı bir sinyal olarak tutan bir sentezdir.

h100envy - inline image

Adım 1: Temel İstemci

Modele basit bir istemci ile başlayın. OpenAI uyumlu bir mesaj formatı kullanıyorum, çoğu sağlayıcı ve yerel Ollama ile çalışır.

python
1import requests
2import json
3from concurrent.futures import ThreadPoolExecutor
4
5API = "http://localhost:11434/api/chat" # Ollama veya bir sağlayıcı uç noktası
6MODEL = "qwen2.5:32b"
7
8def ask(system, user, temperature=0.7):
9 resp = requests.post(API, json={
10 "model": MODEL,
11 "messages": [
12 {"role": "system", "content": system},
13 {"role": "user", "content": user},
14 ],
15 "temperature": temperature,
16 "stream": False,
17 }, timeout=120)
18 resp.raise_for_status()
19 return resp.json()["message"]["content"]

Adım 2: Orkestratör Rolleri Atar

Orkestratör görevi alır ve hangi uzmanların gerekli olduğuna karar verir. Rolleri önceden sabit kodlamayın, modelin belirli görev için onları seçmesine izin verin, bu sürüyü genel hale getirir. Ayrıştırmak için katı JSON isteyin.

python
1ORCHESTRATOR_SYSTEM = """Analitik bir sürünün orkestratörüsün.
2Görev için, karar hakkında maksimum düzeyde FARKLI
3ve çelişkili görüşler verecek 3-5 uzman rolü tanımla. Roller çıkarlarında
4çelişmeli, birbirini tamamlamamalı.
5
6Her rol için şunları ver: ad, odak (neye takıntılı olduğu), önyargı (neye
7eğilimli olduğu, neyi abartma eğiliminde olduğu).
8
9Sadece bir JSON dizisi ile yanıtla, açıklama yok:
10[{"name": "...", "focus": "...", "bias": "..."}, ...]
11"""
12
13def plan_roles(task):
14 raw = ask(ORCHESTRATOR_SYSTEM, f"Analiz edilecek görev:\n{task}",
15 temperature=0.9) # rol çeşitliliği için daha yüksek sıcaklık
16 # JSON'u ayıkla, model etrafına metin eklemiş olabilir
17 start, end = raw.find("["), raw.rfind("]") + 1
18 return json.loads(raw[start:end])

Sıcaklığı burada bilerek yüksek tutuyoruz: bariz olmayan, çeşitli roller istiyoruz. İstemdeki "roller çelişmelidir" gereksinimi anahtardır, onsuz model neredeyse aynı üç rol verir ve sürünün tüm amacı kaybolur.

Adım 3: Uzmanlar Paralel ve Bağımsız Olarak Analiz Eder

Her uzman kendi rolünü ve aynı kararı alır. Kritik bir şekilde: paralel çalışırlar ve birbirlerinin sonuçlarını görmezler. Buradaki paralellik sadece hız için değildir, bağımsızlığı garanti eder, bir uzman fiziksel olarak başka birinin görüşüne uyum sağlayamaz.

python
1EXPERT_SYSTEM = """Rolü {name} olan bir uzmansın.
2Odağın: {focus}.
3Önyargın: {bias}. Bununla savaşma, bu senin analize değer katan şeyin.
4
5Kararı KESİNLİKLE kendi konumundan analiz et. Dengeli olma,
6diğer bakış açılarını hesaba katmaya çalışma, bunu diğer uzmanlar yapacak.
7Senin işin kendi açını sınıra kadar zorlamak.
8
9Şunları ver:
10- kendi konumundan bir karar (destekliyor / karşı / koşullu)
11- kendi açından özellikle 2-3 ana argüman
12- senin konumundan en görünür olan ve diğerlerinin kaçıracağı 1 risk
13Kısa ve sert, gereksiz süsleme yok."""
14
15def run_expert(role, task):
16 system = EXPERT_SYSTEM.format(**role)
17 opinion = ask(system, f"Analiz edilecek karar:\n{task}", temperature=0.7)
18 return {"role": role["name"], "opinion": opinion}
19
20def run_swarm(roles, task):
21 # paralel başlatma: bağımsızlık artı hız
22 with ThreadPoolExecutor(max_workers=len(roles)) as pool:
23 futures = [pool.submit(run_expert, role, task) for role in roles]
24 return [f.result() for f in futures]

Uzman istemine dikkat edin: açıkça dengeli olmasını yasaklıyoruz. Bu sezgisel değildir, ama tüm mesele budur. Her uzman tüm tarafları hesaba katmaya çalışırsa, birbirinin aynısı beş ihtiyatlı görüş elde edersiniz. Her birini kendi açısını sınıra kadar zorlamaya zorlayarak, birleştirmenin daha sonra uzlaştıracağı gerçek bir spektrum elde edersiniz.

Adım 4: Birleştirme Sonuçları Uzlaştırır

Şimdi birkaç keskin, tek taraflı görüşümüz var. Birleştirme bunları tek bir kararda toplar, ancak ortalama alarak değil. Uzmanların nerede anlaştığına (güçlü bir sinyal), nerede çeliştiğine (bir karar gerektiren bir risk bölgesi) ve neyin neye ağır bastığına bakar.

python
1MERGE_SYSTEM = """Analitik bir sürünün sentezleyicisisin. Sana
2tek bir karar hakkında farklı önyargılara sahip birkaç uzmanın görüşleri veriliyor.
3
4İşin ORTALAMA ALMAK DEĞİL. İşin:
51. Anlaşma: uzmanların farklı konumlarına rağmen üzerinde anlaştıkları şey.
6 Bu en güvenilir sinyaldir, vurgula.
72. Çatışma: uzmanların doğrudan çeliştiği yer. Bunu yumuşatma,
8 çatışmayı açıkça adlandır ve her bir tarafın maliyetinin ne olduğunu söyle.
93. Kör noktalar: sadece bir uzmanın adlandırdığı ama önemli olan bir risk.
104. Her şeyi kapsayan nihai karar: destekliyor / karşı / koşullu ve hangi
11 koşullar altında değiştiği.
12
13Yoğun yaz. Anlaşmazlığı bilgi olarak tut, gizleme."""
14
15def merge_opinions(task, opinions):
16 block = "\n\n".join(
17 f"### Uzman: {o['role']}\n{o['opinion']}" for o in opinions
18 )
19 user = f"Karar:\n{task}\n\nUzman görüşleri:\n{block}"
20 return ask(MERGE_SYSTEM, user, temperature=0.4) # ayık sentez için daha düşük sıcaklık

Birleştirmede sıcaklığı düşürüyoruz: uzmanlar çeşitli olmalıysa (yüksek T), sentezleyici ayık ve tutarlı olmalıdır (düşük T). Buradaki anahtar talimat "ortalama alma, anlaşmazlığı bilgi olarak tut"tur. Normal bir birleştirme her şeyi lapa haline getirir, "bir yandan, diğer yandan." İyi bir birleştirme açıkça şunu söyler: işte herkes hemfikir ve işte bir çatışma var ve maliyeti bu kadar.

Adım 4.5: Sahte Anlaşmaya Karşı Bir Şeytanın Avukatı

Sessiz bir tehlike vardır: bazen uzmanlar karar iyi olduğu için değil, herkes atalet nedeniyle aynı yöne baktığı için anlaşır. Bu sahte anlaşmadır ve açık çatışmadan daha tehlikelidir, çünkü güven gibi görünür.

Buna karşı özel bir ajan ekliyoruz: şeytanın avukatı. Tek işi fikir birliğine saldırmaktır. Tüm uzmanların görüşlerini görür ve hepsinin aynı anda neden yanılıyor olabileceğini bulmakla yükümlüdür. Sürü oybirliğiyle "destekliyor" oyu verdiyse, avukat bunun bir felaket olduğu bir senaryo arar.

python
1DEVIL_SYSTEM = """Analitik bir sürüde şeytanın avukatısın. Sana
2uzmanların görüşleri veriliyor. Tek işin: onların anlaşmasına saldırmak.
3
4Uzmanlar bir konuda uzlaştıysa, neden HEPSİNİN AYNI ANDA yanılıyor olabileceğini
5bul. Ortak bir kör nokta ara: herkesin kontrol etmeden kabul ettiği bir varsayım,
6kimsenin can sıkıcı olduğu için düşünmediği bir senaryo.
7
8Kibar olma. Değerin, grubun duymak istemediğini söylemendir.
9Şunları ver:
10- uzmanların en tehlikeli ortak varsayımı hangisi
11- sürünün oybirliğiyle aldığı kararın ölümcül şekilde yanlış çıktığı bir senaryo
12- grubun dikkatlice kaçındığı bir soru
13Anlaşma yoksa ve uzmanlar gerçekten anlaşamıyorsa, bunu açıkça söyle
14ve en keskin çözülmemiş çatışmayı işaret et."""
15
16def run_devil(task, opinions):
17 block = "\n\n".join(
18 f"### {o['role']}\n{o['opinion']}" for o in opinions
19 )
20 user = f"Karar:\n{task}\n\nSürü görüşleri:\n{block}"
21 return ask(DEVIL_SYSTEM, user, temperature=0.8)

Avukat, uzmanlardan sonra ama birleştirmeden önce çalışır ve saldırısı, görüşlerin yanı sıra senteze gider. Amaç, oybirliğiyle alınmış bir sürünün bile bir çatlak aramakla yükümlü en az bir ajana sahip olmasıdır. Bu ucuzdur (tek bir çağrı) ve yapısal olarak grup düşüncesini kırar: fikir birliği artık sadece olmak zorunda değil, bir saldırıdan sağ çıkmak zorundadır.

Adım 4.6: Çatışmayı Keskinleştirmek İçin Bir Tartışma Turu

İlk uzman geçişi bağımsızdır ve çeşitlilik için doğrudur. Ancak görüşler toplandıktan sonra, bir tartışma turu yapabilirsiniz: her uzmana diğerlerinin görüşlerinin bir özetini gösterin ve itiraz etmesine izin verin. Bu, çatışmaları keskinleştirir, zayıf argümanlar elenir, güçlü olanlar sağlamlaşır.

python
1DEBATE_SYSTEM = """Analizin ikinci turunda {name} uzmanısın.
2Orijinal konumun:
3{own_opinion}
4
5Şimdi diğer uzmanların görüşlerini görüyorsun. Baskıya boyun eğme, ama
6güçlü argümanları da görmezden gelme. Şunları ver:
7- başka birinin argümanının konumuna gerçekten dokunduğu yer, dürüstçe kabul et
8- çizgini koruduğun ve itirazlarının neden zayıf olduğu yer
9- tartışmadan sonra kararını değiştirip değiştirmediğin ve değiştirdiysen nasıl
10Kısa. Bu ilk görüşün tekrarı değil, rakiplere bir tepkidir."""
11
12def debate_round(roles, task, opinions):
13 others_map = {}
14 for o in opinions:
15 others = "\n\n".join(
16 f"### {x['role']}\n{x['opinion']}" for x in opinions if x is not o
17 )
18 others_map[o["role"]] = others
19
20 def rebut(o):
21 system = DEBATE_SYSTEM.format(name=o["role"], own_opinion=o["opinion"])
22 user = (f"Karar:\n{task}\n\n"
23 f"Rakiplerin görüşleri:\n{others_map[o['role']]}")
24 return {"role": o["role"], "opinion": ask(system, user, temperature=0.6)}
25
26 with ThreadPoolExecutor(max_workers=len(opinions)) as pool:
27 return list(pool.map(rebut, opinions))

Tartışma turu da paraleldir: her uzman diğerlerine aynı anda tepki verir, yine gerçek zamanlı uyum olmadan. Tartışmadan sonra görüşler genellikle daha keskindir: hangi pozisyonların ateş altında ayakta kaldığını ve hangilerinin çöktüğünü görebilirsiniz. Nihai birleştirmeye giren bu sertleşmiş görüşlerdir.

Adım 5: Hepsini Bir Araya Getirmek

python
1def analyze(task, debate=True):
2 print("Orkestratör rolleri seçiyor...")
3 roles = plan_roles(task)
4 for r in roles:
5 print(f" - {r['name']}: {r['focus']}")
6
7 print(f"\n{len(roles)} uzman paralel olarak başlatılıyor...")
8 opinions = run_swarm(roles, task)
9 for o in opinions:
10 print(f"\n[{o['role']}]\n{o['opinion']}")
11
12 # isteğe bağlı tartışma turu: uzmanlar birbirine yanıt verir
13 if debate:
14 print("\nTartışma turu, uzmanlar birbirine itiraz ediyor...")
15 opinions = debate_round(roles, task, opinions)
16
17 # şeytanın avukatı sürünün anlaşmasına saldırır
18 print("\nŞeytanın avukatı anlaşmada bir çatlak arıyor...")
19 devil = run_devil(task, opinions)
20 print(f"\n[Şeytanın avukatı]\n{devil}")
21
22 # birleştirme, sonuçları ve avukatın saldırısını uzlaştırır
23 print("\nBirleştirme sonuçları uzlaştırıyor...")
24 opinions_plus = opinions + [{"role": "Şeytanın avukatı", "opinion": devil}]
25 verdict = merge_opinions(task, opinions_plus)
26 print(f"\n=== NİHAİ KARAR ===\n{verdict}")
27 return verdict
28
29if __name__ == "__main__":
30 analyze(
31 "Ücretsiz katmanı kaldırıp ürünü 14 günlük deneme süresiyle "
32 "tamamen ücretli yapmak istiyoruz. Bunu yapmalı mıyız?"
33 )

Bunu çalıştırdığınızda, tüm boru hattını göreceksiniz: orkestratör rolleri seçer, uzmanlar gerçeği kendi açılarından keser, tartışma turunda birbirleriyle tartışır, avukat anlaşmalarına saldırır ve birleştirme, saldırı da dahil olmak üzere her şeyi kapsayan bir karar verir. Aynı soruya tek bir ajan "kitlenize bağlı" gibi belirsiz bir cevap verirken, sürü, çatışmaların açık olduğu ve fikir birliğinin stres testinden geçirildiği yapılandırılmış bir döküm verir.

Bu Sürüyü Çalıştıran Şey Nedir?

Üç şey, kullanışlı bir sürüyü ajanlardan oluşan bir tiyatrodan ayırır.

Roller çelişmeli, tamamlamamalı. Uzmanlarınız "bir pazarlamacı, bir SMM uzmanı, bir içerik yöneticisi" ise, çıkarları çakıştığı için neredeyse aynı cevapları vereceklerdir. Gerçek değer, çıkarlar çatıştığında ortaya çıkar: büyüme vs sürdürülebilirlik, hız vs kalite, şimdi para vs sonra güven. Çıkar çatışması, kararı açan şeydir.

Uzmanlar birbirini görmemeli. Bir uzman diğerinin görüşünü görür görmez uyum başlar, ayarlama yapar. Bağımsızlık bir uygulama detayı değil, bir çalışma koşuludur. Paralel başlatma bunu bedavaya verir.

Birleştirme ortalama almaz, çatışmayı korur. Kötü bir sentez, beş keskin görüşü tek bir dişsiz özete dönüştürür. İyi bir sentez, çatışmayı görünür bırakır, çünkü çatışma en değerli bilgidir: kararın gerçekten riskli olduğu yeri gösterir, herkesin kafa salladığı yeri değil.

Nerede Genişletmeli

Bu iskelet bariz yönlerde genişletilebilir. Bir tartışma turu ekleyebilirsiniz: ilk birleştirmeden sonra, uzmanlara özeti gösterin ve itiraz etmelerine izin verin, bu çatışmaları keskinleştirir. Argümanları tartmak için uzmanların üzerine daha güçlü bir modelde bir yargıç koyabilirsiniz. Rolleri, yinelenen bir karar türü için kalıcı hale getirebilirsiniz, böylece her seferinde oluşturmazsınız.

Ancak temel prensip aynı kalır: farklı mercekler, bağımsız analiz, anlaşmazlığa saygı duyan bir sentez. Bir sürü, analiz için kullanışlıdır çünkü çok sayıda ajan vardır değil, farklı bakar ve birbirlerinin ortak bir paydaya kaymasına izin vermezler. Şu anda kendi kafanızda çevirdiğiniz bir kararı alın ve böyle bir sürüden geçirin. Daha önce tutmadığınız açıları göreceksiniz.

YouMind’da yeniden üret

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Üreticiler için

Markdown'ınızı temiz bir 𝕏 makalesine dönüştürün

Kendi uzun yazılarınızı yayımlarken görselleri, tabloları ve kod bloklarını 𝕏 için biçimlendirmek zahmetlidir. YouMind, eksiksiz bir Markdown taslağını temiz ve hemen paylaşılabilir bir 𝕏 makalesine dönüştürür.

Markdown'dan 𝕏'e deneyin

Çözülecek daha fazla kalıp

Son viral makaleler

Daha fazla viral makale keşfet