# 새로운 대화 생성

## UI 소개

{% tabs %}
{% tab title="데이터플로우" %}

<figure><img src="https://1362923181-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5PH5ktGI0BWG6g9fvtcn%2Fuploads%2FUsPliiJ4B4nJIWEcE1BZ%2Fcreate-completion.png?alt=media&#x26;token=40803b3b-b5a3-47ca-88dc-b7bbd9c11181" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="173" align="center">항목명</th><th width="288" align="center">항목소개</th><th align="center">비고</th></tr></thead><tbody><tr><td align="center">모델 선택</td><td align="center">사용할 모델을 선택</td><td align="center">등록된 API Key로 사용 가능한 모델 조회</td></tr><tr><td align="center">메세지 입력</td><td align="center">대화 메세지 입력</td><td align="center">상세 내용 하단 참조</td></tr><tr><td align="center">대화 지연 처리</td><td align="center">대화를 즉시 실행하지 않고 지연처리하여 원하는 시기에 볼 수 있도록 설정 (선택)</td><td align="center">기본값 : 끔</td></tr><tr><td align="center">Frequency penalty</td><td align="center">동일한 단어나 구문이 반복되지 않도록 제어하는 매개변수 (선택)</td><td align="center">범위 : -2.0 ~ 2.0 (기본값 0)</td></tr><tr><td align="center">Logic bias</td><td align="center">특정 토큰을 배제하거나 우선 선택 조정  (선택)</td><td align="center">JSON 객체 형식<br>상세 내용 하단 참조</td></tr><tr><td align="center">Logprobs 설정</td><td align="center">출력 토큰의 로그 확률 반환 여부 설정 <br>(선택)</td><td align="center">기본값 : 끔</td></tr><tr><td align="center">생성 최대 토큰 수</td><td align="center"> 메세지 값을 반환할 최대 토큰 수 (선택)</td><td align="center">모델별 최소, 최대 토큰값 설정 확인</td></tr><tr><td align="center">N</td><td align="center">요청 시 생성할 응답의 수</td><td align="center">양의 정수 (기본값 1)</td></tr><tr><td align="center">Precense penalty</td><td align="center">이전에 언급되지 않은 주제를 모델이 탐색하도록 장려하는 매개변수값 지정</td><td align="center">범위 : -2.0 ~ 2.0 (기본값 0)</td></tr><tr><td align="center">데이터 반환 유형 선택</td><td align="center">응답 데이터 반환 형태 선택 (선택)</td><td align="center">선택안함<br>텍스트 : 응답값을 문자열로 반환<br>JSON Object : 응답값을 JSON Object 로 반환<br>JSON Schema : 응답값을 지정된 JSON 스키마 형태로 반환</td></tr><tr><td align="center">JSON Schema</td><td align="center">응답값을 원하는 JSON 객체로 받기 위한 설정 (선택)</td><td align="center">데이터 반환 유형을 JSON Schema 로 지정시 필수 지정<br>상세 내용 하단 참조</td></tr><tr><td align="center">Seed</td><td align="center">난수 생성기 초기값 설정, 동일한 입력에 대해 동일한 출력 보장 가능(선택)</td><td align="center">설정시 정수값 입력</td></tr><tr><td align="center">응답 중단어 설정</td><td align="center">응답을 중단할 특정 단어 지정 (선택)</td><td align="center">다중 설정시 콤마(,) 로 구분 <br>예시) 중지,정지</td></tr><tr><td align="center">Temperature</td><td align="center">모델의 응답 생성 과정에서 무작위성 제어값 (선택)</td><td align="center">범위 : 0.0 ~ 2.0 (기본값 1)</td></tr><tr><td align="center">외부 도구 호출 여부 결정</td><td align="center">모델이 도구를 호출할 지 여부 결정 (선택)</td><td align="center">상세 내용 하단 참조</td></tr><tr><td align="center">외부 도구 설정</td><td align="center">모델이 호출 할 수 있는 함수 목록 지정 (선택)</td><td align="center">최대 128개까지 지원<br>상세 내용 하단 참조</td></tr><tr><td align="center">Top Logprobs</td><td align="center">대화생성시 반환되는 출력 토큰의 상위 로그 확률을 지정 (선택)</td><td align="center">설정시 정수값 입력</td></tr><tr><td align="center">Top P</td><td align="center">응답 생성 시 확률분포 상위 p에 해당하는 단어만 샘플링에 포함하도록 제한하는 매개변수 값 (선택)</td><td align="center">범위 : 0.0 ~ 1.0 (기본값 1)</td></tr><tr><td align="center">사용자명 입력</td><td align="center">엔드유저를 식별하는 고유 ID 설정 (선택)</td><td align="center"></td></tr></tbody></table>

## 메세지 내용 구성

메세지 내용은 메세지의 배열 형태로 구성되어 있으며 메세지의 구조는 다음과 같습니다.

<table><thead><tr><th width="173" align="center">항목명</th><th width="288" align="center">항목소개</th><th align="center">비고</th></tr></thead><tbody><tr><td align="center">content</td><td align="center">메세지 내용</td><td align="center"></td></tr><tr><td align="center">role</td><td align="center">메세지의 주체 또는 역할</td><td align="center"><ul><li>user: 사용자가 AI에게 보내는 메시지나 질문을 나타냅니다. 이는 AI가 응답해야 할 실제 입력 내용입니다.</li><li>assistant: AI 모델이 생성한 응답을 나타냅니다. 이는 user의 입력에 대한 AI의 답변입니다.</li><li>system : AI 모델이 개발자에게 전달하는 정보입니다.</li></ul></td></tr></tbody></table>

### 메세지 내용 예시

```
[
  { 
    "role": "user",              // 사용자의 질문 
    "content": "안녕하세요"
  },
  {
    "role": "assistant",         // AI의 응답 예시
    "content": "반갑습니다 무엇을 도와드릴까요?"
  },
  {
    "role": "user", 
    "content": "자동화 워크플로우에 대한 설명을 영어로 설명해줄래요?"
  },
]
```

## Logic Bias

특정 단어(또는 토큰)의 출현 확률을 강제적으로 조정할 수 있는 기능입니다.

### Logic Bias 예시

```
// Cat 이라는 단어를 더 많이 나오도록 설정할 때 
// Cat 의 토큰 ID 는 9240 
{
    "9240": 50 
}
// 값의 범위는 -100 ~ 100 이며 양수일 수록 단어 반복이 많아지며 음수일 경우 단어를 차단합니다.
```

## JSON Schema

모델이 특정 JSON 형식으로 응답하도록 강조하는 설정입니다.

```
{
  "type": "json_schema",
  "json_schema": {
  "type": "object",
  "properties": {  // 반환할 데이터 구조와 데이터 형태 지정 
    "temperature": { "type": "number" },
    "condition": { "type": "string" },
    "humidity": { "type": "integer" },
    "city": { "type": "string" }
  },
  "required": ["temperature", "condition", "city"] // 응답시 반드시 포함되어야 하는 값 지정 
}

// JSON Schema 지정 상태에서 응답 결과 예시 
{
  "temperature": 12.5,
  "condition": "맑음",
  "humidity": 60,
  "city": "서울"
}
```

## Tools

모델이 특정 기능(함수)을 호출하도록 허용하는 기능입니다.\
즉 모델이 직접 JSON 을 생성하여 API 를 호출하거나 외부 시스템과 상호작용이 가능합니다.

### Tools 예시

```
// 모델이 특정 도시의 현재 날씨를 가져오게 하는 도구 예시입니다. 

[
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "특정 도시의 현재 날씨를 가져옵니다.",
      "parameters": {
        "type": "object",
        "properties": {  // 도구 속성 및 데이터타입을 지정합니다. 
          "city": { "type": "string", "description": "날씨를 조회할 도시 이름" },
          "unit": { "type": "string", "enum": ["metric", "imperial"], "description": "온도 단위 (metric = 섭씨, imperial = 화씨)" }
        },
        "required": ["city"] // 꼭 포함해야 할 속성값을 지정합니다. 
      }
    }
  }
]

// 대화 생성시 나오는 값 
{
  "model": "grok-2-latest",
  "messages": [
    { "role": "system", "content": "당신은 날씨 정보를 제공하는 AI입니다." },
    { "role": "user", "content": "서울의 날씨 알려줘" },
    {
      "role": "tool",                // 설정한 도구 호출 결과 값 반환 
      "tool_call_id": "123456",
      "name": "get_weather",
      "arguments": {
        "city": "서울",
        "unit": "metric"
      }
    },
    {
      "role": "assistant",
      "content": "현재 서울의 날씨는 맑고, 기온은 12°C입니다."
    }
  ]
}
```

## Tool Choice

모델이 어떤 방식으로 도구를 사용할지 결정하는 옵션입니다.

### Tool choice 옵션

| 옵션값                                                                                                   | 옵션값 설명                                               |
| ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| auto                                                                                                  | <p>모델이 필요하면 툴을 호출하고, <br>필요 없으면 호출하지 않습니다. (기본값)</p> |
| none                                                                                                  | <p>모델이 절대 툴을 호출하지 않습니다. <br>(텍스트 응답만 가능)</p>         |
| required                                                                                              | 모델이 반드시 하나 이상의 툴을 호출해야 합니다.                          |
| <p>{<br>  "type": "function", <br>   "function": {<br>        "name": "my\_function"<br>   }<br>}</p> | 특정 툴 (my\_function)을 강제로 호출하도록 지정합니다.                |

***

## 실행 결과

| 데이터 값                                       | 데이터 내용                                                              |
| ------------------------------------------- | ------------------------------------------------------------------- |
| id                                          | 응답 생성 ID                                                            |
| object                                      | 응답 객체 형태 : chat.completion 고정값                                      |
| model                                       | 사용 모델                                                               |
| created                                     | 생성일시 타임스탬프                                                          |
| request\_id                                 | <p>대화 지연 생성 옵션 선택시 반환, <br>설정하지 않았을 경우 해당 값은 반환되지 않음</p>            |
| choices\[]                                  | 요청 프롬프트에 따른 응답 선택 목록                                                |
| choices\[].index                            | 응답 선택 위치                                                            |
| choices\[].finish\_reason                   | <p>텍스트 생성 중단 사유<br> - stop : 생성 완료<br> - length : Max Length 초과</p> |
| choices\[].message                          | 메세지 내용                                                              |
| choices\[].message.role                     | 메세지 역할 : system, user, assistant                                    |
| choices\[].message.content                  | 메세지 내용                                                              |
| choices\[].message.refusal                  | 모델의 응답 거부여부 (정상 호출시 값은 null)                                        |
| usage                                       | 토큰 사용량 정보                                                           |
| usage.promp\_tokens                         | 요청 메세지 토큰 수                                                         |
| usage.completion\_tokens                    | 응답 메세지 토큰 수                                                         |
| usage.total\_tokens                         | 요청, 응답을 포함한 메세지 토큰 수 총합                                             |
| usage.prompt\_token\_details                | 토큰 상세 사용 내역                                                         |
| usage.prompt\_token\_details.text\_tokens   | 텍스트 생성 사용 토큰 수                                                      |
| usage.prompt\_token\_details.audio\_tokens  | 음성 생성 사용 토큰 수                                                       |
| usage.prompt\_token\_details.image\_tokens  | 이미지 생성 사용 토큰 수                                                      |
| usage.prompt\_token\_details.cached\_tokens | 사용된 캐시된 토큰 수                                                        |
