텍스트 프롬프트 보내기

이 가이드에서는 API를 사용하여 Gemini에 텍스트 프롬프트를 전송하고 모델 응답을 확인합니다.

로컬 환경에서 Python용 클라이언트 라이브러리를 사용하거나 REST API에 명령줄 요청을 전송하여 이 가이드를 완료할 수 있습니다.

프롬프트를 보낼 수 있는 Gemini 지원 언어에 대해 알아보세요.

시작하기 전에

Gemini가 텍스트를 생성하도록 텍스트 프롬프트를 전송하려면 Gemini API가 사용 설정된 프로젝트가 있어야 하며 적절한 역할과 사용자 인증 정보가 있어야 합니다. gdcloud CLI를 설치하고 초기화하고 인증해야 하며 Python용 클라이언트 라이브러리를 설치해야 합니다.

자세한 내용은 시작하기를 참고하세요.

Gemini API에 프롬프트 전송

다음 코드를 사용하여 Gemini API에 텍스트 프롬프트를 보냅니다. 이 샘플은 엠파이어 스테이트 빌딩의 높이를 반환합니다.

명령줄에서, IDE를 사용하여 또는 애플리케이션에 코드를 포함하여 코드를 실행할 수 있습니다.

Python

다음 단계에 따라 텍스트 프롬프트를 전송하고 Python 스크립트에서 텍스트를 생성하세요.

  1. API 요청을 request.json라는 JSON 파일에 저장합니다. 파일은 다음 예시와 같아야 합니다.

    {
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "How tall is the Empire State Building?"
          }
        ]
    }
    

    요청 본문 세부정보는 API 요청 형식 지정을 참고하세요.

    요청에서 매개변수를 실험해 볼 수 있습니다. 자세한 내용은 기능을 참고하세요.

  2. 필수 Python 라이브러리를 설치합니다.

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  3. Python 스크립트에서 필수 환경 변수를 설정합니다.

  4. API 요청을 인증합니다.

  5. 만든 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)
    

    다음을 바꿉니다.

  6. Python 스크립트를 저장합니다.

  7. Chat Completions 인터페이스를 사용하여 Gemini에 요청을 보냅니다.

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=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 요청을 통해 텍스트를 생성합니다.

  1. API 요청을 request.json라는 JSON 파일에 저장합니다. 파일은 다음 예시와 같아야 합니다.

    {
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "How tall is the Empire State Building?"
          }
        ]
    }
    

    요청 본문 세부정보는 API 요청 형식 지정을 참고하세요.

    요청에서 매개변수를 실험해 볼 수 있습니다. 자세한 내용은 기능을 참고하세요.

  2. API 요청을 인증합니다.

  3. 요청을 합니다.

    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
    

    다음을 바꿉니다.

다음과 비슷한 응답을 받아야 합니다.

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))

다음 단계