텍스트 생성 (Text generation)
텍스트 생성 (Text generation)
Gemini API의 가장 기본적인 일은 텍스트를 생성하는 거예요. 텍스트는 물론 이미지·비디오·오디오 입력을 받아 자연어 응답을 돌려주죠. 기본 요청이 어떻게 생겼는지, 그 위에 시스템 지시와 생성 설정을 어떻게 얹는지, 그리고 멀티턴 대화를 어떻게 이어 가는지 순서대로 살펴볼게요.
기본 요청
가장 단순한 형태는 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_config의 thinking_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)
더 알아보기
- Gemini API 시작하기 — 첫 호출 흐름
- 스트리밍 — 응답을 실시간으로 받기
- 구조화 출력 — JSON 형태 응답 고정
- Gemini 모델 — 모델별 강점 비교