이 가이드에서는 API를 사용하여 Gemini에 텍스트 프롬프트를 전송하고 모델 응답을 확인합니다.
로컬 환경에서 Python용 클라이언트 라이브러리를 사용하거나 REST API에 명령줄 요청을 전송하여 이 가이드를 완료할 수 있습니다.
프롬프트를 보낼 수 있는 Gemini 지원 언어에 대해 알아보세요.
시작하기 전에
Gemini가 텍스트를 생성하도록 텍스트 프롬프트를 전송하려면 Gemini API가 사용 설정된 프로젝트가 있어야 하며 적절한 역할과 사용자 인증 정보가 있어야 합니다. gdcloud CLI를 설치하고 초기화하고 인증해야 하며 Python용 클라이언트 라이브러리를 설치해야 합니다.
자세한 내용은 시작하기를 참고하세요.
Gemini API에 프롬프트 전송
다음 코드를 사용하여 Gemini API에 텍스트 프롬프트를 보냅니다. 이 샘플은 엠파이어 스테이트 빌딩의 높이를 반환합니다.
명령줄에서, IDE를 사용하여 또는 애플리케이션에 코드를 포함하여 코드를 실행할 수 있습니다.
Python
다음 단계에 따라 텍스트 프롬프트를 전송하고 Python 스크립트에서 텍스트를 생성하세요.
API 요청을
request.json라는 JSON 파일에 저장합니다. 파일은 다음 예시와 같아야 합니다.{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "How tall is the Empire State Building?" } ] }요청 본문 세부정보는 API 요청 형식 지정을 참고하세요.
요청에서 매개변수를 실험해 볼 수 있습니다. 자세한 내용은 기능을 참고하세요.
필수 Python 라이브러리를 설치합니다.
pip install openai pip install absl-py pip install typing pip install protobufAPI 요청을 인증합니다.
만든 Python 스크립트에 다음 코드를 추가합니다.
import json import os from absl import app from absl import flags from openai import OpenAI, OpenAIError from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from typing import Sequence _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) def chat_completion_client(host): return OpenAI( api_key="None", base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID" ) def chat_completion(client, messages, token): try: response = client.chat.completions.create( model="MODEL_ID", messages=messages, extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"} ) print("response:", response) except Exception as e: print("Got exception:", e) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) print("Request: ", data) client = chat_completion_client(_HOST.value,) chat_completion(client=client, messages=data["messages"], token=_TOKEN.value) if __name__=="__main__": app.run(main)다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.MODEL_ID: 응답을 생성하려는 모델 엔드포인트 ID입니다.
Python 스크립트를 저장합니다.
Chat Completions 인터페이스를 사용하여 Gemini에 요청을 보냅니다.
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN다음을 바꿉니다.
SCRIPT_NAME: Python 스크립트에 지정한 이름입니다(예:client.py).ENDPOINT: 조직에서 사용하는 Gemini 엔드포인트입니다. 자세한 내용은 서비스 상태 및 엔드포인트 보기를 참고하세요.TOKEN: 획득한 인증 토큰입니다.
다음과 비슷한 응답을 받아야 합니다.
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content='The Empire State Building is **1,454 feet** (443 meters) tall.\n', refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
curl
다음 단계에 따라 텍스트 프롬프트를 보내고 REST API에 대한 curl 요청을 통해 텍스트를 생성합니다.
API 요청을
request.json라는 JSON 파일에 저장합니다. 파일은 다음 예시와 같아야 합니다.{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "How tall is the Empire State Building?" } ] }요청 본문 세부정보는 API 요청 형식 지정을 참고하세요.
요청에서 매개변수를 실험해 볼 수 있습니다. 자세한 내용은 기능을 참고하세요.
API 요청을 인증합니다.
요청을 합니다.
curl \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -X POST https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions -d @./request.json다음을 바꿉니다.
TOKEN: 획득한 인증 토큰입니다.ENDPOINT: 조직에서 사용하는 Gemini 엔드포인트입니다. 자세한 내용은 서비스 상태 및 엔드포인트 보기를 참고하세요.PROJECT_ID: 프로젝트 ID입니다.MODEL_ID: 응답을 생성하려는 모델 엔드포인트 ID입니다.
다음과 비슷한 응답을 받아야 합니다.
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content='The Empire State Building is **1,454 feet** (443 meters) tall.\n', refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))