AI 부트캠프/챕터5(12.30~01.31)

TIL 92

musukie 2025. 1. 31. 21:42

발표 

많은 내용을 최종 프로젝트 발표에 담고 싶었지만, 시간 관계 상 담지 못한 내용이 있다. 그 내용은 아래와 같다.

 

발표 스크립트: 향후 계획 및 발전 방향

안녕하세요. 앞으로 이 프로젝트를 더 발전시킬 기회가 있다면, 다음과 같은 방향으로 개선해 나갈 수 있을 것입니다. 오늘은 이러한 발전 가능성과 계획에 대해 말씀드리겠습니다.

1. 기능 확장

먼저, 기능 확장에 대한 계획입니다. 현재 제공하는 기능을 더욱 강화하기 위해 새로운 카테고리를 추가할 예정입니다. 이를 통해 더 많은 사용자들이 다양한 주제에 대해 학습하고 활용할 수 있도록 할 것입니다. 또한, 사용자 입력 자료를 기반으로 대화가 가능한 챗봇 기능을 개발하여, 보다 개인화된 학습 경험을 제공할 계획입니다. 사용자가 직접 자료를 입력하면 챗봇이 이를 학습하고, 맞춤형 피드백을 제공하는 방식입니다.

2. 사용자 참여 증진

다음으로는 사용자 참여를 더욱 활성화하기 위한 전략입니다. 우선, 보상 시스템을 도입하여 사용자의 지속적인 이용을 유도할 계획입니다. 예를 들어, 챗봇과의 상호작용을 통해 포인트를 획득하고, 이를 다양한 혜택으로 교환할 수 있도록 설계할 예정입니다. 또한, 커뮤니티 기능을 추가하여 사용자들이 서로의 학습 경험을 공유하고, 질문과 답변을 주고받을 수 있는 공간을 마련할 것입니다. 이를 통해 사용자 간의 소통을 강화하고, 자연스럽게 플랫폼의 활성화를 유도할 계획입니다.

다양한 플랫폼 지원

모바일 확장 현재 웹 기반 서비스에서 더 나아가, 모바일 환경에서도 원활하게 이용할 수 있도록 지원할 예정입니다. 이를 통해 사용자는 언제 어디서나 편리하게 접근할 수 있으며, 보다 직관적인 UI/UX를 제공하여 학습 경험을 개선할 계획입니다.마지막으로, 더 많은 사용자들이 편리하게 접근할 수 있도록 다양한 플랫폼을 지원할 예정입니다. 현재 웹 기반 서비스를 제공하고 있지만, 이를 모바일과 챗봇 플랫폼으로 확장하여 사용자가 언제 어디서나 편리하게 이용할 수 있도록 할 것입니다. 또한, 접근성을 향상시켜 다양한 환경에서도 원활한 사용이 가능하도록 최적화할 계획입니다.

마무리

이러한 계획을 바탕으로, 앞으로 더욱 발전하는 서비스를 만들어 나가겠습니다. 여러분의 관심과 피드백이 큰 도움이 될 것입니다. 감사합니다!


Polling 방식과 대화 세션 실시간 불러오기

📌 Polling 방식이란?

Polling은 클라이언트가 일정한 주기로 서버에 요청을 보내어 변경된 데이터를 가져오는 방식이다. 대화 세션을 실시간으로 불러오는 경우에도 사용할 수 있다.

🔹 Polling 방식의 종류

  1. Short Polling: 일정 주기로 요청을 보내며, 서버는 즉시 응답을 반환.
  2. Long Polling: 요청을 보낸 후, 새로운 데이터가 있을 때까지 서버가 응답을 지연시킴.

⚡ 대화 세션 불러오기와 Polling

대화 세션 데이터를 실시간으로 가져오기 위해서는 Long Polling 방식이 더 적합하다. Long Polling은 새로운 데이터가 있을 때까지 대기 후 응답을 반환하므로 서버 부하를 줄이면서 실시간성을 확보할 수 있다.

🛠 Long Polling 예제 (FastAPI + JavaScript)

🔹 서버 (FastAPI)

from fastapi import FastAPI
from fastapi.responses import JSONResponse
import asyncio

app = FastAPI()
chat_sessions = {"session1": ["Hello!", "How are you?"]}

@app.get("/poll/{session_id}")
async def poll_messages(session_id: str):
    old_messages = chat_sessions.get(session_id, []).copy()
    for _ in range(30):  # 최대 30초 대기
        await asyncio.sleep(1)
        new_messages = chat_sessions.get(session_id, [])
        if new_messages != old_messages:
            return JSONResponse({"messages": new_messages})
    return JSONResponse({"messages": old_messages})

🔹 클라이언트 (JavaScript)

async function pollMessages(sessionId) {
    while (true) {
        const response = await fetch(`/poll/${sessionId}`);
        const data = await response.json();
        updateChatUI(data.messages);
    }
}

function updateChatUI(messages) {
    const chatBox = document.getElementById("chat");
    chatBox.innerHTML = messages.map(msg => `<p>${msg}</p>`).join("");
}

pollMessages("session1");

🔍 Polling vs WebSocket vs SSE

방식 장점 단점 적합한 경우
Short Polling 구현이 간단함 서버 부하 증가 상태 확인
Long Polling 실시간 대응 가능, 부하 적음 요청 유지 필요 대화형 서비스
WebSocket 양방향 통신 가능 서버 리소스 사용 채팅, 알림, 게임
SSE 서버 → 클라이언트 단방향 브라우저 지원 제한 실시간 피드

🏁 결론

  • Long Polling은 대화 세션을 실시간으로 불러오는 데 적합.
  • WebSocket이 더 나은 선택일 수도 있으므로 요구사항에 맞춰 선택 필요.
  • Polling 방식은 서버 부하를 최소화하도록 구현하는 것이 중요.

'AI 부트캠프 > 챕터5(12.30~01.31)' 카테고리의 다른 글

TIL 93  (0) 2025.02.04
TIL 91  (0) 2025.01.27
TIL 90  (0) 2025.01.24
TIL 89  (0) 2025.01.24
TIL 88  (1) 2025.01.22