API 요청 형식 지정

이 페이지에서는 OpenAI Chat Completions 엔드포인트의 요청 본문 세부정보를 사용하여 Google Distributed Cloud (GDC) 오프라인 환경에서 Gemini용 API 요청을 포맷하는 방법을 안내합니다. 이 형식을 준수하면 OpenAI API의 구조를 사용하는 동시에 Gemini의 고급 기능을 애플리케이션에 원활하게 통합할 수 있습니다.

Gemini 모델 계열에는 멀티모달 프롬프트 요청에 사용할 수 있는 모델이 포함됩니다. 멀티모달이란 프롬프트에서 두 개 이상의 형식 또는 입력 유형을 사용할 수 있는 것을 말합니다. 자세한 내용은 프롬프트 설계를 참고하세요.

gRPC 라이브러리에 생성된 유형, 메서드, 필드에 대한 일반적인 설명은 Gemini gRPC 참조를 참고하세요.

시작하기 전에

API 요청을 포맷하기 전에 다음 기본 요건을 충족해야 합니다.

  • GDC에서 Gemini 기능 알아보기
  • Gemini용 API 요청을 위한 최소 프로젝트 요구사항으로 시작하세요.
  • 요청에 사용할 Gemini 모델 엔드포인트 ID를 식별합니다. 특정 모델을 선택하면 작업에 고유한 기능을 사용할 수 있습니다. GDC에서 사용 가능한 Gemini 모델을 확인하세요.
  • Gemini에서 예상되는 대답을 얻기 위해 프롬프트를 신중하게 작성하는 방법을 알아봅니다. 다양한 프롬프트 스타일과 형식을 실험하여 출력을 최적화합니다. 자세한 내용은 프롬프트 소개를 참고하세요.
  • OpenAI Chat Completions 엔드포인트에서 사용할 수 있는 다양한 파라미터를 살펴보고 Gemini의 동작을 제어하세요. temperature, max_completion_tokens, top_p과 같은 매개변수를 조정하여 생성된 텍스트의 창의성, 길이, 다양성을 제어합니다. 자세한 내용은 파라미터 실험을 참고하세요.

요청 구문

다음 예에는 모델 응답을 생성하기 위해 API 요청에 사용해야 하는 구문이 포함되어 있습니다.

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "MODEL_ID",
  messages = [
    {
      ...
    }
  ]
  ...
)

print(model_response)

curl

curl \
  -X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
  -d '{
      "model_id": "MODEL_ID",
      "messages" = [
        {
          ...
        }
      ]
      ...
  }'

API 매개변수

이 섹션에는 GDC의 Gemini API 요청의 요청 본문과 모델이 반환해야 하는 응답 본문에서 정의할 수 있는 가장 중요한 매개변수 목록이 포함되어 있습니다. OpenAI의 Chat Completions 엔드포인트에 대한 전체 API 참조는 https://platform.openai.com/docs/api-reference/chat을 참고하세요.

요청 본문

{
  "messages" = [
    {
      "role": string,
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": string
          }
        },
        {
          "type": "input_audio",
          "input_audio": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "audio_url",
          "audio_url": {
            "url": string
          }
        },
        {
          "type": "input_video",
          "input_video": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "video_url",
          "video_url": {
            "url": string
          }
        },
        {
          "type": "input_document",
          "input_document": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "document_url",
          "document_url": {
            "url": string
          }
        }
      ]
    }
  ],
  "temperature": number,
  "max_completion_tokens": integer,
  "top_p": number,
  "n": integer,
  "stop": string,
  "user": string
}

다음 표에는 Gemini와 함께 사용할 때 OpenAI Chat Completions 엔드포인트의 요청 본문에 있는 주요 필드와 설명이 간략하게 나와 있습니다.

매개변수
필드 이름 설명

model

필수: string

사용할 Gemini 모델입니다.

자세한 내용은 사용 가능한 Gemini 모델을 참고하세요.

messages

필수: object

모델과의 현재 대화를 구성하는 메시지 목록입니다. 각 메시지에는 rolecontent가 있습니다.

텍스트, 이미지, 오디오, 동영상, 문서와 같은 다양한 메시지 유형 (모달리티)이 지원됩니다.

role

필수: string

메시지 작성자의 역할입니다. 다음 중 하나일 수 있습니다.

  • system: 사용자가 보낸 메시지와 관계없이 모델이 따라야 하는 시스템 제공 안내입니다.
  • user: 모델이 응답해야 하며 프롬프트 또는 추가 컨텍스트 정보가 포함된 사용자 제공 메시지입니다.
  • assistant: 사용자 메시지에 대한 모델 제공 메시지입니다.

content

필수: string 또는 array

시스템, 사용자 또는 어시스턴트의 메시지 콘텐츠입니다.

싱글턴 쿼리의 경우 값은 단일 인스턴스입니다. 멀티턴 쿼리의 경우 content은 대화 기록과 최근 요청이 포함된 반복 필드입니다. 자세한 내용은 content를 참고하세요.

temperature

선택사항: number 또는 null

생성된 텍스트의 무작위성입니다.

값이 낮을수록 (0에 가까울수록) 더 결정적이고 집중된 응답이 생성되는 반면, 값이 높을수록 (2에 가까울수록) 더 다양하고 창의적인 출력이 생성됩니다.

기본값은 1입니다.

max_completion_tokens

선택사항: integer 또는 null

표시되는 출력 토큰과 추론 토큰을 포함하여 응답에서 생성할 수 있는 최대 토큰 수입니다.

top_p

선택사항: number 또는 null

핵 샘플링 확률입니다.

값이 높을수록 (1에 가까울수록) 더 광범위한 잠재적 토큰에서 샘플링하는 반면, 값이 낮을수록 (0에 가까울수록) 가능성이 가장 높은 토큰에 집중합니다.

기본값은 1입니다.

n

선택사항: integer 또는 null

각 프롬프트에 대해 생성할 완성 수입니다.

기본값은 1입니다.

stop

선택사항: string, array, null

발견되면 텍스트 생성 프로세스를 중지하는 문자열 목록입니다.

기본값은 null입니다.

user

선택사항: string

최종 사용자의 고유 식별자입니다.

이 매개변수를 사용하면 사용 패턴을 추적하고 대답을 맞춤설정할 수 있습니다.

content

이 필드는 메시지의 여러 부분으로 구성된 콘텐츠를 포함하는 구조화된 데이터의 기본 유형입니다.

입력이 텍스트 프롬프트인 경우 이 필드의 값은 문자열입니다. 하지만 멀티모달 프롬프트의 경우 이 필드는 각 객체에 typeINPUT이라는 두 가지 기본 속성이 포함된 배열로 구성됩니다. type 속성은 멀티모달 입력의 콘텐츠 유형을 나타내고 INPUT 속성은 base64로 인코딩된 데이터 또는 GDC 스토리지 버킷의 URL로 표시된 입력 요소를 포함합니다.

다음 표에는 멀티모달 프롬프트의 주요 content 필드와 설명이 나와 있습니다.

필드 이름 설명

type

필수: string

멀티모달 프롬프트의 콘텐츠 유형입니다. 허용되는 값은 다음과 같습니다.

  • image_url: 입력 콘텐츠는 base64로 인코딩된 데이터 또는 GDC 스토리지 버킷의 URL로 제공되는 이미지입니다.
  • input_audio: 입력 콘텐츠는 base64로 인코딩된 데이터로 제공되는 오디오입니다.
  • audio_url: 입력 콘텐츠는 GDC 스토리지 버킷에서 URL로 제공되는 오디오입니다.
  • input_video: 입력 콘텐츠는 base64로 인코딩된 데이터로 제공되는 동영상입니다.
  • video_url: 입력 콘텐츠는 GDC 스토리지 버킷에서 URL로 제공되는 동영상입니다.
  • input_document: 입력 콘텐츠는 base64로 인코딩된 데이터로 제공되는 문서입니다.
  • document_url: 입력 콘텐츠는 GDC 스토리지 버킷에서 URL로 제공되는 문서입니다.

INPUT

필수: object

멀티모달 프롬프트의 콘텐츠 입력입니다. 이 필드 이름은 type 필드에 지정된 값과 동일해야 합니다.

따라서 이 필드 이름은 다음 중 하나입니다.

  • 이미지: image_url
  • 오디오: input_audio 또는 audio_url
  • 동영상: input_video 또는 video_url
  • 문서: input_document 또는 document_url

각 입력 필드에는 url 또는 dataformat가 있습니다.

url

선택사항: string

입력 콘텐츠가 URL로 제공된 경우 GDC 스토리지 버킷의 파일 경로입니다.

이미지의 경우 이 필드에는 URL 대신 base64로 인코딩된 데이터가 포함될 수 있습니다.

data

선택사항: string

입력 콘텐츠가 base64로 인코딩된 데이터로 제공되는 경우 문자열로 변환된 바이너리 데이터입니다.

이미지의 경우 base64로 인코딩된 데이터가 url 필드에 대신 제공됩니다.

format

선택사항: string

입력 콘텐츠가 data 필드에 제공된 경우 제공된 데이터의 형식 사양입니다.

입력 데이터에 따라 지원되는 형식이 다릅니다. 자세한 내용은 이미지, 오디오, 동영상, 문서의 MIME 유형을 참고하세요.

응답 본문

{
  "id": string,
  "object": string,
  "created": integer,
  "model": string,
  "choices": [
    {
      "index": integer,
      "message": {
        "role": string,
        "content": string,
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": string
    }
  ],
  "usage": {
    "completion_tokens": integer,
    "prompt_tokens": integer,
    "total_tokens": integer
  },
  "system_fingerprint": string
}

다음 표에는 제공된 입력을 기반으로 모델에서 반환된 응답 본문의 주요 필드와 설명이 간략하게 나와 있습니다.

필드 이름 설명

id

string

생성된 텍스트의 고유 식별자입니다.

object

string

객체 유형입니다. 항상 chat.completion입니다.

created

integer

텍스트가 생성된 시간(초)의 타임스탬프입니다.

model

string

텍스트를 생성하는 데 사용된 모델입니다.

choices

array

텍스트 생성 선택사항 목록입니다. n1보다 큰 경우 이 필드에는 여러 선택사항이 포함될 수 있습니다.

index

integer

선택 목록에서 선택의 색인입니다.

message

object

모델에서 생성된 텍스트 생성 메시지입니다. 이 필드에는 다음 속성이 포함됩니다.

  • role: (string) 메시지 작성자의 역할입니다.
  • content: (string 또는 null) 메시지의 콘텐츠입니다.
  • refusal: (string 또는 null) 모델에서 생성된 거부 메시지입니다.

logprobs

object 또는 null

선택의 로그 확률 정보입니다.

finish_reason

string

모델이 토큰 생성을 중지한 이유입니다. 값은 다음 중 하나입니다.

  • stop: 모델이 자연스러운 중지 지점 또는 제공된 중지 시퀀스에 도달합니다.
  • length: 요청에 지정된 최대 토큰 수에 도달했습니다.
  • content_filter: 콘텐츠 필터의 플래그로 인해 콘텐츠가 누락되었습니다.
  • tool_calls: 도구라고 하는 모델입니다.

usage

object

요청의 사용 통계입니다.

completion_tokens

integer

생성된 텍스트의 토큰 수입니다.

prompt_tokens

integer

프롬프트의 토큰 수입니다.

total_tokens

integer

프롬프트와 생성된 텍스트의 총 토큰 수입니다.

system_fingerprint

string

모델이 실행되는 데 사용하는 백엔드 구성입니다.

예시

이 섹션에는 요청 본문과 모델이 반환해야 하는 텍스트 생성 응답의 예가 포함되어 있습니다.

요청 예시

다음 예시는 Gemini에 텍스트를 생성하도록 프롬프트를 전송하는 요청 본문의 세부정보를 보여줍니다. 이 예에는 온도 및 최대 토큰 컨트롤이 포함되어 있습니다. 구현에 관한 자세한 내용은 텍스트 프롬프트 보내기 또는 멀티모달 프롬프트 보내기를 참고하세요.

{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful and informative assistant."
    },
    {
      "role": "user",
      "content": "What is the capital of France?"
    }
  ],
  "temperature": 0.7,
  "max_completion_tokens": 100
}

응답 예시

다음 예시는 모델에서 반환된 텍스트 생성 응답의 세부정보를 보여줍니다.

{
  "id": "",
  "object": "",
  "created": 0,
  "model": "",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The capital of France is Paris.\n",
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 8,
    "total_tokens": 15
  },
  "system_fingerprint": ""
}

다음 단계