การแจ้งด้วยไฟล์สื่อ


ดูใน ai.google.dev เรียกใช้ใน Google Colab ดูแหล่งที่มาใน GitHub

Gemini API รองรับพรอมต์ที่มีข้อมูลข้อความ รูปภาพ เสียง และวิดีโอ หรือที่เรียกอีกอย่างว่าพรอมต์หลายรูปแบบ ซึ่งหมายความว่าคุณสามารถรวมไฟล์สื่อประเภทดังกล่าวไว้ในพรอมต์ได้ สำหรับไฟล์ขนาดเล็ก คุณสามารถชี้โมเดล Gemini ไปยังไฟล์ในเครื่องได้โดยตรงเมื่อส่งพรอมต์ อัปโหลดไฟล์ขนาดใหญ่ขึ้นด้วย File API ก่อนที่จะรวมไว้ในข้อความแจ้ง

File API ให้คุณจัดเก็บไฟล์ได้สูงสุด 20 GB ต่อโปรเจ็กต์ โดยแต่ละไฟล์มีขนาดไม่เกิน 2 GB ระบบจะจัดเก็บไฟล์ไว้ 48 ชั่วโมงและจะเข้าถึงได้ด้วยคีย์ API เพื่อสร้างภายในระยะเวลาดังกล่าวและจะดาวน์โหลดไฟล์จาก API ไม่ได้ Files API พร้อมให้ใช้งานโดยไม่มีค่าใช้จ่ายในทุกภูมิภาคที่ Gemini API พร้อมให้บริการ

File API จะจัดการอินพุตที่สามารถใช้เพื่อสร้างเนื้อหาที่มี model.generateContent หรือ model.streamGenerateContent โปรดดูข้อมูลเกี่ยวกับรูปแบบไฟล์ที่ถูกต้อง (ประเภท MIME) และโมเดลที่รองรับที่หัวข้อรูปแบบไฟล์ที่รองรับ

คู่มือนี้แสดงวิธีใช้ File API เพื่ออัปโหลดไฟล์สื่อและรวมไว้ในการเรียกใช้ GenerateContent ไปยัง Gemini API สำหรับข้อมูลเพิ่มเติม โปรดดูตัวอย่างโค้ด

ก่อนเริ่มต้น: ตั้งค่าโปรเจ็กต์และคีย์ API

คุณต้องตั้งค่าโปรเจ็กต์และกำหนดค่าคีย์ API ก่อนที่จะเรียกใช้ Gemini API (หรือ File API)

พรอมต์ด้วยรูปภาพ

ในบทแนะนำนี้ คุณจะอัปโหลดรูปภาพตัวอย่างโดยใช้ 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 ที่ระบุ และมี uri เพื่ออ้างอิงไฟล์ในการเรียก Gemini API ใช้ response เพื่อติดตามการจับคู่ไฟล์ที่อัปโหลดกับ URI

คุณจะจัดเก็บ URI ไว้ในโครงสร้างได้ เช่น dict หรือฐานข้อมูล ทั้งนี้ขึ้นอยู่กับกรณีการใช้งานของคุณ

รับข้อมูลเมตาของไฟล์ภาพ

หลังจากอัปโหลดไฟล์ คุณสามารถยืนยันว่า API จัดเก็บไฟล์เรียบร้อยแล้ว และรับข้อมูลเมตาของไฟล์โดยเรียกใช้ files.get ผ่าน SDK

วิธีนี้จะช่วยให้คุณได้รับข้อมูลเมตาสำหรับไฟล์ที่อัปโหลดซึ่งเชื่อมโยงกับโปรเจ็กต์ Google Cloud ที่ลิงก์กับคีย์ API เฉพาะ 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 ชั่วโมง หรือคุณจะลบด้วยตนเอง โดยใช้ files.delete ผ่าน SDK ก็ได้

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 ผ่าน SDK

ไฟล์วิดีโอมีช่อง State จาก File API เมื่ออัปโหลดวิดีโอแล้ว วิดีโอจะอยู่ในสถานะ 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 ผ่าน SDK

วิธีนี้จะช่วยให้คุณได้รับข้อมูลเมตาสำหรับไฟล์ที่อัปโหลดซึ่งเชื่อมโยงกับโปรเจ็กต์ Google Cloud ที่ลิงก์กับคีย์ API เฉพาะ 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 ชั่วโมง หรือคุณจะลบด้วยตนเอง โดยใช้ files.delete ผ่าน SDK ก็ได้

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 - รูปภาพ/png
    • JPEG - รูปภาพ/jpeg
    • WEBP - รูปภาพ/webp
    • HEIC - รูปภาพ/heic
    • HEIF - รูปภาพ/heif
  • รูปภาพสูงสุด 3,600 รูปสำหรับโมเดล Gemini 1.5
  • ไม่มีการจำกัดจำนวนพิกเซลในรูปภาพ อย่างไรก็ตาม รูปภาพขนาดใหญ่จะถูกลดขนาดลงให้พอดีกับความละเอียดสูงสุดที่ 3072 x 3072 ในขณะที่คงสัดส่วนภาพเดิมไว้

รูปแบบเสียง

คุณสามารถใช้ข้อมูลเสียงสำหรับพรอมต์ด้วยโมเดล Gemini 1.5 ได้ การใช้เสียงสำหรับพรอมต์ต้องเป็นไปตามข้อจำกัดและข้อกำหนดต่อไปนี้

  • ระบบรองรับข้อมูลเสียงในรูปแบบเสียงทั่วไปประเภท MIME ต่อไปนี้
    • WAV - เสียง/wav
    • MP3 - เสียง/mp3
    • AIFF - เสียง/AIFF
    • AAC - เสียง/aac
    • OGG Vorbis - เสียง/ogg
    • FLAC - เสียง/flac
  • ความยาวสูงสุดของข้อมูลเสียงที่รองรับในพรอมต์เดียวคือ 9.5 ชั่วโมง
  • ไฟล์เสียงจะถูกสุ่มตัวอย่างซ้ำให้มีความละเอียดข้อมูล 16 Kbps และเสียงหลายช่องทางจะถูกรวมเข้าด้วยกันเป็นช่องเดียว
  • ไม่มีการจำกัดจำนวนไฟล์เสียงในพรอมต์เดียว แต่ความยาวรวมของไฟล์เสียงทั้งหมดในพรอมต์เดียวต้องไม่เกิน 9.5 ชั่วโมง

รูปแบบวิดีโอ

คุณสามารถใช้ข้อมูลวิดีโอสำหรับพรอมต์ด้วยโมเดล Gemini 1.5 ได้

  • ระบบรองรับข้อมูลวิดีโอในรูปแบบวิดีโอทั่วไปประเภท MIME ต่อไปนี้

    • วิดีโอ/MP4
    • วิดีโอ/Mpeg
    • วิดีโอ/เคลื่อนที่
    • วิดีโอ/avi
    • video/x-flv
    • วิดีโอ/mpg
    • วิดีโอ/WebM
    • วิดีโอ/wmv
    • วิดีโอ/3gpp
  • บริการ File API จะสุ่มตัวอย่างวิดีโอเป็นรูปภาพ 1 เฟรมต่อวินาที (FPS) และอาจมีการเปลี่ยนแปลงเพื่อให้คุณภาพการอนุมานที่ดีที่สุด รูปภาพแต่ละรูปจะใช้โทเค็นได้สูงสุด 258 โทเค็นโดยไม่คำนึงถึงความละเอียดและคุณภาพ

รูปแบบข้อความธรรมดา

File API รองรับการอัปโหลดไฟล์ข้อความธรรมดาที่มีประเภท MIME ต่อไปนี้

  • ข้อความ/ธรรมดา
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • ข้อความ/x-typescript
  • แอปพลิเคชัน/x-typescript
  • ข้อความ/csv
  • ข้อความ/มาร์กดาวน์
  • ข้อความ/x-python
  • application/x-python-code
  • application/json
  • text/xml
  • แอปพลิเคชัน/RTF
  • ข้อความ/RTF

สำหรับไฟล์ข้อความธรรมดาที่มีประเภท MIME ไม่อยู่ในรายการ คุณอาจลองระบุประเภท MIME ข้างต้นด้วยตนเอง

ภาคผนวก: การอัปโหลดไฟล์ไปยัง Colab

สมุดบันทึกนี้ใช้ File API กับไฟล์ที่ดาวน์โหลดจากอินเทอร์เน็ต หากกำลังใช้โค้ดนี้ใน 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}")