티스토리 뷰
✅ Swarm 시스템을 FastAPI로 외부에 개방하기 (5편)
– 나만의 AI 멀티 Agent 시스템을 API로 배포해보자
지금까지 우리는 Swarm을 이용해
✅ 나만의 GPT Agent를 만들고
✅ 다양한 역할을 가진 Agent들로 협업 Task를 구성했으며
✅ Tool을 이용해 능동적인 Agent 시스템까지 구축했습니다.
이제 이 시스템을 외부에서 요청할 수 있는 서비스형 API로 감싸면,
✅ 웹, 모바일, Slack, Notion 등 어디서든 AI 협업 기능을 쓸 수 있습니다.
🎯 목표
이번 글에서 만들고자 하는 구조:
[클라이언트 (웹/앱/슬랙)]
↓ REST API 요청 (POST /swarm/task)
[FastAPI 서버]
↓ Swarm Task 실행 (run_task)
↓ 결과 반환
⚙️ 1. FastAPI 기본 서버 구조
먼저 FastAPI 앱을 구성합니다.
pip install fastapi uvicorn
# main.py
from fastapi import FastAPI, Request
from pydantic import BaseModel
from tasks.react_login_workflow import create_swarm_task
app = FastAPI()
class TaskRequest(BaseModel):
message: str
@app.post("/swarm/task")
async def run_swarm_task(req: TaskRequest):
result = await create_swarm_task(req.message)
return {"result": result}
🧠 2. Task 실행 함수 구조
Swarm은 run_task()가 동기적으로 실행되므로, 비동기 처리하거나 스레드로 감싸야 합니다.
✅ create_swarm_task() 함수 예시
# tasks/react_login_workflow.py
from swarm.runtime import run_task
from agents.analyst import AnalystAgent
from agents.developer import DeveloperAgent
from agents.reviewer import ReviewerAgent
from agents.writer import WriterAgent
def create_swarm_task(user_message: str):
result = run_task(
name="API 기반 로그인 Task",
agents=[
AnalystAgent("분석가"),
DeveloperAgent("개발자"),
ReviewerAgent("리뷰어"),
WriterAgent("작성자")
],
messages=[
{"role": "user", "name": "user", "content": user_message}
],
return_messages=True # ✅ 결과를 받아올 수 있게 설정
)
return result
🚀 3. 서버 실행 및 테스트
uvicorn main:app --reload
✅ 테스트 with cURL
curl -X POST http://localhost:8000/swarm/task \
-H "Content-Type: application/json" \
-d '{"message": "React로 소셜 로그인 UI 만드는 법 알려줘."}'
결과:
{
"result": [
{"role": "assistant", "name": "분석가", "content": "..."},
{"role": "assistant", "name": "개발자", "content": "..."},
{"role": "assistant", "name": "리뷰어", "content": "..."},
{"role": "assistant", "name": "작성자", "content": "..."}
]
}
🔄 4. 비동기 처리 & 백그라운드 실행 (선택)
Swarm 실행 시간이 길다면, 다음과 같이 백그라운드로 처리도 가능합니다:
import threading
def background_task(message, callback):
result = create_swarm_task(message)
callback(result)
🔐 5. API 배포를 위한 준비 사항
항목 설정 방법
OpenAI API Key | .env 또는 os.environ |
CORS 설정 | from fastapi.middleware.cors import CORSMiddleware |
보안 (선택) | API Key, JWT 인증 도입 |
로깅 | logging or Sentry 연동 |
배포 | Docker + Railway, Fly.io, Render 등 |
💡 실전 팁
- Swarm Agent에서 stdout만 찍고 리턴이 없다면 return_messages=True 설정 필수
- 결과가 길 경우, WriterAgent가 응답을 한 줄 요약으로 바꾸게 하는 것도 좋은 UX
- 여러 시나리오를 /swarm/task?type=report 등으로 분기 가능
- langchain, celery, sqlite 등과 연결하면 예약형 처리도 가능
✅ 마무리
이제 우리는 Swarm으로 만든 Agent 시스템을
✅ REST API 형태로 외부에 열었고,
✅ 클라이언트 앱이나 서비스와 연동할 수 있는 구조까지 완성했습니다.
✔ GPT Agent + 협업 구조
✔ 실시간 REST 호출
✔ 확장 가능한 AI 기능 서버 구축
FastAPI, SwarmAPI, AI자동화서버, OpenAISwarm, AgentAPI, LLM서비스, GPTRESTAPI, AI협업API, Python서버, 노코드API서버
👉 다음 편은
6편: Swarm + 웹 인터페이스 연결하기 – 실시간 Agent 토론을 UI로 시각화하기
를 다룹니다. Streamlit 또는 React 기반 UI에서 에이전트들의 대화를 실시간으로 확인하고 싶으신가요? 😊
'study > ai prompt' 카테고리의 다른 글
✅ Swarm Agent 평가 및 피드백 수집 시스템 구축하기 (7편) (1) | 2025.04.15 |
---|---|
✅ Swarm + 웹 UI 연결하기 (6편) (0) | 2025.04.14 |
✅ Swarm 실전 예제: Agent 협업 시나리오 구성하기 (4편) (0) | 2025.04.11 |
✅ Swarm에서 Tool 사용이 가능한 Agent 만들기 (3편) (1) | 2025.04.10 |
📌 최신 AI 프롬프트 엔지니어링 마스터하기 - 창의성 확장 프롬프트 – AI에게 아이디어를 터뜨리게 하는 방법 (1) | 2025.04.09 |
- Total
- Today
- Yesterday
- rag
- seo 최적화 10개
- Next.js
- github
- gatsbyjs
- 백엔드개발
- REACT
- NestJS
- 프론트엔드
- LangChain
- kotlin
- 웹개발
- 스마트 컨트랙트
- Ktor
- 관리자
- AI챗봇
- AI 자동화
- fastapi
- Webpack
- CI/CD
- 개발블로그
- App Router
- Prisma
- 백엔드
- llm
- nodejs
- SEO최적화
- PostgreSQL
- nextJS
- Docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |