이 페이지에서는 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 엔드포인트의 요청 본문에 있는 주요 필드와 설명이 간략하게 나와 있습니다.
| 매개변수 | ||
|---|---|---|
| 필드 이름 | 설명 | |
|
필수: 사용할 Gemini 모델입니다. 자세한 내용은 사용 가능한 Gemini 모델을 참고하세요. |
|
|
필수: 모델과의 현재 대화를 구성하는 메시지 목록입니다. 각 메시지에는 |
|
|
필수: 메시지 작성자의 역할입니다. 다음 중 하나일 수 있습니다.
|
|
|
필수: 시스템, 사용자 또는 어시스턴트의 메시지 콘텐츠입니다. 싱글턴 쿼리의 경우 값은 단일 인스턴스입니다. 멀티턴 쿼리의 경우 |
|
|
선택사항: 생성된 텍스트의 무작위성입니다. 값이 낮을수록 ( 기본값은 |
|
|
선택사항: 표시되는 출력 토큰과 추론 토큰을 포함하여 응답에서 생성할 수 있는 최대 토큰 수입니다. |
|
|
선택사항: 핵 샘플링 확률입니다. 값이 높을수록 ( 기본값은 |
|
|
선택사항: 각 프롬프트에 대해 생성할 완성 수입니다. 기본값은 |
|
|
선택사항: 발견되면 텍스트 생성 프로세스를 중지하는 문자열 목록입니다. 기본값은 |
|
|
선택사항: 최종 사용자의 고유 식별자입니다. 이 매개변수를 사용하면 사용 패턴을 추적하고 대답을 맞춤설정할 수 있습니다. |
|
content
이 필드는 메시지의 여러 부분으로 구성된 콘텐츠를 포함하는 구조화된 데이터의 기본 유형입니다.
입력이 텍스트 프롬프트인 경우 이 필드의 값은 문자열입니다. 하지만 멀티모달 프롬프트의 경우 이 필드는 각 객체에 type 및 INPUT이라는 두 가지 기본 속성이 포함된 배열로 구성됩니다. type 속성은 멀티모달 입력의 콘텐츠 유형을 나타내고 INPUT 속성은 base64로 인코딩된 데이터 또는 GDC 스토리지 버킷의 URL로 표시된 입력 요소를 포함합니다.
다음 표에는 멀티모달 프롬프트의 주요 content 필드와 설명이 나와 있습니다.
| 필드 이름 | 설명 | |
|---|---|---|
|
필수: 멀티모달 프롬프트의 콘텐츠 유형입니다. 허용되는 값은 다음과 같습니다.
|
|
|
필수: 멀티모달 프롬프트의 콘텐츠 입력입니다. 이 필드 이름은 따라서 이 필드 이름은 다음 중 하나입니다.
각 입력 필드에는 |
|
|
선택사항: 입력 콘텐츠가 URL로 제공된 경우 GDC 스토리지 버킷의 파일 경로입니다. 이미지의 경우 이 필드에는 URL 대신 base64로 인코딩된 데이터가 포함될 수 있습니다. |
|
|
선택사항: 입력 콘텐츠가 base64로 인코딩된 데이터로 제공되는 경우 문자열로 변환된 바이너리 데이터입니다. 이미지의 경우 base64로 인코딩된 데이터가 |
|
|
선택사항: 입력 콘텐츠가 입력 데이터에 따라 지원되는 형식이 다릅니다. 자세한 내용은 이미지, 오디오, 동영상, 문서의 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
}
다음 표에는 제공된 입력을 기반으로 모델에서 반환된 응답 본문의 주요 필드와 설명이 간략하게 나와 있습니다.
| 필드 이름 | 설명 | |
|---|---|---|
|
생성된 텍스트의 고유 식별자입니다. |
|
|
객체 유형입니다. 항상 |
|
|
텍스트가 생성된 시간(초)의 타임스탬프입니다. |
|
|
텍스트를 생성하는 데 사용된 모델입니다. |
|
|
텍스트 생성 선택사항 목록입니다. |
|
|
선택 목록에서 선택의 색인입니다. |
|
|
모델에서 생성된 텍스트 생성 메시지입니다. 이 필드에는 다음 속성이 포함됩니다.
|
|
|
선택의 로그 확률 정보입니다. |
|
|
모델이 토큰 생성을 중지한 이유입니다. 값은 다음 중 하나입니다.
|
|
|
요청의 사용 통계입니다. |
|
|
생성된 텍스트의 토큰 수입니다. |
|
|
프롬프트의 토큰 수입니다. |
|
|
프롬프트와 생성된 텍스트의 총 토큰 수입니다. |
|
|
모델이 실행되는 데 사용하는 백엔드 구성입니다. |
|
예시
이 섹션에는 요청 본문과 모델이 반환해야 하는 텍스트 생성 응답의 예가 포함되어 있습니다.
요청 예시
다음 예시는 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": ""
}