돌아가기 프롬프트 어노테이터 스키마
### 지원 도구(Tools)

| Tool Code       | 설명                 |
| --------------- | -------------------- |
| `prompt_tool`   | 프롬프트 도구        |
| `markdown_mode` | 마크다운 모드 (토글) |
| `latex_mode`    | LaTeX 모드 (토글)    |


### annotations 구조

**Classification (전체 분류):**

```json
{
  "id": "84xhCzZhU3",
  "tool": "classification",
  "isLocked": false,
  "isVisible": true,
  "classification": {
    "text": "요약작성문",
    "class": "classification_attributes",
    "multiple": ["multiple1"],
    "single_radio": "single_radio1",
    "single_dropdown": "sinsingle_dropdown1"
  }
}
```

**Prompt:**

```json
{
  "id": "ySHIvEND5a",
  "tool": "prompt",
  "isLocked": false,
  "isVisible": true,
  "classification": {
    "text": "프롬프트 대화1",
    "class": "question_attributes",
    "multiple": ["multiple1", "multiple2"],
    "single_radio": "single_radio3"
  }
}
```

**Answer:**

```json
{
  "id": "IElonNCyBb",
  "tool": "answer",
  "isLocked": false,
  "isVisible": true,
  "classification": {
    "text": "1",
    "class": "answer_attributes",
    "multiple": ["multiple1", "multiple2", "multiple3"],
    "single_radio": "single_radio1"
  }
}
```

### annotationsData 구조

**Prompt:**

```json
{
  "id": "ySHIvEND5a",
  "tool": "prompt",
  "input": [
    {
      "type": "text",
      "value": "대한민국의 데이터메이커 회사에 대해서 설명해줘",
      "changeHistory": [
        {
          "text": "이전 버전 텍스트",
          "timestamp": "2025-05-21T06:05:05.695Z"
        }
      ]
    }
  ]
}
```

**Answer:**

```json
{
  "id": "IElonNCyBb",
  "tool": "answer",
  "model": "o3-mini",
  "output": [
    {
      "type": "text",
      "value": "응답 내용...",
      "primaryKey": "text",
      "changeHistory": []
    }
  ],
  "displayName": "ChatGPT",
  "generatedBy": "chatGPT",
  "promptAnnotationId": "ySHIvEND5a"
}
```

### 필드 설명

| 필드                 | 타입           | 설명                                                            |
| -------------------- | -------------- | --------------------------------------------------------------- |
| `input`              | `InputItem[]`  | 프롬프트 입력 배열                                              |
| `output`             | `OutputItem[]` | 모델 생성 결과 배열                                             |
| `model`              | `string`       | 사용된 LLM 모델명 (예: "o3-mini", "gpt-4o", "gemini-2.0-flash") |
| `displayName`        | `string`       | UI 표시용 이름 (예: "ChatGPT", "Gemini")                        |
| `generatedBy`        | `string`       | 생성 주체 식별자                                                |
| `promptAnnotationId` | `string`       | 연결된 프롬프트 어노테이션 ID                                   |
| `changeHistory`      | `ChangeItem[]` | 편집 이력 배열                                                  |

### 샘플

LLM 프롬프트와 응답, 분류를 포함한 멀티턴 대화 예제:

```json
{
  "extra": {
    "prompt_1": {
      "taskType": "question_answering",
      "domain": "general",
      "language": "ko"
    }
  },
  "relations": {
    "prompt_1": []
  },
  "annotations": {
    "prompt_1": [
      {
        "id": "cls_global",
        "tool": "classification",
        "isLocked": false,
        "isVisible": true,
        "isValid": true,
        "classification": {
          "class": "대화_분류",
          "topic": "technology",
          "complexity": "intermediate",
          "quality_score": 4
        },
        "label": ["대화_분류"]
      },
      {
        "id": "prompt_001",
        "tool": "prompt",
        "isLocked": false,
        "isVisible": true,
        "isValid": true,
        "classification": {
          "class": "질문_유형",
          "question_type": "factual",
          "clarity": "clear"
        },
        "label": ["질문_유형"]
      },
      {
        "id": "answer_001",
        "tool": "answer",
        "isLocked": false,
        "isVisible": true,
        "isValid": true,
        "classification": {
          "class": "응답_품질",
          "accuracy": "accurate",
          "completeness": "complete",
          "helpfulness": 5
        },
        "label": ["응답_품질"]
      },
      {
        "id": "prompt_002",
        "tool": "prompt",
        "isLocked": false,
        "isVisible": true,
        "isValid": true,
        "classification": {
          "class": "질문_유형",
          "question_type": "follow_up",
          "clarity": "clear"
        },
        "label": ["질문_유형"]
      },
      {
        "id": "answer_002",
        "tool": "answer",
        "isLocked": false,
        "isVisible": true,
        "isValid": true,
        "classification": {
          "class": "응답_품질",
          "accuracy": "accurate",
          "completeness": "partial",
          "helpfulness": 4
        },
        "label": ["응답_품질"]
      }
    ]
  },
  "annotationsData": {
    "prompt_1": [
      {
        "id": "cls_global"
      },
      {
        "id": "prompt_001",
        "tool": "prompt",
        "input": [
          {
            "type": "text",
            "value": "인공지능의 딥러닝과 머신러닝의 차이점을 설명해주세요.",
            "changeHistory": []
          }
        ]
      },
      {
        "id": "answer_001",
        "tool": "answer",
        "model": "gpt-4o",
        "output": [
          {
            "type": "text",
            "value": "머신러닝(Machine Learning)과 딥러닝(Deep Learning)은 모두 인공지능의 하위 분야입니다.\n\n**머신러닝**은 데이터에서 패턴을 학습하여 예측이나 결정을 수행하는 알고리즘의 집합입니다. 특성 엔지니어링이 중요하며, 결정 트리, SVM, 랜덤 포레스트 등의 알고리즘이 포함됩니다.\n\n**딥러닝**은 머신러닝의 한 종류로, 인공 신경망을 여러 층으로 쌓아 복잡한 패턴을 학습합니다. 이미지 인식, 자연어 처리 등에서 뛰어난 성능을 보이며, 대량의 데이터와 연산 능력이 필요합니다.\n\n주요 차이점:\n1. 특성 추출: 머신러닝은 수동, 딥러닝은 자동\n2. 데이터 요구량: 딥러닝이 더 많은 데이터 필요\n3. 해석 가능성: 머신러닝이 상대적으로 해석하기 쉬움",
            "primaryKey": "text",
            "changeHistory": [
              {
                "text": "머신러닝과 딥러닝은 AI의 하위 분야입니다.",
                "timestamp": "2025-06-15T10:30:00.000Z"
              }
            ]
          }
        ],
        "displayName": "GPT-4o",
        "generatedBy": "openai",
        "promptAnnotationId": "prompt_001"
      },
      {
        "id": "prompt_002",
        "tool": "prompt",
        "input": [
          {
            "type": "text",
            "value": "그렇다면 딥러닝을 시작하기 위해 필요한 기초 지식은 무엇인가요?",
            "changeHistory": []
          }
        ]
      },
      {
        "id": "answer_002",
        "tool": "answer",
        "model": "gpt-4o",
        "output": [
          {
            "type": "text",
            "value": "딥러닝을 시작하기 위한 기초 지식은 다음과 같습니다:\n\n1. **수학**: 선형대수학, 미적분학, 확률/통계\n2. **프로그래밍**: Python, NumPy, Pandas\n3. **머신러닝 기초**: 지도/비지도 학습, 과적합, 교차 검증\n4. **프레임워크**: TensorFlow, PyTorch\n\n초보자라면 Andrew Ng의 Coursera 강좌를 추천드립니다.",
            "primaryKey": "text",
            "changeHistory": []
          }
        ],
        "displayName": "GPT-4o",
        "generatedBy": "openai",
        "promptAnnotationId": "prompt_002"
      }
    ]
  },
  "annotationGroups": {
    "prompt_1": []
  },
  "assignmentId": 9001
}
```