Gemini API는 텍스트, 이미지, 동영상, 오디오를 입력으로 제공하면 텍스트 출력을 생성할 수 있습니다.
이 가이드에서는 generateContent
및 streamGenerateContent
메서드를 사용하여 텍스트를 생성하는 방법을 보여줍니다. Gemini의 비전 및 오디오 기능을 사용하는 방법을 자세히 알아보려면 Vision 및 오디오 가이드를 참고하세요.
시작하기 전에: 프로젝트 및 API 키 설정
Gemini API를 호출하기 전에 프로젝트를 설정하고 API 키를 구성해야 합니다.
텍스트 전용 입력에서 텍스트 생성
Gemini API를 사용하여 텍스트를 생성하는 가장 간단한 방법은 다음 예와 같이 모델에 단일 텍스트 전용 입력을 제공하는 것입니다.
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)
이 경우 프롬프트('마법의 배낭에 관한 스토리 작성')에는 출력 예, 시스템 안내 또는 형식 정보가 포함되지 않습니다. 제로샷 접근 방식입니다. 일부 사용 사례에서는 원샷 또는 퓨샷 프롬프트가 사용자 기대치에 더 부합하는 출력을 생성할 수 있습니다. 경우에 따라 모델이 작업을 이해하거나 특정 가이드라인을 따르는 데 도움이 되는 시스템 안내를 제공할 수도 있습니다.
텍스트 및 이미지 입력에서 텍스트 생성
Gemini API는 텍스트와 미디어 파일을 결합한 멀티모달 입력을 지원합니다. 다음 예는 텍스트 및 이미지 입력에서 텍스트를 생성하는 방법을 보여줍니다.
import PIL.Image
model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)
텍스트 전용 프롬프팅과 마찬가지로 멀티모달 프롬프팅에도 다양한 접근 방식과 개선이 포함될 수 있습니다. 이 예시의 출력에 따라 프롬프트에 단계를 추가하거나 안내를 더 구체적으로 제공해야 할 수 있습니다. 자세한 내용은 파일 프롬프트 전략을 참고하세요.
텍스트 스트림 생성
기본적으로 모델은 전체 텍스트 생성 프로세스를 완료한 후에 응답을 반환합니다. 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 실행할 수 있습니다.
다음 예에서는 streamGenerateContent
메서드를 사용하여 스트리밍을 구현하여 텍스트 전용 입력 프롬프트에서 텍스트를 생성하는 방법을 보여줍니다.
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
대화형 채팅 빌드
Gemini API를 사용하여 사용자를 위한 양방향 채팅 환경을 빌드할 수 있습니다. API의 채팅 기능을 사용하면 여러 번의 질문과 응답을 수집할 수 있으므로 사용자가 점진적으로 답변을 찾거나 여러 부분으로 구성된 문제와 관련하여 도움을 받을 수 있습니다. 이 기능은 챗봇, 양방향 교사, 고객 지원 어시스턴트와 같이 지속적인 커뮤니케이션이 필요한 애플리케이션에 적합합니다.
다음 코드 예는 기본 채팅 구현을 보여줍니다.
model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
history=[
{"role": "user", "parts": "Hello"},
{"role": "model", "parts": "Great to meet you. What would you like to know?"},
]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)
채팅 스트리밍 사용 설정
다음 예와 같이 채팅과 함께 스트리밍을 사용할 수도 있습니다.
model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
history=[
{"role": "user", "parts": "Hello"},
{"role": "model", "parts": "Great to meet you. What would you like to know?"},
]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
print(chat.history)
텍스트 생성 구성
모델에 전송하는 모든 프롬프트에는 모델이 응답을 생성하는 방식을 제어하는 매개변수가 포함됩니다. GenerationConfig
를 사용하여 이러한 매개변수를 구성할 수 있습니다. 매개변수를 구성하지 않으면 모델은 기본 옵션을 사용하며 이는 모델에 따라 다를 수 있습니다.
다음 예는 사용 가능한 여러 옵션을 구성하는 방법을 보여줍니다.
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
"Tell me a story about a magic backpack.",
generation_config=genai.types.GenerationConfig(
# Only one candidate for now.
candidate_count=1,
stop_sequences=["x"],
max_output_tokens=20,
temperature=1.0,
),
)
print(response.text)
candidateCount
는 반환할 생성된 응답 수를 지정합니다.
현재 이 값은 1로만 설정할 수 있습니다. 설정하지 않으면 기본값은 1입니다.
stopSequences
는 출력 생성을 중지하는 문자 시퀀스 (최대 5개)를 지정합니다. 지정하면 stop_sequence
가 처음 표시될 때 API가 중지됩니다. 중지 시퀀스는 응답에 포함되지 않습니다.
maxOutputTokens
는 후보에 포함할 최대 토큰 수를 설정합니다.
temperature
는 출력의 무작위성을 제어합니다. 창의적인 대답을 위해서는 더 높은 값을 사용하고 확정적인 대답을 위해서는 더 낮은 값을 사용합니다. 값의 범위는 [0.0, 2.0]입니다.
generateContent
에 대한 개별 호출을 구성할 수도 있습니다.
response = model.generate_content(
'Write a story about a magic backpack.',
generation_config = genai.GenerationConfig(
max_output_tokens=1000,
temperature=0.1,
)
)
개별 호출에 설정된 값은 모델 생성자의 값을 재정의합니다.
다음 단계
이제 Gemini API의 기본사항을 살펴봤으므로 다음을 시도해 보세요.