สร้างข้อความจากพรอมต์แบบหลายโมดัลโดยใช้ Gemini API


เมื่อเรียกใช้ Gemini API จากแอปโดยใช้ Vertex AI in Firebase SDK คุณสามารถแจ้งให้โมเดล Gemini สร้างข้อความตามอินพุตแบบหลายรูปแบบได้ พรอมต์แบบหลายโมดัลอาจมีโมดัล (หรือประเภทอินพุต) หลายรายการ เช่น ข้อความพร้อมกับรูปภาพ, PDF, ไฟล์ข้อความธรรมดา, วิดีโอ และเสียง

ในคำขอแบบหลายสื่อแต่ละรายการ คุณต้องระบุข้อมูลต่อไปนี้เสมอ

สําหรับการทดสอบและปรับปรุงพรอมต์แบบหลายสื่อ เราขอแนะนําให้ใช้ Vertex AI Studio

ก่อนเริ่มต้น

ทําตามคู่มือการเริ่มต้นใช้งาน Vertex AI in FirebaseSDK ให้เสร็จสมบูรณ์ หากยังไม่ได้ดำเนินการ ตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้ทั้งหมดแล้ว

  1. ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ รวมถึงใช้แพ็กเกจราคา Blaze และเปิดใช้ API ที่จําเป็น

  2. เชื่อมต่อแอปกับ Firebase ซึ่งรวมถึงการลงทะเบียนแอปและเพิ่มการกําหนดค่า Firebase ลงในแอป

  3. เพิ่ม SDK และเริ่มต้นVertex AIบริการและโมเดล Generative ในแอป

หลังจากเชื่อมต่อแอปกับ Firebase, เพิ่ม SDK และเริ่มต้นบริการ Vertex AI และโมเดล Generative แล้ว คุณก็พร้อมเรียกใช้ Gemini API

สร้างข้อความจากข้อความและรูปภาพเดียว สร้างข้อความจากข้อความและรูปภาพหลายรูป สร้างข้อความจากข้อความและวิดีโอ

ไฟล์สื่อตัวอย่าง

หากยังไม่มีไฟล์สื่อ คุณสามารถใช้ไฟล์ต่อไปนี้ซึ่งมีให้บริการแบบสาธารณะ

สร้างข้อความจากข้อความและรูปภาพเดียว

โปรดอ่านส่วนก่อนเริ่มต้นของคู่มือนี้ให้เสร็จสิ้นก่อนลองใช้ตัวอย่างนี้

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

โปรดอ่านข้อกำหนดและคำแนะนำสำหรับไฟล์อินพุต

เลือกว่าต้องการสตรีมคำตอบ (generateContentStream) หรือรอคำตอบจนกว่าระบบจะสร้างผลลัพธ์ทั้งหมด (generateContent)

อุปกรณ์การสตรีม

คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมดจากการสร้างโมเดล และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน

ตัวอย่างนี้แสดงวิธีใช้ generateContentStream() เพื่อสตรีมข้อความที่สร้างขึ้นจากคําขอพรอมต์แบบมัลติโมเดลซึ่งมีข้อความและรูปภาพ 1 รูป

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ไม่มีการสตรีม

หรือจะรอผลลัพธ์ทั้งหมดแทนการสตรีมก็ได้ โดยระบบจะแสดงผลลัพธ์หลังจากที่โมเดลสร้างภาพเสร็จสมบูรณ์แล้วเท่านั้น

ตัวอย่างนี้แสดงวิธีใช้ generateContent() เพื่อสร้างข้อความจากคําขอพรอมต์แบบหลายสื่อซึ่งมีข้อความและรูปภาพเดียว

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")

ดูวิธีเลือกโมเดล Gemini และตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับ Use Case และแอปของคุณ

สร้างข้อความจากข้อความและรูปภาพหลายรูป

โปรดอ่านส่วนก่อนเริ่มต้นของคู่มือนี้ให้เสร็จสิ้นก่อนลองใช้ตัวอย่างนี้

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

โปรดอ่านข้อกำหนดและคำแนะนำสำหรับไฟล์อินพุต

เลือกว่าต้องการสตรีมคำตอบ (generateContentStream) หรือรอคำตอบจนกว่าระบบจะสร้างผลลัพธ์ทั้งหมด (generateContent)

อุปกรณ์การสตรีม

คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมดจากการสร้างโมเดล และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน

ตัวอย่างนี้แสดงวิธีใช้ generateContentStream() เพื่อสตรีมข้อความที่สร้างขึ้นจากคําขอพรอมต์แบบหลายสื่อซึ่งมีข้อความและรูปภาพหลายรูป

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ไม่มีการสตรีม

หรือจะรอผลลัพธ์ทั้งหมดแทนการสตรีมก็ได้ โดยระบบจะแสดงผลลัพธ์หลังจากที่โมเดลสร้างผลลัพธ์ทั้งหมดเสร็จแล้วเท่านั้น

ตัวอย่างนี้แสดงวิธีใช้ generateContent() เพื่อสร้างข้อความจากคําขอพรอมต์แบบหลายสื่อซึ่งมีข้อความและรูปภาพหลายรูป

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")

ดูวิธีเลือกโมเดล Gemini และตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับ Use Case และแอปของคุณ

สร้างข้อความจากข้อความและวิดีโอ

โปรดอ่านส่วนก่อนเริ่มต้นของคู่มือนี้ให้เสร็จสิ้นก่อนลองใช้ตัวอย่างนี้

คุณสามารถเรียกใช้ Gemini API ด้วยพรอมต์แบบมัลติโมดัลที่มีทั้งไฟล์ข้อความและวิดีโอ (ดังที่แสดงในตัวอย่างนี้) สำหรับการเรียกใช้เหล่านี้ คุณต้องใช้โมเดลที่รองรับสื่อในพรอมต์ (เช่น Gemini 1.5 Flash)

โปรดอ่านข้อกำหนดและคำแนะนำสำหรับไฟล์อินพุต

เลือกว่าต้องการสตรีมคำตอบ (generateContentStream) หรือรอคำตอบจนกว่าระบบจะสร้างผลลัพธ์ทั้งหมด (generateContent)

อุปกรณ์การสตรีม

คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมดจากการสร้างโมเดล และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน

ตัวอย่างนี้แสดงวิธีใช้ generateContentStream() เพื่อสตรีมข้อความที่สร้างขึ้นจากคำขอพรอมต์แบบหลายสื่อซึ่งมีข้อความและวิดีโอรายการเดียว

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ไม่มีการสตรีม

หรือจะรอผลลัพธ์ทั้งหมดแทนการสตรีมก็ได้ โดยระบบจะแสดงผลลัพธ์หลังจากที่โมเดลสร้างภาพเสร็จสมบูรณ์แล้วเท่านั้น

ตัวอย่างนี้แสดงวิธีใช้ generateContent() เพื่อสร้างข้อความจากคําขอพรอมต์แบบหลายสื่อซึ่งมีข้อความและวิดีโอรายการเดียว

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")

ดูวิธีเลือกโมเดล Gemini และตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับ Use Case และแอปของคุณ

ข้อกำหนดและคำแนะนำสำหรับไฟล์อินพุต

ดูข้อมูลต่อไปนี้จากหัวข้อไฟล์อินพุตที่รองรับและข้อกำหนดสำหรับ Vertex AI Gemini API

  • ตัวเลือกต่างๆ ในการส่งไฟล์ในคำขอ
  • ประเภทไฟล์ที่รองรับ
  • ประเภท MIME ที่รองรับและวิธีระบุ
  • ข้อกำหนดและแนวทางปฏิบัติแนะนำสำหรับไฟล์และคําขอแบบหลายสื่อ

คุณทำอะไรได้อีกบ้าง

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

ลองใช้ความสามารถอื่นๆ ของ Gemini API

ดูวิธีควบคุมการสร้างเนื้อหา

คุณยังทดลองใช้พรอมต์และการกําหนดค่าโมเดลโดยใช้ Vertex AI Studio ได้ด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับรุ่นต่างๆ ของ Gemini

ดูข้อมูลเกี่ยวกับรูปแบบที่ใช้ได้กับกรณีการใช้งานต่างๆ และโควต้าและราคา


แสดงความคิดเห็นเกี่ยวกับประสบการณ์การใช้งาน Vertex AI in Firebase