프런트엔드에 질문을 입력하면 POST 요청이 /api/chat 엔드포인트로 전송됩니다. 요청 본문에는 다음 형식의 사용자 질문이 포함되어야 합니다:
애플리케이션의 응답은 서버 전송 이벤트(SSE) 사양에 정의된 대로 이벤트 스트림입니다. 서버가 클라이언트에 반환하는 이벤트는 다음과 같은 순서로 진행됩니다:
data: [SESSION_ID] session-id-assigned-to-this-chat-sessiondata: [SOURCE] json-formatted-document(식별된 각 관련 문서 소스에 대해 반복됨)data: response chunk(LLM이 반환하는 각 응답 청크에 대해 반복됨)data: [DONE]
클라이언트는 요청 URL에 session_id 쿼리 문자열 인수를 추가하여 후속 질문을 하도록 선택할 수 있습니다.
챗봇 엔드포인트의 하이레벨 로직은 Flask 애플리케이션의 api_chat() 함수인 api/app.py 파일에 있습니다:
api/chat.py 파일의 ask_question() 함수는 yield 키워드를 기반으로 하는 Flask의 응답 스트리밍 기능을 사용하여 위에서 설명한 이벤트를 스트리밍하는 제너레이터 함수입니다: