티스토리 뷰

반응형

 

✅ 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에서 에이전트들의 대화를 실시간으로 확인하고 싶으신가요? 😊

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함
반응형