<ph type="x-smartling-placeholder">
ai.google.dev에서 보기 | Colab 노트북 사용해 보기 | GitHub에서 노트북 보기 |
Gemini API는 전달된 이미지와 동영상에 대한 추론을 실행할 수 있습니다. 통과 시 이미지, 연속 이미지 또는 동영상인 경우 Gemini는 다음과 같은 작업을 할 수 있습니다.
- 콘텐츠에 관한 설명 또는 질문에 답변
- 콘텐츠를 요약하세요.
- 콘텐츠에서 추론
이 튜토리얼에서는 Gemini API에 다음과 같은 프롬프트를 추가하는 몇 가지 방법을 보여줍니다. 이미지, 비디오 입력. 모든 출력은 텍스트 전용입니다.
시작하기 전에: 프로젝트 및 API 키 설정
Gemini API를 호출하기 전에 프로젝트를 설정하고 확인할 수 있습니다
이미지로 메시지 표시
이 튜토리얼에서는 File API를 사용하거나 인라인 데이터로 이미지를 업로드합니다. 이 이미지를 기반으로 콘텐츠를 생성합니다.
기술 세부정보 (이미지)
Gemini 1.5 Pro 및 1.5 Flash는 최대 3,600개의 이미지 파일을 지원합니다.
이미지는 다음 이미지 데이터 MIME 유형 중 하나여야 합니다.
- PNG -
image/png
- JPEG -
image/jpeg
- WEBP:
image/webp
- HEIC:
image/heic
- HEIF:
image/heif
각 이미지는 토큰 258개와 같습니다.
이미지의 픽셀 수에는 모델의 컨텍스트 윈도우가 더 큰 이미지는 원래의 가로세로 비율은 유지하면서 해상도 3072x3072로 작은 이미지는 최대 768x768픽셀로 조정됩니다. 비용 절감 효과 없음 대역폭 또는 성능 개선을 제외하고 크기가 낮은 이미지의 경우 높은 해상도의 이미지에 적합합니다.
최상의 결과를 얻는 방법
- 업로드하기 전에 이미지를 올바른 방향으로 회전하세요.
- 흐릿한 이미지는 사용하지 마세요.
- 단일 이미지를 사용하는 경우 이미지 뒤에 텍스트 프롬프트를 배치합니다.
File API를 사용하여 이미지 파일 업로드
File API를 사용하여 모든 크기의 이미지를 업로드할 수 있습니다. (항상 File API를 사용해야 하는 경우 보내려는 파일 및 시스템 지침의 조합이 20MB 초과).
먼저 다음을 다운로드하세요. 제트팩 스케치
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
다음을 사용하여 이미지 업로드
media.upload
드림
Gemini API 호출에서 참조로 사용되는 URI를 출력합니다.
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
이미지 파일 업로드 확인 및 메타데이터 가져오기
API가 업로드된 파일을 성공적으로 저장했는지 확인하고
files.get
를 호출하여 메타데이터를
SDK를 통해 구현됩니다 name
(및 더 나아가 uri
)만 고유합니다. 사용
display_name
: 고유성을 직접 관리하는 경우에만 파일을 식별합니다.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
사용 사례에 따라 URI를 다음과 같은 구조에 저장할 수 있습니다.
dict
또는 데이터베이스
업로드된 이미지 및 텍스트로 메시지 표시
파일을 업로드한 후 다음을 참조하는 GenerateContent
요청을 할 수 있습니다.
파일 API URI입니다. 생성 모델을 선택하고 텍스트 프롬프트를 제공합니다.
업로드한 이미지가 표시됩니다.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
로컬에 저장된 이미지 파일을 하나 이상 업로드합니다.
또는 직접 만든 파일을 업로드할 수도 있습니다. Google 그림 피라냐가 서식하는 물 및 고양이와 함께 있는 소방관
보내려는 파일 및 시스템 지침의 조합이 20MB보다 큰 경우 파일 API를 사용하여 해당 파일을 업로드하세요. 확인할 수 있습니다 대신 작은 파일은 Gemini API:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
이러한 인라인 데이터 호출에는 사용 가능한 많은 기능이 포함되어 있지 않습니다. 파일 메타데이터 가져오기, 등록정보 또는 파일 삭제.
여러 이미지가 포함된 프롬프트
Gemini API에 원하는 이미지와 텍스트의 조합을 제공할 수 있습니다. 모델의 컨텍스트 윈도우에 맞지 않을 수 있습니다. 이 예시에서는 하나의 짧은 텍스트 이전에 업로드한 세 개의 이미지가 있습니다.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
객체의 경계 상자 가져오기
모델에 객체의 경계 상자 좌표를 요청할 수 있습니다.
사용할 수 있습니다 객체 감지의 경우 Gemini 모델은
[0,1]
범위의 상대 너비 또는 높이로, 다음 크기로 조정:
1000으로 설정하고 정수로 변환했습니다. 주어진 좌표는 실질적으로
원본 이미지의 1000x1000 버전이며
크기가 조정됩니다.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
이 좌표를 원본 이미지의 크기로 변환하는 방법은 다음과 같습니다.
- 각 출력 좌표를 1000으로 나눕니다.
- x 좌표에 원본 이미지의 너비를 곱합니다.
- y 좌표에 원본 이미지의 높이를 곱합니다.
동영상으로 메시지 표시
이 튜토리얼에서는 File API를 사용하여 동영상을 업로드하고 기반으로 콘텐츠를 제작합니다.
기술 세부정보 (동영상)
Gemini 1.5 Pro 및 Flash는 최대 1시간 분량의 동영상 데이터를 지원합니다.
동영상은 다음 동영상 형식 MIME 유형 중 하나여야 합니다.
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
File API 서비스는 초당 1프레임으로 동영상에서 이미지 프레임을 추출합니다. (FPS) 및 1Kbps의 단일 채널 오디오로 매초마다 타임스탬프를 추가합니다. 이 비율은 향후 추론 개선을 위해 변경될 수 있습니다.
개별 프레임은 토큰 258개, 오디오는 초당 토큰 32개입니다. 다음으로 바꿉니다. 메타데이터 같으면 동영상 1초당 약 300개의 토큰이 되므로 100만 개의 맥락이 생성됩니다. 1시간 미만의 동영상 분량입니다
타임스탬프가 표시된 장소에 대해 질문하려면 MM:SS
형식을 사용하세요. 각 항목의 의미는 다음과 같습니다.
처음 두 자리는 분을 나타내고 마지막 두 자리는
초 단위입니다.
최상의 결과를 얻는 방법
- 프롬프트당 하나의 동영상을 사용합니다.
- 단일 동영상을 사용하는 경우 동영상 뒤에 텍스트 프롬프트를 배치합니다.
File API를 사용하여 동영상 파일 업로드
File API는 동영상 파일 형식을 직접 허용합니다. 이 예에서는 단편 NASA 영화 '목성의 대적점 수축 및 성장' 출처: Goddard Space Flight Center (GSFC)/David Ladd (2018년).
"목성의 대적점 수축 및 증가" 공개 도메인에 있으며 식별 가능한 사람이 표시되지 않습니다. (NASA 이미지 및 미디어 사용 가이드라인)
먼저 짧은 동영상을 가져옵니다.
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
File API를 사용하여 동영상을 업로드하고 URI를 출력합니다.
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
파일 업로드 확인 및 상태 확인
API가 파일을 성공적으로 수신했는지 확인하려면 다음을 호출합니다.
files.get
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다.
import time
# Check whether the file is ready to be used.
while video_file.state.name == "PROCESSING":
print('.', end='')
time.sleep(10)
video_file = genai.get_file(video_file.name)
if video_file.state.name == "FAILED":
raise ValueError(video_file.state.name)
동영상 및 텍스트로 메시지 표시
업로드한 동영상이 ACTIVE
상태가 되면 GenerateContent
를 만들 수 있습니다.
요청을 생성합니다. 생성형 AI 모델 선택
업로드된 동영상과 텍스트 프롬프트를 제공합니다.
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
콘텐츠의 타임스탬프 참고하기
MM:SS
형식의 타임스탬프를 사용하여
있습니다.
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
동영상 스크립트 작성 및 시각적 설명 제공
동영상의 속도가 빠르지 않은 경우 (동영상의 초당 1프레임만 샘플링됨) 각 장면에 대한 시각적 설명과 함께 동영상의 스크립트를 작성할 수 있습니다.
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
파일 나열
File API를 사용하여 업로드된 모든 파일과 파일의 URI는
files.list_files()
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
파일 삭제
File API를 사용하여 업로드한 파일은 2일 후 자동으로 삭제됩니다. 나
files.delete()
를 사용하여 직접 삭제할 수도 있습니다.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
다음 단계
이 가이드에서는
generateContent
및
이미지 및 동영상 입력에서 텍스트 출력을 생성합니다. 자세히 알아보려면
다음 리소스를 참고하세요.
- 미디어 파일로 메시지 표시: Gemini API는 텍스트, 이미지, 오디오, 동영상 데이터의 프롬프팅을 지원하며 멀티모달 프롬프팅이라고 합니다
- 시스템 안내: 시스템 지시사항을 사용하면 특정 작업 수행을 기준으로 모델의 동작을 사용 사례를 파악할 수 있습니다
- 안전 안내: 생성형 AI가 존재함 모델이 부정확한 출력, 불쾌감을 주는 콘텐츠 후처리와 사람의 평가는 이러한 출력으로 인한 피해 위험을 최소화해야 합니다.