Skip to content

Springboot Room API 명세서 #41

Description

@CutTheWire

📌 ChatBot-Backend API 명세서

📢 개요

  • API 이름: ChatBot-Backend API
  • 설명: 채팅방 및 대화 관리 API

이 API는 Office 모드와 Character 모드의 채팅방을 생성, 관리하고 대화 기록을 저장, 조회, 수정, 삭제하는 기능을 제공합니다.


📍 엔드포인트 목록

🔹 Office 채팅방 (정보 제공 모드)

📌 Office 채팅방 생성

  • GET /server/chatroom/office
    • 설명: 새로운 Office 채팅방을 생성합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 응답 예시
      {
        "status": 200,
        "message": "채팅방이 성공적으로 생성되었습니다.",
        "mysql_officeroom": {
          "idx": 3,
          "userid": "test_VIP",
          "mongo_chatroomid": "8430b4dc-45a0-47ba-a3e4-a7d01edbfcf3",
          "createdAt": "2025-03-24T17:54:32.230555456",
          "updatedAt": "2025-03-24T17:54:32.230581553"
        }
      }

📌 Office 채팅방 목록 조회

  • GET /server/chatroom/office/find_my_rooms
    • 설명: 사용자의 Office 채팅방 목록을 조회합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 응답 예시
      {
        "status": 200,
        "rooms": [
          {
            "roomid": "5df8cf5a-baae-4a53-be70-5eb2215fc237",
            "Title": "파이썬에 대해서 자..."
          }
        ]
      }

📌 Office 채팅 로그 불러오기

  • POST /server/chatroom/office/{id}/load_logs
    • 설명: 특정 Office 채팅방의 대화 로그를 불러옵니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 응답 예시
      {
        "status": 200,
        "logs": {
          "id": "5df8cf5a-baae-4a53-be70-5eb2215fc237",
          "value": [
            {
              "index": 1,
              "input_data": "파이썬에 대해서 자세하게 정보를 정리해서 마크다운으로 답변을 줄래?",
              "output_data": "물론입니다! 아래는 파이썬에 대한 자세한 정보입니다.\\n\\n```markdown\\n# 파이썬(Python)\\n\\n## 개요\\n파이썬은 1991년 귀도 반 로썸(Guido van Rossum)에 의해 처음 출시된 고급 프로그래밍 언어입니다. 파이썬은 읽기 쉽고, 코드가 간결하며, 다양한 프로그래밍 패러다임을 지원하는 것이 특징입니다. \\n\\n## 주요 특징\\n- **간결한 문법**: 파이썬은 코드가 명확하고 읽기 쉽도록 설계되었습니다.\\n- **인터프리터 언어**: 코드를 한 줄씩 실행할 수 있어 개발과 디버깅이 용이합니다.\\n- **다양한 라이브러리**: 데이터 과학, 웹 개발, 인공지능 등 다양한 분야에서 사용되는 방대한 라이브러리와 프레임워크를 제공합니다.\\n- **객체 지향**: 파이썬은 객체 지향 프로그래밍을 지원하여 코드 재사용과 구조적인 설계를 가능하게 합니다.\\n- **크로스 플랫폼**: Windows, macOS, Linux 등 다양한 운영 체제에서 실행 가능합니다.\\n\\n## 설치\\n파이썬을 설치하기 위해서는 [Python 공식 웹사이트](https://www.python.org/downloads/)에서 최신 버전을 다운로드할 수 있습니다.\\n\\n### 설치 방법 (Windows)\\n1",
              "timestamp": "2025-03-24 18:26:45"
            }
          ]
        }
      }

📌 Office AI 응답 받기

  • POST /server/chatroom/office/{id}/get_response
    • 설명: Office 채팅방에서 AI 응답을 받습니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 요청 본문
      {
        "input_data_set": "인공지능의 미래 전망에 대해 알려주세요.",
        "route_set": "Llama",
        "google_access_set": "true"
      }
      필드명 타입 제약조건 설명 예시
      input_data_set string 필수 사용자 입력 문장 "인공지능의 미래 전망에 대해 알려주세요."
      route_set string 필수 사용할 AI 모델 종류 "Llama" 또는 "gpt4o_mini"
      google_access_set string 선택 검색 기능 활성화 여부 "true" 또는 "false"
    • 응답 예시
      {
        "status": 200,
        "message": "물론입니다! 아래는 파이썬에 대한 자세한 정보입니다.\\n\\n```markdown\\n# 파이썬(Python)\\n\\n## 개요\\n파이썬은 1991년 귀도 반 로썸(Guido van Rossum)에 의해 처음 출시된 고급 프로그래밍 언어입니다. 파이썬은 읽기 쉽고, 코드가 간결하며, 다양한 프로그래밍 패러다임을 지원하는 것이 특징입니다. \\n\\n## 주요 특징\\n- **간결한 문법**: 파이썬은 코드가 명확하고 읽기 쉽도록 설계되었습니다.\\n- **인터프리터 언어**: 코드를 한 줄씩 실행할 수 있어 개발과 디버깅이 용이합니다.\\n- **다양한 라이브러리**: 데이터 과학, 웹 개발, 인공지능 등 다양한 분야에서 사용되는 방대한 라이브러리와 프레임워크를 제공합니다.\\n- **객체 지향**: 파이썬은 객체 지향 프로그래밍을 지원하여 코드 재사용과 구조적인 설계를 가능하게 합니다.\\n- **크로스 플랫폼**: Windows, macOS, Linux 등 다양한 운영 체제에서 실행 가능합니다.\\n\\n## 설치\\n파이썬을 설치하기 위해서는 [Python 공식 웹사이트](https://www.python.org/downloads/)에서 최신 버전을 다운로드할 수 있습니다.\\n\\n### 설치 방법 (Windows)\\n1"
      }

📌 Office 채팅 로그 수정

  • PUT /server/chatroom/office/{id}/update_log
    • 설명: 기존 Office 채팅 로그를 수정합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 요청 본문
      {
        "index":1,
        "input_data_set":"우리 대화를 몇번했지?",
        "route_set" : "gpt4o_mini",
        "google_access_set": "true"
      }
      필드명 타입 제약조건 설명 예시
      index integer 필수 수정할 로그의 인덱스 1
      input_data_set string 필수 수정할 사용자 입력 문장 "머신러닝과 딥러닝의 차이점에 대해 자세히 설명해주세요."
      route_set string 필수 사용할 AI 모델 종류 "Llama" 또는 "gpt4o_mini"
      google_access_set string 선택 검색 기능 활성화 여부 "true" 또는 "false"
    • 응답 예시
      {
        "status": 200,
        "message": "채팅 로그가 성공적으로 수정되었습니다.",
        "response": {
          "Result": "Successfully added data to document with ID: fb943add-a683-431e-a672-1174a25327ad, Values:1"
        }
      }

📌 Office 채팅 로그 삭제

  • DELETE /server/chatroom/office/{id}/delete_log?index={숫자}
    • 설명: 특정 Office 채팅 로그를 삭제합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 쿼리 매개변수
      매개변수 타입 필수 설명
      index integer 필수 마지막 인덱스 로그부터 입력한 인덱스 로그까지 삭제(10까지의 index라면 5 선택 시 10~5까지 삭제)
    • 응답 예시
      {
        "status": 200,
        "message": "해당 로그가 성공적으로 삭제되었습니다.",
        "response": {
          "Result": "Successfully removed data from index: 1 to the end in document with ID: 5df8cf5a-baae-4a53-be70-5eb2215fc237"
        }
      }

📌 Office 채팅방 삭제

  • DELETE /server/chatroom/office/{id}/delete_room
    • 설명: 특정 Office 채팅방을 삭제합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 응답 예시
      {
        "status": 200,
        "message": "채팅방이 성공적으로 삭제되었습니다.",
        "response": {
          "Result": "Successfully deleted document with ID: 8430b4dc-45a0-47ba-a3e4-a7d01edbfcf3"
        }
      }

🔹 Character 채팅방 (캐릭터 기반 대화 모드)

📌 Character 채팅방 생성

  • GET /server/chatroom/character/{idx}
    • 설명: 새로운 Character 채팅방을 생성합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      idx 캐릭터 인덱스
    • 응답 예시
      {
        "status": 200,
        "message": "채팅방이 성공적으로 생성되었습니다.",
        "mysql_characterroom": {
          "idx": 4,
          "userid": "test_VIP",
          "charactersIdx": 1,
          "mongo_chatroomid": "e44e4840-d779-49f4-92a6-a289e89d25fc",
          "createdAt": "2025-03-24T17:59:13.167108508",
          "updatedAt": "2025-03-24T17:59:13.167150975"
        }
      }

📌 Character 채팅방 목록 조회

  • GET /server/chatroom/character/find_my_rooms
    • 설명: 사용자의 Character 채팅방 목록을 조회합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 응답 예시
      {
        "status": 200,
        "rooms": [
          {
            "roomid": "e44e4840-d779-49f4-92a6-a289e89d25fc",
            "Title": "hi, what's..."
          }
        ]
      }

📌 Character 채팅 로그 불러오기

  • POST /server/chatroom/character/{id}/load_logs
    • 설명: 특정 Character 채팅방의 대화 로그를 불러옵니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 응답 예시
      {
        "status": 200,
        "logs": {
          "id": "e44e4840-d779-49f4-92a6-a289e89d25fc",
          "character_idx": 1,
          "value": [
            {
              "index": 1,
              "img_url": "https://lh3.googleusercontent.com/d/1vSbyd-ANS65Ms0BnMHGdYhzcCpmCYJkV=s220?authuser=0",
              "input_data": "hi, what's your name?",
              "output_data": "G-g-good…b-blessings! I-I’m Rachel. It’s n-nice to m-meet you! How can I h-help you t-today?",
              "timestamp": "2025-03-24 18:26:24"
            }
          ]
        }
      }

📌 Character AI 응답 받기

  • POST /server/chatroom/character/{id}/get_response
    • 설명: Character 채팅방에서 AI 응답을 받습니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 요청 본문
      {
        "input_data_set" : "hi, what's your name?",
        "route_set" : "gpt4o_mini"
      }
      필드명 타입 제약조건 설명 예시
      input_data_set string 필수 사용자 입력 문장 "오늘 하루는 어땠어?"
      route_set string 필수 사용할 AI 모델 종류 "Llama" 또는 "gpt4o_mini"
    • 응답 예시
      {
        "status": 200,
        "message": "G-g-good…b-blessings! I-I’m Rachel. It’s n-nice to m-meet you! How can I h-help you t-today?"
      }

📌 Character 채팅 로그 수정

  • PUT /server/chatroom/character/{id}/update_log
    • 설명: 기존 Character 채팅 로그를 수정합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 요청 본문
      {
        "index":1,
        "input_data_set":"안녕하세요?",
        "route_set" : "gpt4o_mini"
      }
      필드명 타입 제약조건 설명 예시
      index integer 필수 수정할 로그의 인덱스 1
      input_data_set string 필수 수정할 사용자 입력 문장 "네 취미에 대해 더 자세히 알려줄래?"
      route_set string 필수 사용할 AI 모델 종류 "Llama" 또는 "gpt4o_mini"
    • 응답 예시
      {
        "status": 200,
        "message": "채팅 로그가 성공적으로 수정되었습니다.",
        "response": {
          "Result": "Successfully added data to document with ID: 29e230b3-f03c-4e3e-8ea4-5535323d9801, Values:1"
        }
      }

📌 Character 채팅 로그 삭제

  • DELETE /server/chatroom/character/{id}/delete_log?index={숫자}
    • 설명: 특정 Character 채팅 로그를 삭제합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 쿼리 매개변수
      매개변수 타입 필수 설명
      index integer 필수 마지막 인덱스 로그부터 입력한 인덱스 로그까지 삭제(10까지의 index라면 5 선택 시 10~5까지 삭제)
    • 응답 예시
      {
        "status": 200,
        "message": "해당 로그가 성공적으로 삭제되었습니다.",
        "response": {
          "Result": "Successfully removed data from index: 1 to the end in document with ID: e44e4840-d779-49f4-92a6-a289e89d25fc"
        }
      }

📌 Character 채팅방 삭제

  • DELETE /server/chatroom/character/{id}/delete_room
    • 설명: 특정 Character 채팅방을 삭제합니다.
    • 헤더
      필드명 타입 필수 설명
      Authorization string 필수 사용자 인증 토큰
    • 경로 매개변수
      매개변수 설명
      id 채팅방 ID
    • 응답 예시
      {
        "status": 200,
        "message": "채팅방이 성공적으로 삭제되었습니다.",
        "response": {
          "Result": "Successfully deleted document with ID: a9022281-418a-4f75-bcc8-6cafc31633eb"
        }
      }

🛠 응답 구조 및 오류 처리

일반 응답

  • 정상 응답: HTTP 상태 코드 200과 함께 요청에 대한 성공 응답 데이터 제공
  • 오류 응답: HTTP 상태 코드와 함께 오류 상세 정보 제공

주요 오류 코드

  • 400: Bad Request - 잘못된 요청 형식 또는 필요한 데이터 누락
  • 401: Unauthorized - 인증 실패 또는 토큰 없음
  • 403: Forbidden - 접근 권한 없음
  • 404: Not Found - 요청한 리소스를 찾을 수 없음
  • 500: Internal Server Error - 서버 내부 오류

📑 특이사항

  • 인증 필수: 모든 API는 Authorization 헤더를 통한 토큰 인증이 필요합니다.
  • 멤버십 정책: 기본(BASIC) 멤버십 사용자는 Llama 모델만 사용 가능하며, VIP 멤버십 사용자는 모든 모델 사용 가능합니다.
  • 데이터 저장: 채팅 로그는 MongoDB에 저장되며, 채팅방 정보는 MySQL에 저장됩니다.
  • Office 모드: 일반적인 정보 제공 기능에 특화된 모드입니다.
  • Character 모드: 특정 캐릭터의 페르소나를 기반으로 대화하는 모드입니다.
  • 검색 기능: Office 모드에서는 google_access_set 매개변수를 통해 검색 결과를 응답에 통합할 수 있습니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions