텍스트 생성 (Text generation)

텍스트 생성 (Text generation)

Gemini API의 가장 기본적인 일은 텍스트를 생성하는 거예요. 텍스트는 물론 이미지·비디오·오디오 입력을 받아 자연어 응답을 돌려주죠. 기본 요청이 어떻게 생겼는지, 그 위에 시스템 지시와 생성 설정을 어떻게 얹는지, 그리고 멀티턴 대화를 어떻게 이어 가는지 순서대로 살펴볼게요.

출처: 텍스트 생성 - Google 공식 문서

기본 요청

가장 단순한 형태는 interactions.create에 모델과 입력만 넘기는 요청이에요.

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.7-flash",
    input="How does AI work?"
)
print(interaction.output_text)

REST로는 https://generativelanguage.googleapis.com/v1beta/interactions에 POST를 보내면 됩니다:

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.7-flash",
    "input": "How does AI work?"
  }'

반환된 Interaction 객체에서 가장 자주 쓰는 편의 속성이 interaction.output_text예요. 응답의 마지막 텍스트 블록들을 이어서 반환하죠. 다만 이미지·오디오·도구 호출 같은 비텍스트 콘텐츠로 끊긴 앞부분 텍스트는 포함하지 않으니, 복잡한 멀티모달 응답은 steps를 직접 순회해야 합니다.

Gemini의 생각(Thinking)

Gemini 모델은 기본으로 생각(thinking) 이 켜져 있어요. 응답 전에 추론을 거치도록 설계됐거든요. generation_configthinking_level로 비용·지연·지능 사이의 균형을 조절할 수 있습니다.

interaction = client.interactions.create(
    model="gemini-3.7-flash",
    input="How does AI work?",
    generation_config={
        "thinking_level": "low"
    }
)

시스템 지시와 생성 설정

모델의 행동을 안내하려면 system_instruction 파라미터를 넘겨요. 예를 들어 모델을 '고양이'로 정체화시키고 싶다면 이렇게 하면 됩니다:

interaction = client.interactions.create(
    model="gemini-3.7-flash",
    system_instruction="You are a cat. Your name is Neko.",
    input="Hello there"
)

temperature 같은 기본 생성 파라미터는 generation_config로 재정의할 수 있어요.

interaction = client.interactions.create(
    model="gemini-3.7-flash",
    input="Explain how AI works",
    generation_config={
        "temperature": 1.0
    }
)

멀티모달 입력

Gemini API는 텍스트에 미디어 파일을 결합한 멀티모달 입력을 지원해요. 이미지를 넘기는 예시를 보면, 먼저 Files API로 파일을 업로드한 뒤 그 URI를 입력 배열에 넣는 구조입니다.

uploaded_file = client.files.upload(file="path/to/organ.jpg")

interaction = client.interactions.create(
    model="gemini-3.7-flash",
    input=[
        {"type": "text", "text": "Tell me about this instrument"},
        {
            "type": "image",
            "uri": uploaded_file.uri,
            "mime_type": uploaded_file.mime_type
        }
    ]
)
print(interaction.output_text)

이미지뿐 아니라 문서·비디오·오디오 입력도 지원하니, 상황에 맞게 활용하면 됩니다.

멀티턴 대화

대화를 이어 가는 방법은 previous_interaction_id로 이전 인터랙션을 연결하는 방식이에요. 서버가 자동으로 대화 이력을 관리해 주죠. 스트리밍과 조합해 쓰는 것도 가능합니다.

interaction1 = client.interactions.create(
    model="gemini-3.7-flash",
    input="I have 2 dogs in my house.",
)
print(interaction1.output_text)

interaction2 = client.interactions.create(
    model="gemini-3.7-flash",
    input="How many paws are in my house?",
    previous_interaction_id=interaction1.id,
)
print(interaction2.output_text)

더 알아보기