Ana içeriğe atla

AWS Multi-Agent Orchestrator: Örneklerle Bir Rehber

AWS Multi-Agent Orchestrator çerçevesini kurmayı ve çoklu ajan orkestrasyonuna odaklanan bir demo proje oluşturmayı öğrenin.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ajanik yapay zekâ alanında neredeyse her hafta yeni bir şey çıkıyor. AWS Multi-Agent Orchestrator, birden fazla yapay zekâ ajanını yönetmek için kullanabileceğimiz yeni bir çerçeve. İster bir müşteri destek sistemi ister uzmanlaşmış çoklu ajan uygulaması geliştiriyor olalım, bu çerçeve değerlendirilmeye değer.

Bu eğitimde, AWS Multi-Agent Orchestrator’ı benzersiz kılan özellikleri açıklayacak, ortam kurulumunu adım adım anlatacak ve çerçeveyi çalışırken görmek için bir demo proje geliştireceğim.

AWS Multi-Agent Orchestrator Nedir?

AWS Multi-Agent Orchestrator, yapay zekâ ajanlarını yönetmek ve karmaşık çok turlu konuşmaları kolaylaştırmak için tasarlanmış, araçlarla donatılmış esnek bir çerçevedir. Önceden oluşturulmuş bileşenleri sayesinde hızlı geliştirme ve dağıtım sağlar; böylece bu bileşenleri sıfırdan inşa etmek yerine uygulamamıza odaklanabiliriz.

AWS Multi-Agent Orchestrator aşağıdaki özellikleri sunar:

  • Akıllı yönlendirme: Her sorgu için en uygun ajanı dinamik olarak belirler.
  • Yayınlı ve yayınsız yanıtlar: Her iki ajan yanıt biçimini de destekler.
  • Bağlam yönetimi: Çok turlu konuşmalarda tutarlılığı ve geçmişi yönetir.
  • Genişletilebilirlik: Yeni ajanlar oluşturun veya mevcut olanları değiştirin.
  • Evrensel dağıtım: AWS Lambda, yerel ortamlar ve bulut platformlarında çalışır.

Çerçeve hem Python hem de TypeScript’i destekleyecek şekilde uygulanmıştır.

Multi-Agent Orchestrator’ın nasıl çalıştığına genel bakış

Multi-Agent Orchestrator’ın nasıl çalıştığına genel bakış. (Kaynak)

Yukarıdaki diyagramda, sınıflandırıcının, mevcut ajanları, kullanıcı istemini ve önceki konuşma geçmişini değerlendirerek kullanıcı girdisi için en uygun ajanı seçtiğini görüyoruz. Ardından ajan isteği işler. İş akışı basit ama etkilidir.

AWS Multi-Agent Orchestrator’ı Kurma

Hızlı bir kurulum için dokümandaki talimatları takip edebilirsiniz.

İlk olarak, gerekli kütüphaneleri kurmak için yeni bir klasör ve yeni bir Python ortamı oluşturuyoruz.

mkdir test_multi_agent_orchestrator
cd test_multi_agent_orchestrator
python -m venv venv
source venv/bin/activate  # On Windows use venv\\Scripts\\activate

Yeni sanal ortam etkinleştirildikten sonra kütüphaneyi kurun

pip install multi-agent-orchestrator

Sırada AWS hesabımızı yapılandırmak var. Bir AWS hesabınız yoksa, ücretsiz free tier hesabı oluşturun. Kaydolduktan sonra AWS CLI’ı indirin.

AWS CLI’ın da yapılandırılması gerekir. Ayrıntılı talimatlar için AWS CLI’ı kurma bölümünü izleyin; ancak daha kolay bir yaklaşım olarak aws configure komutunu kullanıp AWS erişim anahtarı kimliği ve gizli erişim anahtarını sağlayabilirsiniz. Bu anahtarları, kontrol panelinizde yeni bir kullanıcı oluşturduktan sonra alabilirsiniz.

Yeni bir kullanıcı oluşturulurken sağlanan erişim anahtarları.

Yeni bir kullanıcı oluşturulurken sağlanan erişim anahtarları.

Erişim anahtarları elinizdeyken aws configure komutunu çalıştırın, anahtarları girin, bölge adını seçin (tam listeye buradan ulaşabilirsiniz) size en yakın olanı seçin ve varsayılan çıktı biçimini json olarak ayarlayın.

AWS CLI’ı yapılandırma

CLI’nız doğru yapılandırıldıysa, aws sts get-caller-identity komutunu çalıştırmak AWS hesap kimliğinizi, kullanıcı kimliğinizi ve ARN’nizi göstermelidir.

Artık AWS CLI hazır olduğuna göre, ihtiyaç duyacağımız LLM’lere erişim vermek için AWS Bedrock’u yapılandırmamız gerekiyor. Amazon Bedrock, temel modelleri (örneğin Llama 3.2 veya Claude 3.5 Sonnet) bir API üzerinden test etmenizi ve çağırmanızı sağlayan bir hizmettir. Multi-Agent Orchestrator bu hizmeti varsayılan olarak iki modeli çağırmak için kullanır:

  1. Sınıflandırıcı olarak Claude 3.5 Sonnet
  2. Ajan olarak Claude 3 Haiku

Elbette bu modeller değiştirilebilir, ancak varsayılan seçimle devam edelim.

Bu iki modele erişim vermek için Amazon Bedrock > Model Access bölümüne gidin ve “Modify model access” seçeneğini tıklayın. İki modeli (isterseniz diğerlerini de) seçin ve gerekli bilgileri doldurun. Bu bölüm aşağıdaki gibi görünecektir:

Bedrock modellerine erişim talep etme

İsteği tamamladıktan sonra modeller 1-2 dakika içinde kullanılabilir olacaktır. İstenen modeller için erişim verildiğinde, karşılarında “Access granted” görmelisiniz.

İstenen modellere erişim verildi

Not: Oluşturduğunuz kullanıcıya bir ilke atamanız gerekebilir. Bunu, makalemizin bir sonraki alt bölümünde (Kurulumunuzu test edin) sorunla karşılaşırsanız test edebilirsiniz. Öyleyse, bu sayfaya göz atın. Özetle, tanımladığınız kullanıcıya AmazonBedrockFullAccess erişimi vermeniz gerekir.

Kurulumunuzu test edin

Önceki adımların doğru şekilde ayarlanıp ayarlanmadığını kontrol etmek için bu kodu kullanın:

import uuid
import asyncio
import json
import sys
from typing import Optional, List, Dict, Any
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator, OrchestratorConfig
from multi_agent_orchestrator.agents import (
    BedrockLLMAgent,
    BedrockLLMAgentOptions,
    AgentResponse,
    AgentCallbacks,
)
from multi_agent_orchestrator.types import ConversationMessage, ParticipantRole

orchestrator = MultiAgentOrchestrator(
    options=OrchestratorConfig(
        LOG_AGENT_CHAT=True,
        LOG_CLASSIFIER_CHAT=True,
        LOG_CLASSIFIER_RAW_OUTPUT=True,
        LOG_CLASSIFIER_OUTPUT=True,
        LOG_EXECUTION_TIMES=True,
        MAX_RETRIES=3,
        USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED=True,
        MAX_MESSAGE_PAIRS_PER_AGENT=10,
    )
)


class BedrockLLMAgentCallbacks(AgentCallbacks):
    def on_llm_new_token(self, token: str) -> None:
        # handle response streaming here
        print(token, end="", flush=True)


tech_agent = BedrockLLMAgent(
    BedrockLLMAgentOptions(
        name="Tech Agent",
        streaming=True,
        description=(
            "Specializes in technology areas including software development, hardware, AI, "
            "cybersecurity, blockchain, cloud computing, emerging tech innovations, and pricing/costs "
            "related to technology products and services."
        ),
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        callbacks=BedrockLLMAgentCallbacks(),
    )
)

orchestrator.add_agent(tech_agent)


async def handle_request(
    _orchestrator: MultiAgentOrchestrator, _user_input: str, _user_id: str, _session_id: str
):
    response: AgentResponse = await _orchestrator.route_request(
        _user_input, _user_id, _session_id
    )
    # Print metadata
    print("\nMetadata:")
    print(f"Selected Agent: {response.metadata.agent_name}")
    if response.streaming:
        print("Response:", response.output.content[0]["text"])
    else:
        print("Response:", response.output.content[0]["text"])


if __name__ == "__main__":
    USER_ID = "user123"
    SESSION_ID = str(uuid.uuid4())
    print("Welcome to the interactive Multi-Agent system. Type 'quit' to exit.")
    while True:
        # Get user input
        user_input = input("\nYou: ").strip()
        if user_input.lower() == "quit":
            print("Exiting the program. Goodbye!")
            sys.exit()
        # Run the async function
        asyncio.run(handle_request(orchestrator, user_input, USER_ID, SESSION_ID))

İstemde bulunup yanıt alabiliyorsanız her şey yolunda demektir.

AWS Multi-Agent Orchestrator ile Demo Proje

AWS Multi-Agent Orchestrator deposu, TypeScript ve Python’da birkaç örnek proje sunar. Şimdi iki ajandan oluşan basitleştirilmiş bir Python uygulaması yazacağız: Python Geliştirici Ajanı ve ML Uzmanı Ajanı.

Uygulama için basit bir arayüz oluşturmak üzere, açık kaynak bir Python paketi olan Chainlit’i de kullanacağız. Başlamak için gerekli kütüphaneleri kurun:

chainlit==1.2.0
multi_agent_orchestrator==0.0.18

Demo uygulamamız için aşağıdaki kodu kullanacağız, ancak önce açıklayalım:

  1. Gerekli kütüphaneleri içe aktarıyoruz.
  2. “anthropic.claude-3-haiku-20240307-v1:0” modelini sınıflandırıcımız için kullanıyoruz. Bu sınıflandırıcı, yeni bir kullanıcı girdisi geldiğinde hangi ajanın kullanılacağını seçecek.
  3. Oluşturduğumuz sınıflandırıcıyı bir MultiAgentOrchestrator’a geçiriyor ve bazı yapılandırmaları tanımlıyoruz.
  4. BedrockLLMAgent sınıfı ajanlarımızı oluşturmak için kullanılır. Her ajan için bir name ve description sağlanır. Bir ajan için erişilebilir modellerden herhangi birini seçebilir veya hatta modelleri yerelde çalıştırmak için Ollama kullanabilirsiniz. streaming=True ayarlamak ve callback olarak ChainlitAgentCallbacks()’i geçirmek, ajanların yanıtları tamamı yerine akış olarak döndürmesini sağlar. Son olarak her ajanın orkestratöre eklenmesini sağlıyoruz.
  5. user_session ayarlanır ve kullanıcı ile ajan mesajlarını ele alan ana bölüm tanımlanır.
### 1
import uuid
import chainlit as cl
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator, OrchestratorConfig
from multi_agent_orchestrator.classifiers import BedrockClassifier, BedrockClassifierOptions
from multi_agent_orchestrator.agents import AgentResponse
from multi_agent_orchestrator.agents import BedrockLLMAgent, BedrockLLMAgentOptions, AgentCallbacks
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator
from multi_agent_orchestrator.types import ConversationMessage
import asyncio
import chainlit as cl

class ChainlitAgentCallbacks(AgentCallbacks):
    def on_llm_new_token(self, token: str) -> None:
        asyncio.run(cl.user_session.get("current_msg").stream_token(token))

### 2
# Initialize the orchestrator & classifier
custom_bedrock_classifier = BedrockClassifier(BedrockClassifierOptions(
    model_id='anthropic.claude-3-haiku-20240307-v1:0',
    inference_config={
        'maxTokens': 500,
        'temperature': 0.7,
        'topP': 0.9
    }
))

### 3
orchestrator = MultiAgentOrchestrator(options=OrchestratorConfig(
        LOG_AGENT_CHAT=True,
        LOG_CLASSIFIER_CHAT=True,
        LOG_CLASSIFIER_RAW_OUTPUT=True,
        LOG_CLASSIFIER_OUTPUT=True,
        LOG_EXECUTION_TIMES=True,
        MAX_RETRIES=3,
        USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED=False,
        MAX_MESSAGE_PAIRS_PER_AGENT=10,
    ),
    classifier=custom_bedrock_classifier
)

### 4
def create_python_dev():
    return BedrockLLMAgent(BedrockLLMAgentOptions(
        name="Python Developer Agent",
        streaming=True,
        description="Experienced Python developer specialized in writing, debugging, and evaluating only Python code.",
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        callbacks=ChainlitAgentCallbacks()
    ))

def create_ml_expert():
    return BedrockLLMAgent(BedrockLLMAgentOptions(
        name="Machine Learning Expert",
        streaming=True,
        description="Expert in areas related to machine learning including deep learning, pytorch, tensorflow, scikit-learn, and large language models.",
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        callbacks=ChainlitAgentCallbacks()
    ))

# Add agents to the orchestrator
orchestrator.add_agent(create_python_dev())
orchestrator.add_agent(create_ml_expert())

### 5
@cl.on_chat_start
async def start():
    cl.user_session.set("user_id", str(uuid.uuid4()))
    cl.user_session.set("session_id", str(uuid.uuid4()))
    cl.user_session.set("chat_history", [])

@cl.on_message
async def main(message: cl.Message):
    user_id = cl.user_session.get("user_id")
    session_id = cl.user_session.get("session_id")
    msg = cl.Message(content="")
    await msg.send()  # Send the message immediately to start streaming
    cl.user_session.set("current_msg", msg)
    response:AgentResponse = await orchestrator.route_request(message.content, user_id, session_id, {})
    # Handle non-streaming or problematic responses
    if isinstance(response, AgentResponse) and response.streaming is False:
        # Handle regular response
        if isinstance(response.output, str):
            await msg.stream_token(response.output)
        elif isinstance(response.output, ConversationMessage):
                await msg.stream_token(response.output.content[0].get('text'))
    await msg.update()

if __name__ == "__main__":
    cl.run()

Artık uygulamayı çalıştırma zamanı. Bunun için önce chainlit run [app.py](<http://app.py/>) -w komutunu çalıştırın. Tarayıcınızda açılan yeni sekmede uygulamanızı artık test edebilirsiniz.

Uygulamanın ekran görüntüsü

Ekran görüntüsünde de görebileceğiniz gibi, artık uygulamamızı test etmek ve ajanlarla sohbet etmek için bir arayüzümüz var.

İlk istem olan “Fransa’nın başkenti neresidir?” ajanlarımızdan hiçbiriyle ilgili olmadığından, sistem yanıt vermiyor. Bu, sohbetleri ilgili tutmak ve bu modelleri kullanırken gereksiz kredi harcamalarını önlemek için kritik önemdedir. Ancak ilgili bir soruyla istemde bulunulduğunda, Multi-Agent Orchestrator’ın akıllı yönlendirmesi sayesinde Machine Learning Expert ajanımız devreye girerek yanıt verir.

Sonuç

Bu blogda, yakın zamanda çıkan AWS Multi-Agent Orchestrator çerçevesini tanıttık, bazı benzersiz özelliklerini vurguladık, ortam kurulum adımlarını özetledik, Amazon Bedrock’un sunduğu temel modellere göz attık ve bir demo proje uyguladık.

Bu makalenin yazıldığı tarihte, çerçevenin kapsamlı ve detaylı bir dokümantasyonu bulunmuyor. Bellek ve araç kullanımı gibi diğer özelliklerden yararlanmak için kod tabanını okumanız ve sağlanan örnek projelere bakmanız gerekiyor.

Ajanik yapay zekâ çerçevelerini yakından takip etmek, bu hızlı tempolu alana ayak uydurmak için akıllıca bir seçimdir. AWS Multi-Agent Orchestrator, AWS hizmetlerinin altyapıları üzerine kurulu, umut vadeden bir seçenek ve gelişimini izlemeye değer.


Hesam Sheikh Hassani's photo
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Yapay Zeka alanında yüksek lisans öğrencisi ve yapay zeka teknik yazarı. En yeni yapay zeka teknolojilerine dair içgörüler paylaşıyorum, ML araştırmalarını erişilebilir kılıyor ve sizi ön planda tutmak için karmaşık YZ konularını sadeleştiriyorum.

Konular
Yapay Zekâ Aracıları
Yapay Zeka

Bu kurslarla yapay zekâyı öğrenin!

Program

Yapay Zeka Uygulamaları Geliştirme

21 sa
OpenAI API, Hugging Face ve LangChain dahil olmak üzere en yeni yapay zeka geliştirici araçlarıyla yapay zeka destekli uygulamalar oluşturmayı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör