docs: add multi-agent orchestration slides, scripts, chapters, and assets
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
# MAM demo
|
||||
|
||||
https://git.godopu.com/tmpl/multi-agent-mux
|
||||
|
||||
- resume
|
||||
```bash
|
||||
/multi-agent-mux-resume
|
||||
```
|
||||
|
||||
- stop
|
||||
```bash
|
||||
/multi-agent-mux-resume
|
||||
```
|
||||
|
||||
- create
|
||||
```
|
||||
/multi-agent-mux-create --no-isolate --onboard 다음 새로운 에이전트를 생성해줘.
|
||||
```
|
||||
|
||||
- delegate-job
|
||||
```bash
|
||||
/multi-agent-mux-delegate-job agy creator에게 파이썬 초급자를 대상으로 정렬 학습을 위한 예시 코드 작성을 지시해줘.
|
||||
```
|
||||
|
||||
- loop
|
||||
```bash
|
||||
/multi-agent-mux-loop --plan --all-reviewer /goal 생성된 예시를 바탕으로 수업에 사용할 학습 자료를 만들어줘. 다음 조건을 충족하여야해.
|
||||
|
||||
- 파이썬 초급자가 보더라도 이해하기 쉽도록 실생활 예시를 통해 상세한 설명이 수록되어야 함
|
||||
- 모든 예시의 주요 코드에 대한 line 별 코드 설명이 있어야 함
|
||||
```
|
||||
|
||||
# herdr 사용법
|
||||
|
||||
실습: 세션 생성 → Claude 실행 → 소켓으로 프롬프트 전달 → 결과 확인
|
||||
|
||||
### 1. 현재 디렉터리를 cwd로 하는 새 세션 `new_session` 생성
|
||||
|
||||
```bash
|
||||
cd <현재 작업 디렉터리>
|
||||
herdr --session new_session
|
||||
```
|
||||
|
||||
Herdr의 세션은 launch-or-attach 모델이라 이 한 줄로 세션이 없으면 생성하고 동시에 attach까지 됩니다.
|
||||
|
||||
### 2. 생성된 세션에서 Claude 실행
|
||||
|
||||
attach된 pane 안에서:
|
||||
|
||||
```bash
|
||||
claude --dangerously-skip-permissions
|
||||
```
|
||||
|
||||
(테스트용으로 권한 프롬프트를 건너뛰려면 `claude --dangerously-skip-permissions`. 신뢰된 환경에서만 사용 권장.)
|
||||
|
||||
### 3. 다른 터미널에서 herdr 명령으로 프롬프트 전달 (직접 타이핑 아님)
|
||||
|
||||
새 터미널에서 에이전트 목록과 pane_id 확인:
|
||||
|
||||
```bash
|
||||
herdr --session new_session agent list
|
||||
herdr --session new_session agent get claude
|
||||
```
|
||||
|
||||
텍스트 입력 + Enter 제출을 원자적으로 수행:
|
||||
|
||||
```bash
|
||||
herdr --session new_session pane run <pane_id> "파이썬으로 정렬 프로그램을 작성해줘"
|
||||
```
|
||||
|
||||
### 4. Claude의 결과 화면 출력
|
||||
|
||||
완료될 때까지 기다렸다가 읽기:
|
||||
|
||||
```bash
|
||||
herdr --session new_session wait agent-status <pane_id> --status idle
|
||||
herdr --session new_session pane read <pane_id> --source recent --lines 150
|
||||
```
|
||||
|
||||
현재 화면만 바로 보기:
|
||||
|
||||
```bash
|
||||
herdr --session new_session pane read <pane_id> --source visible --lines 80
|
||||
```
|
||||
|
||||
`--session new_session`을 매번 붙이는 대신 `export HERDR_SESSION=new_session`으로 환경변수를 설정하면 이후 명령에서 생략 가능합니다.
|
||||
|
||||
# a2a 실습
|
||||
## 🗺️ 5단계 학습 로드맵 (Learning Roadmap)
|
||||
|
||||
### [Step 01] crewai를 통한 multi-agent 시작하기
|
||||
* **디렉토리**: [lib/crewai-example/](crewai-example/)
|
||||
* **학습 목표**: CrewAI 프레임워크와 로컬 Ollama 모델을 활용해 두 개 이상의 에이전트(기술 연구원, 작가)가 순차적으로 협업하여 분석 보고서를 도출하는 기초 워크플로우를 이해합니다.
|
||||
* **실행**:
|
||||
```bash
|
||||
./lib/crewai-example/run.sh
|
||||
```
|
||||
|
||||
- https://docs.crewai.com/v1.15.1/ko/tools/overview
|
||||
### [Step 02] a2a 기초 알아보기 (FastAPI 기반 직접 구현)
|
||||
* **디렉토리**: [lib/a2a-echo-example/](a2a-echo-example/)
|
||||
* **학습 목표**: SDK 도움 없이 원시 FastAPI를 사용해 JSON-RPC 2.0 프로토콜, 탐색 엔드포인트(`/.well-known/agent-card.json`), 메시지 수발신 규약을 직접 작성해보며 A2A 프로토콜의 밑바닥 동작 원리를 이해합니다.
|
||||
* **실행**:
|
||||
```bash
|
||||
# 터미널 1: 에코 에이전트 서버 구동
|
||||
./lib/a2a-echo-example/run.sh server
|
||||
# 터미널 2: 테스트 메시지 클라이언트 실행
|
||||
./lib/a2a-echo-example/run.sh client
|
||||
```
|
||||
|
||||
### [Step 03] a2a sdk 알아보기 (공식 SDK 전환)
|
||||
* **디렉토리**: [lib/a2a_sdk/](a2a_sdk/)
|
||||
* **학습 목표**: 정식 `a2a-sdk`를 적용하여 `AgentExecutor` 기반으로 비즈니스 에코 로직을 구현합니다. 복잡한 소통 인프라(FastAPI 라우트 마운트, 에러 처리, 큐 통신 등)가 SDK에 의해 얼마나 깔끔하게 자동화되는지 비교 체험합니다.
|
||||
* **실행**:
|
||||
```bash
|
||||
# 터미널 1: SDK 기반 에코 서버 구동
|
||||
./lib/a2a_sdk/run.sh server
|
||||
# 터미널 2: SDK 규격 호환 클라이언트 실행
|
||||
./lib/a2a_sdk/run.sh client
|
||||
```
|
||||
|
||||
### [Step 04] a2a를 이용하여 multi agent 구현해보기
|
||||
* **디렉토리**: [lib/a2a-ollama-example/](a2a-ollama-example/)
|
||||
* **학습 목표**: 앞선 SDK 뼈대에 실제 로컬 생성형 AI 모델인 `gemma4:31b-cloud`를 이식하여, 들어오는 질문에 지능적으로 답하는 실질적인 AI 비서 에이전트를 조립합니다.
|
||||
* **실행**:
|
||||
```bash
|
||||
# 터미널 1: Ollama 연동 AI 에이전트 서버 구동
|
||||
./lib/a2a-ollama-example/run.sh server
|
||||
# 터미널 2: 질문 전송 테스트
|
||||
./lib/a2a-ollama-example/run.sh client "프랑스의 수도는 어디야?"
|
||||
```
|
||||
|
||||
### [Step 05] 작업 할당은 어떻게 이루어질까? (오케스트레이션)
|
||||
* **디렉토리**: [lib/advanced-a2a-ollama-example/](advanced-a2a-ollama-example/)
|
||||
* **학습 목표**: 사용자의 복잡한 질의를 받으면 LLM을 통해 어떤 에이전트가 적합한지 동적으로 판별(분류)하고, 대상 전문 에이전트(Chat Agent 또는 Coder Agent)를 호출하여 답변을 취합하는 고급 오케스트레이션 설계 패턴을 습득합니다.
|
||||
* **실행**:
|
||||
```bash
|
||||
# 터미널 1: 두 독립 에이전트(Chat:8001, Coder:8002) 서버 동시 구동
|
||||
./lib/advanced-a2a-ollama-example/run.sh server
|
||||
|
||||
# (선택) 개별 터미널에서 서버를 분리 구동하고 싶을 때
|
||||
# 터미널 1A: Chat 에이전트만 구동 (Port 8001)
|
||||
./lib/advanced-a2a-ollama-example/run.sh server chat
|
||||
# 터미널 1B: Coder 에이전트만 구동 (Port 8002)
|
||||
./lib/advanced-a2a-ollama-example/run.sh server coding
|
||||
|
||||
# 터미널 2: 오케스트레이터 작동 및 분류 인터랙션 실행
|
||||
./lib/advanced-a2a-ollama-example/run.sh client "프랑스의 수도는 어디야?"
|
||||
```
|
||||
|
||||
### [Step 06] 동적 라우팅과 서비스 탐색 (Dynamic Binding)
|
||||
* **디렉토리**: [lib/advanced-dynamic-a2a-ollama-example/](advanced-dynamic-a2a-ollama-example/)
|
||||
* **학습 목표**: 하드코딩 라우팅의 한계를 이해하고, 런타임에 분산된 에이전트들의 명세 카드(`agent-card.json`)를 동적으로 검색(Discovery)해 스킬 목록을 추출하고, 최적 매칭 노드에 실시간으로 메시지를 라우팅 및 바인딩하는 기법을 실증합니다.
|
||||
|
||||
* **터미널 A (Chat 에이전트 - Port 9501)**:
|
||||
```bash
|
||||
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server chat
|
||||
```
|
||||
|
||||
* **터미널 B (Coder 에이전트 - Port 9502)**:
|
||||
```bash
|
||||
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server coding
|
||||
```
|
||||
|
||||
* **터미널 C (Translator 에이전트 - Port 9503)**:
|
||||
```bash
|
||||
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server translate
|
||||
```
|
||||
|
||||
* **클라이언트 질의 터미널 (오케스트레이터 클라이언트로 번역 질문)**:
|
||||
```bash
|
||||
# 오케스트레이터가 번역에 맞는 스킬을 찾아 Translator(9503 포트)로 매칭하는 것을 확인
|
||||
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh client "안녕하세요를 영어로 번역해줘."
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user