미디어 파일로 메시지 표시


ai.google.dev에서 보기 Google Colab에서 실행 GitHub에서 소스 보기

Gemini API는 텍스트, 이미지, 오디오, 동영상 데이터의 프롬프팅을 지원하며 멀티모달 프롬프팅이라고 합니다. 즉, 이러한 유형의 미디어를 파일을 찾을 수 있습니다 작은 파일의 경우 Gemini 모델을 직접 가리킬 수 있습니다. 로컬 파일로 변환해야 합니다 파일 API에 포함해야 합니다. 표시됩니다

File API를 사용하면 프로젝트당 최대 20GB의 파일을 저장할 수 있으나 2GB를 초과해서는 안 됩니다. 파일은 48시간 동안 저장되며 해당 기간 내에 생성할 API 키이며 다운로드할 수 없습니다. 가져올 수 있습니다. Files API는 Gemini API를 사용할 수 있습니다.

File API는 model.generateContent 또는 model.streamGenerateContent 자세한 내용은 유효한 파일 형식 (MIME 유형) 및 지원되는 모델은 지원되는 파일 형식을 참고하세요.

이 가이드에서는 File API를 사용하여 미디어 파일을 업로드하고 포함하는 방법을 보여줍니다. Gemini API에 대한 GenerateContent 호출 자세한 내용은 코드 샘플을 참고하세요.

시작하기 전에: 프로젝트 및 API 키 설정

Gemini API (또는 File API)를 호출하기 전에 API 키를 구성하고 구성할 수 있습니다

이미지로 메시지 표시

이 튜토리얼에서는 File API를 사용하여 샘플 이미지를 업로드한 다음 이를 사용합니다. 콘텐츠를 생성합니다.

이미지 파일 업로드

부록 섹션에서 자체 파일을 업로드할 수 있습니다.

  1. 업로드할 샘플 이미지를 준비합니다.

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. 다음을 사용하여 파일을 업로드합니다. 액세스할 수 있도록 media.upload 다른 API 호출 사용:

    sample_file = genai.upload_file(path="image.jpg",
                                display_name="Sample drawing")
    
    print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
    

response는 업로드된 이미지가 지정된 display_name이며 Gemini API 호출에서 파일을 참조하는 uri이 있습니다. 사용 response: 업로드된 파일이 URI에 매핑되는 방식을 추적합니다.

사용 사례에 따라 URI를 다음과 같은 구조에 저장할 수 있습니다. dict 또는 데이터베이스

이미지 파일의 메타데이터 가져오기

파일을 업로드한 후 API가 파일을 성공적으로 저장했는지 확인할 수 있습니다. files.get를 호출하여 메타데이터를 가져옵니다. SDK를 통해 구현됩니다

이 메서드를 사용하면 API 키에 연결된 Google Cloud 프로젝트입니다. name만 (그리고 더 나아가 uri)가 고유합니다. 다음과 같은 경우에만 display_name를 사용하여 파일을 식별합니다. 스스로 독창성을 관리할 수 있습니다.

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

업로드된 이미지 파일을 사용하여 콘텐츠 생성

이미지를 업로드한 후 다음과 같은 GenerateContent 요청을 할 수 있습니다. 응답에서 uri 참조 (파일을 업로드하거나 직접 파일의 메타데이터 가져오기).

이 예시에서는 텍스트로 시작하고 그 뒤에 URI가 오는 프롬프트를 만듭니다. 업로드된 파일에 대한 참조:

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

response = model.generate_content([sample_file, "Describe the image with a creative description."])

Markdown(">" + response.text)

이미지 파일 삭제

파일은 48시간 후 자동으로 삭제됩니다. 또한 수동으로 SDK를 통해 files.delete를 사용하여 API를 인증할 수 있습니다.

genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')

동영상으로 메시지 표시

이 튜토리얼에서는 File API를 사용하여 샘플 동영상을 업로드한 다음 콘텐츠를 생성합니다.

동영상 파일 업로드

Gemini API는 동영상 파일 형식을 직접 허용합니다. 이 예시에서는 영화 'Big Buck Bunny'를 촬영했습니다.

'Big Buck Bunny' (c) copyright 2008, Blender Foundation / www.bigbuckbunny.org이며 크리에이티브 커먼즈 저작자 표시 3.0 라이선스에 따라 사용이 허가되었습니다.

부록 섹션에서 자체 파일을 업로드할 수 있습니다.

  1. 업로드할 샘플 동영상 파일을 준비합니다.

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. 다음을 사용하여 파일을 업로드합니다. 액세스할 수 있도록 media.upload 다른 API 호출 사용:

    video_file_name = "BigBuckBunny_320x180.mp4"
    
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name)
    print(f"Completed upload: {video_file.uri}")
    

동영상 파일의 업로드 상태 확인

다음을 호출하여 API가 동영상 파일을 성공적으로 업로드했는지 확인합니다. files.get 메서드를 호출합니다.

동영상 파일에는 File API의 State 필드가 있습니다. 동영상이 업로드되면 추론할 준비가 될 때까지 PROCESSING 상태가 됩니다. ACTIVE 파일은 모델 추론에 사용할 수 있습니다.

import time

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)

동영상 파일의 메타데이터 가져오기

언제든지 files.get 메서드를 호출합니다.

이 메서드를 사용하면 API 키에 연결된 Google Cloud 프로젝트입니다. name만 (그리고 더 나아가 uri)가 고유합니다. 다음과 같은 경우에만 display_name를 사용하여 파일을 식별합니다. 스스로 독창성을 관리할 수 있습니다.

file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")

업로드된 동영상 파일을 사용하여 콘텐츠 생성

동영상을 업로드한 후 다음과 같은 GenerateContent 요청을 할 수 있습니다. 응답에서 uri 참조 (파일을 업로드하거나 직접 파일의 메타데이터 가져오기).

먼저 동영상 파일의 업로드 상태 확인 (위 섹션) 동영상에서 추론을 실행합니다.

# Create the prompt.
prompt = "Describe this video."

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
                                  request_options={"timeout": 600})
print(response.text)

동영상 파일 삭제

파일은 48시간 후 자동으로 삭제됩니다. 또한 수동으로 SDK를 통해 files.delete를 사용하여 API를 구현할 수 있습니다.

genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')

지원되는 파일 형식

Gemini 모델은 다양한 파일 형식을 이용한 프롬프팅을 지원합니다. 이 섹션 프롬프트에 일반적인 미디어 형식을 사용할 때의 고려사항은 특히 이미지, 오디오, 동영상 및 일반 텍스트 파일로 구성됩니다. 미디어 파일 사용 가능 특정 모델 버전에만 메시지가 표시되도록 하려면 표에서 볼 수 있습니다.

모델 이미지 오디오 동영상 일반 텍스트
Gemini 1.5 Pro (버전 008 이상) ✔ (최대 3,600개의 이미지 파일)

이미지 형식

Gemini 1.5 모델의 프롬프트에 이미지 데이터를 사용할 수 있습니다. 이미지를 사용하는 경우 을 사용하는 경우 다음과 같은 제한사항 및 요구사항이 적용됩니다.

  • 이미지는 다음 이미지 데이터 중 하나에 있어야 합니다. MIME 유형:
    • PNG - image/png
    • JPEG - image/jpeg
    • WEBP - image/webp
    • HEIC - image/heic
    • HEIF - image/heif
  • Gemini 1.5 모델의 경우 최대 3,600개의 이미지
  • 이미지의 픽셀 수에는 특정한 제한이 없습니다. 더 클수록 이미지는 최대 해상도인 3072x3072에 맞게 원래 가로세로 비율을 유지하는 것이 좋습니다.

오디오 형식

Gemini 1.5 모델의 프롬프트에 오디오 데이터를 사용할 수 있습니다. 사용하는 경우 프롬프트에 사용할 오디오에는 다음과 같은 제한사항이 적용됩니다. 요구사항:

  • 오디오 데이터는 다음과 같은 일반적인 오디오 형식 MIME로 지원됩니다. 유형:
    • WAV - 오디오/wav
    • MP3 - 오디오/mp3
    • AIFF - 오디오/AIFF
    • AAC - 오디오/aac
    • OGG Vorbis - 오디오/ogg
    • FLAC - 오디오/flac
  • 단일 프롬프트에서 지원되는 최대 오디오 데이터 길이는 9.5시간입니다.
  • 오디오 파일은 16Kbps 데이터 해상도로 리샘플링되며 오디오 채널은 단일 채널로 결합됩니다.
  • 단일 프롬프트의 오디오 파일 수에는 특정한 제한이 없습니다. 프롬프트에 표시된 모든 오디오 파일의 총 길이를 9.5시간을 초과할 수 없습니다.

동영상 형식

Gemini 1.5 모델의 프롬프트에 동영상 데이터를 사용할 수 있습니다.

  • 동영상 데이터는 다음과 같은 일반적인 동영상 형식 MIME에서 지원됩니다. 유형:

    • video/mp4
    • video/mpeg
    • 동영상/mov
    • 동영상/avi
    • 동영상/x-flv
    • 동영상/mpg
    • 동영상/webm
    • 동영상/wmv
    • 동영상/3gpp
  • File API 서비스는 초당 1프레임 (FPS) 속도로 동영상을 이미지로 샘플링합니다. 최상의 추론 품질을 제공하기 위해 변경될 수 있습니다. 해상도 및 해상도에 상관없이 개별 이미지는 있습니다.

일반 텍스트 형식

File API는 다음 MIME 유형을 사용하는 일반 텍스트 파일의 업로드를 지원합니다.

  • text/plain
  • text/html
  • text/css
  • 텍스트/자바스크립트
  • application/x-javascript
  • text/x-typescript
  • application/x-typescript
  • text/csv
  • 텍스트/마크다운
  • text/x-python
  • application/x-python-code
  • application/json
  • 텍스트/XML
  • application/rtf
  • 텍스트/rtf

MIME 유형이 목록에 없는 일반 텍스트 파일의 경우 위의 MIME 유형 중 하나를 수동으로 지정해야 합니다.

부록: Colab에 파일 업로드하기

이 노트북은 있습니다. Colab에서 실행 중이고 자체 파일을 사용하려면 먼저 Colab 인스턴스에 업로드해야 합니다

먼저 왼쪽 사이드바에서 파일을 클릭한 다음 업로드 버튼을 클릭합니다.

다음으로 이 파일을 File API에 업로드합니다. 코드 셀 양식에서 아래에 업로드한 파일의 이름을 입력하고 셀을 실행하면 됩니다.

my_filename = "gemini_logo.png" # @param {type:"string"}
my_file_display_name = "Gemini Logo" # @param {type:"string"}

my_file = genai.upload_file(path=my_filename,
                            display_name=my_file_display_name)
print(f"Uploaded file '{my_file.display_name}' as: {my_file.uri}")