원 레포랑 완전 분리

This commit is contained in:
ai-cell-a100-1
2025-08-11 18:56:38 +09:00
commit 7217d3cbaa
86 changed files with 6631 additions and 0 deletions

198
docs/summary_api.md Normal file
View File

@@ -0,0 +1,198 @@
# Summary API 기능 명세서
제공된 코드를 기반으로 `summary` 태그로 그룹화된 API에 대한 기능 명세서입니다.
---
## 1. 통합 요약 생성 (STT 요약)
여러 LLM 모델을 동시에 호출하여 입력된 텍스트에 대한 요약 결과를 통합하여 반환합니다.
* **Endpoint:** `/summary`
* **Method:** `POST`
* **Tag:** `summary`
* **Description:**
* 하나의 텍스트 입력을 받아 내부적으로 구성된 여러 모델(gpt-4.1-mini, qwen3:custom, gemini-2.5-flash, claude-3-7-sonnet-latest 등)을 통해 요약을 실행하고, 그 결과를 종합하여 반환합니다.
* 동기적으로 처리되며, 모든 모델의 요약이 완료될 때까지 응답을 대기합니다.
### Request Body
| 필드명 | 타입 | 필수 여부 | 설명 |
| :--- | :--- | :--- | :--- |
| `text` | `string` | Y | 요약할 원본 텍스트 |
### Response Body
| 필드명 | 타입 | 설명 |
| :--- | :--- | :--- |
| `summary_results` | `object` | 각 모델별 요약 결과가 포함된 객체 |
### cURL Example
```bash
curl -X 'POST' \
'http://localhost:8888/summary' \
-H 'Content-Type: application/json' \
-d '{
"text": "오늘 회의에서는 3분기 신제품 출시 계획에 대해 논의했습니다. 주요 안건은..."
}'
```
---
## 2. Ollama 모델 요약 생성
Ollama를 통해 호스팅되는 `qwen` 모델을 사용하여 텍스트를 요약합니다.
* **Endpoint:** `/ollama_summary`
* **Method:** `POST`
* **Tag:** `summary`
* **Description:**
* 지정된 `qwen` 모델만을 사용하여 텍스트 요약을 수행합니다.
### Request Body
| 필드명 | 타입 | 필수 여부 | 설명 |
| :--- | :--- | :--- | :--- |
| `text` | `string` | Y | 요약할 원본 텍스트 |
### Response Body
| 필드명 | 타입 | 설명 |
| :--- | :--- | :--- |
| `summary_results` | `string` | `qwen` 모델의 요약 결과 |
### cURL Example
```bash
curl -X 'POST' \
'http://localhost:8888/ollama_summary' \
-H 'Content-Type: application/json' \
-d '{
"text": "Ollama QWEN 모델을 테스트하기 위한 샘플 텍스트입니다."
}'
```
---
## 3. Gemini 모델 요약 생성
Gemini 모델을 사용하여 텍스트를 요약합니다.
* **Endpoint:** `/gemini_summary`
* **Method:** `POST`
* **Tag:** `summary`
* **Description:**
* Gemini 모델만을 사용하여 텍스트 요약을 수행합니다.
### Request Body
| 필드명 | 타입 | 필수 여부 | 설명 |
| :--- | :--- | :--- | :--- |
| `text` | `string` | Y | 요약할 원본 텍스트 |
### Response Body
| 필드명 | 타입 | 설명 |
| :--- | :--- | :--- |
| `summary_results` | `string` | Gemini 모델의 요약 결과 |
### cURL Example
```bash
curl -X 'POST' \
'http://localhost:8888/gemini_summary' \
-H 'Content-Type: application/json' \
-d '{
"text": "Gemini 모델을 테스트하기 위한 샘플 텍스트입니다."
}'
```
---
## 4. 비동기 요약 작업 생성
모든 모델을 사용하여 텍스트 요약을 수행하는 백그라운드 작업을 시작합니다.
* **Endpoint:** `/task_summary`
* **Method:** `POST`
* **Tag:** `summary`
* **Description:**
* 요약 작업을 백그라운드에서 실행하도록 요청하고, 즉시 작업 ID(`task_id`)를 반환합니다.
* 실제 요약 결과는 반환된 `task_id`를 사용하여 `/task_summary/{task_id}` 엔드포인트에서 조회해야 합니다.
### Request Body
| 필드명 | 타입 | 필수 여부 | 설명 |
| :--- | :--- | :--- | :--- |
| `text` | `string` | Y | 요약할 원본 텍스트 |
### Response Body
| 필드명 | 타입 | 설명 |
| :--- | :--- | :--- |
| `task_id` | `string` | 생성된 백그라운드 작업의 고유 ID |
### cURL Example
```bash
curl -X 'POST' \
'http://localhost:8888/task_summary' \
-H 'Content-Type: application/json' \
-d '{
"text": "이것은 비동기 요약 작업을 테스트하기 위한 긴 텍스트입니다..."
}'
```
---
## 5. 비동기 요약 작업 결과 조회
`task_summary`를 통해 생성된 백그라운드 작업의 상태와 결과를 조회합니다.
* **Endpoint:** `/task_summary/{task_id}`
* **Method:** `GET`
* **Tag:** `summary`
* **Description:**
* `task_id`를 사용하여 특정 요약 작업의 진행 상태(예: 처리 중, 완료) 및 완료 시 요약 결과를 확인합니다.
### Path Parameters
| 파라미터명 | 타입 | 필수 여부 | 설명 |
| :--- | :--- | :--- | :--- |
| `task_id` | `string` | Y | 조회할 작업의 고유 ID |
### Response Body
* **작업이 진행 중일 경우:**
```json
{
"status": "processing",
"results": {}
}
```
* **작업이 완료되었을 경우:**
```json
{
"status": "completed",
"results": {
"gpt_summary": "GPT 요약 결과...",
"qwen_summary": "QWEN 요약 결과...",
"gemini_summary": "Gemini 요약 결과...",
"claude_summary": "Claude 요약 결과..."
}
}
```
* **잘못된 `task_id`일 경우:**
```json
{
"error": "Invalid task_id"
}
```
### cURL Example
```bash
curl -X 'GET' \
'http://localhost:8888/task_summary/your_generated_task_id'
```