강남대학교 Multi-Agent 챗봇 백엔드 API
# 1. 의존성 설치
pip install -r requirements.txt
# 2. 환경 변수 설정
cp .env.example .env
# .env 파일 수정 (AGENT_RESOURCE_ID 등)
# 3. 서버 실행
uvicorn main:app --reload --port 8080서버 실행 후: http://localhost:8080
- Swagger UI: http://localhost:8080/docs
- ReDoc: http://localhost:8080/redoc
POST /chat/new응답:
{
"user_id": "anon_a1b2c3d4",
"session_id": "1234567890",
"message": "새 채팅이 시작되었습니다."
}POST /chat/message
Content-Type: application/json
{
"user_id": "anon_a1b2c3d4",
"session_id": "1234567890",
"message": "2024년 공과대학 졸업 요건 알려줘"
}응답: SSE (Server-Sent Events) 스트리밍
data: {"text": "2024년 공과대학 졸업요건은...", "done": false}
data: {"text": "기초교양 17학점...", "done": false}
data: {"text": "", "done": true}
GET /health# 프로젝트 루트에서 실행
gcloud run deploy agent-backend-api \
--source=./agent-backend \
--region=us-east4 \
--allow-unauthenticated \
--set-env-vars="AGENT_RESOURCE_ID=projects/88199591627/locations/us-east4/reasoningEngines/1183144880231153664,GOOGLE_CLOUD_PROJECT=kangnam-backend,VERTEX_AI_LOCATION=us-east4" \
--min-instances=0 \
--max-instances=10 \
--timeout=300 \
--memory=512Mi# 배포된 URL 확인
gcloud run services describe agent-backend-api --region=us-east4 --format="value(status.url)"
# 새 채팅 시작
curl -X POST https://agent-backend-api-xxx.run.app/chat/new
# 메시지 전송
curl -X POST https://agent-backend-api-xxx.run.app/chat/message \
-H "Content-Type: application/json" \
-d '{"user_id":"anon_xxx","session_id":"yyy","message":"안녕"}'# 새 채팅
curl -X POST http://localhost:8080/chat/new
# 메시지 전송 (스트리밍 확인)
curl -X POST http://localhost:8080/chat/message \
-H "Content-Type: application/json" \
-d '{"user_id":"anon_test","session_id":"123","message":"안녕"}' \
-N # 버퍼링 비활성화import requests
import json
# 새 채팅
response = requests.post("http://localhost:8080/chat/new")
data = response.json()
print(f"User ID: {data['user_id']}")
print(f"Session ID: {data['session_id']}")
# 메시지 전송 (스트리밍)
response = requests.post(
"http://localhost:8080/chat/message",
json={
"user_id": data['user_id'],
"session_id": data['session_id'],
"message": "2024년 졸업 요건"
},
stream=True
)
for line in response.iter_lines():
if line:
text = line.decode('utf-8')
if text.startswith('data: '):
event = json.loads(text[6:])
print(event['text'], end='', flush=True)agent-backend/
├── main.py # FastAPI 앱
├── config.py # 환경 변수
├── routers/
│ ├── __init__.py
│ └── chat.py # 채팅 API
├── services/
│ ├── __init__.py
│ └── chat_service.py # Agent Engine 통신
├── requirements.txt # 의존성
├── .env.example # 환경 변수 예시
└── README.md
| 변수 | 설명 | 예시 |
|---|---|---|
AGENT_RESOURCE_ID |
Agent Engine 리소스 ID | projects/.../reasoningEngines/... |
GOOGLE_CLOUD_PROJECT |
GCP 프로젝트 ID | kangnam-backend |
VERTEX_AI_LOCATION |
Vertex AI 리전 | us-east4 |
→ .env 파일을 .env.example에서 복사하고 값 설정
→ gcloud auth application-default login 실행
→ Cloud Run 배포 시 --timeout=300 설정 확인
- Agent Engine 배포:
../DEPLOYMENT.md - 프론트엔드 연동: (추후 작성)