สร้างข้อความโดยใช้ Gemini API

คุณขอให้Geminiโมเดลสร้างข้อความจากพรอมต์ข้อความเท่านั้นหรือ พรอมต์มัลติโมดัลได้ เมื่อใช้ Firebase AI Logic คุณจะส่งคำขอนี้จากแอปได้โดยตรง

พรอมต์มัลติโมดัลสามารถรวมอินพุตได้หลายประเภท (เช่น ข้อความพร้อมกับรูปภาพ, PDF, ไฟล์ข้อความธรรมดา, เสียง และวิดีโอ)

คู่มือนี้แสดงวิธีสร้างข้อความจากพรอมต์ข้อความเท่านั้นและจากพรอมต์พื้นฐาน มัลติโมดัลที่มีไฟล์

ไปที่โค้ดสำหรับการป้อนข้อความเท่านั้น ไปที่โค้ดสำหรับการป้อนข้อมูลหลายรูปแบบ ไปที่โค้ดสำหรับการตอบกลับแบบสตรีม


ดูคำแนะนำอื่นๆ สำหรับตัวเลือกเพิ่มเติมในการทำงานกับข้อความ
สร้างเอาต์พุตที่มีโครงสร้าง แชทหลายรอบ การสตรีมแบบ 2 ทาง สร้างข้อความในอุปกรณ์ สร้างรูปภาพจากข้อความ

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

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดเฉพาะของผู้ให้บริการ ในหน้านี้

หากยังไม่ได้ดำเนินการ ให้ทำตามคู่มือเริ่มต้นใช้งาน ซึ่งอธิบายวิธี ตั้งค่าโปรเจ็กต์ Firebase, เชื่อมต่อแอปกับ Firebase, เพิ่ม SDK, เริ่มต้นบริการแบ็กเอนด์สำหรับผู้ให้บริการ Gemini API ที่เลือก และ สร้างอินสแตนซ์ GenerativeModel

สําหรับการทดสอบและทําซ้ำพรอมต์ เราขอแนะนําให้ใช้ Google AI Studio

สร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

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

คุณขอให้Geminiโมเดลสร้างข้อความได้โดยการป้อนพรอมต์ด้วยข้อความเท่านั้น

Swift

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

 import FirebaseAILogic  // Initialize the Gemini Developer API backend service let ai = FirebaseAI.firebaseAI(backend: .googleAI())  // Create a `GenerativeModel` instance with a model that supports your use case let model = ai.generativeModel(modelName: "gemini-2.5-flash")   // Provide a prompt that contains text let prompt = "Write a story about a magic backpack."  // To generate text output, call generateContent with the text input let response = try await model.generateContent(prompt) print(response.text ?? "No text in response.") 

Kotlin

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

สำหรับ Kotlin เมธอดใน SDK นี้เป็นฟังก์ชันระงับและต้องเรียกใช้ จากขอบเขตของโครูทีน
 // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case val model = Firebase.ai(backend = GenerativeBackend.googleAI())                         .generativeModel("gemini-2.5-flash")   // Provide a prompt that contains text val prompt = "Write a story about a magic backpack."  // To generate text output, call generateContent with the text input val response = model.generateContent(prompt) print(response.text) 

Java

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

สำหรับ Java เมธอดใน SDK นี้จะแสดงผลเป็น ListenableFuture
 // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())         .generativeModel("gemini-2.5-flash");  // Use the GenerativeModelFutures Java compatibility layer which offers // support for ListenableFuture and Publisher APIs GenerativeModelFutures model = GenerativeModelFutures.from(ai);   // Provide a prompt that contains text Content prompt = new Content.Builder()     .addText("Write a story about a magic backpack.")     .build();  // To generate text output, call generateContent with the text input ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt); Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {     @Override     public void onSuccess(GenerateContentResponse result) {         String resultText = result.getText();         System.out.println(resultText);     }      @Override     public void onFailure(Throwable t) {         t.printStackTrace();     } }, executor); 

Web

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

 import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";  // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = {   // ... };  // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);  // Initialize the Gemini Developer API backend service const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });  // Create a `GenerativeModel` instance with a model that supports your use case const model = getGenerativeModel(ai, { model: "gemini-2.5-flash" });   // Wrap in an async function so you can use await async function run() {   // Provide a prompt that contains text   const prompt = "Write a story about a magic backpack."    // To generate text output, call generateContent with the text input   const result = await model.generateContent(prompt);    const response = result.response;   const text = response.text();   console.log(text); }  run(); 

Dart

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

 import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart';  // Initialize FirebaseApp await Firebase.initializeApp(   options: DefaultFirebaseOptions.currentPlatform, );  // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case final model =       FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');   // Provide a prompt that contains text final prompt = [Content.text('Write a story about a magic backpack.')];  // To generate text output, call generateContent with the text input final response = await model.generateContent(prompt); print(response.text); 

Unity

คุณสามารถเรียกใช้ GenerateContentAsync() เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น

 using Firebase; using Firebase.AI;  // Initialize the Gemini Developer API backend service var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());  // Create a `GenerativeModel` instance with a model that supports your use case var model = ai.GetGenerativeModel(modelName: "gemini-2.5-flash");   // Provide a prompt that contains text var prompt = "Write a story about a magic backpack.";  // To generate text output, call GenerateContentAsync with the text input var response = await model.GenerateContentAsync(prompt); UnityEngine.Debug.Log(response.Text ?? "No text in response."); 

ดูวิธีเลือกโมเดล (ไม่บังคับ) ที่เหมาะสมกับกรณีการใช้งานและแอปของคุณ

สร้างข้อความจากอินพุตข้อความและไฟล์ (มัลติโมดัล)

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

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

ตัวอย่างต่อไปนี้แสดงพื้นฐานของวิธีสร้างข้อความจากอินพุตไฟล์ โดยการวิเคราะห์ไฟล์วิดีโอเดียวที่ระบุเป็นข้อมูลในบรรทัด (ไฟล์ที่เข้ารหัส base64)

โปรดทราบว่าตัวอย่างนี้แสดงการระบุไฟล์แบบอินไลน์ แต่ SDK ยังรองรับการระบุ URL ของ YouTube ด้วย

Swift

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

 import FirebaseAILogic  // Initialize the Gemini Developer API backend service let ai = FirebaseAI.firebaseAI(backend: .googleAI())  // Create a `GenerativeModel` instance with a model that supports your use case let model = ai.generativeModel(modelName: "gemini-2.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.") 

Kotlin

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

สำหรับ Kotlin เมธอดใน SDK นี้เป็นฟังก์ชันระงับและต้องเรียกใช้ จากขอบเขตของโครูทีน
 // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case val model = Firebase.ai(backend = GenerativeBackend.googleAI())                         .generativeModel("gemini-2.5-flash")   val contentResolver = applicationContext.contentResolver contentResolver.openInputStream(videoUri).use { stream ->   stream?.let {     val bytes = stream.readBytes()      // Provide a prompt that includes the video specified above and text     val prompt = content {         inlineData(bytes, "video/mp4")         text("What is in the video?")     }      // To generate text output, call generateContent with the prompt     val response = model.generateContent(prompt)     Log.d(TAG, response.text ?: "")   } } 

Java

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

สำหรับ Java เมธอดใน SDK นี้จะแสดงผลเป็น ListenableFuture
 // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())         .generativeModel("gemini-2.5-flash");  // Use the GenerativeModelFutures Java compatibility layer which offers // support for ListenableFuture and Publisher APIs GenerativeModelFutures model = GenerativeModelFutures.from(ai);   ContentResolver resolver = getApplicationContext().getContentResolver(); try (InputStream stream = resolver.openInputStream(videoUri)) {     File videoFile = new File(new URI(videoUri.toString()));     int videoSize = (int) videoFile.length();     byte[] videoBytes = new byte[videoSize];     if (stream != null) {         stream.read(videoBytes, 0, videoBytes.length);         stream.close();          // Provide a prompt that includes the video specified above and text         Content prompt = new Content.Builder()                 .addInlineData(videoBytes, "video/mp4")                 .addText("What is in the video?")                 .build();          // To generate text output, call generateContent with the prompt         ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);         Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {             @Override             public void onSuccess(GenerateContentResponse result) {                 String resultText = result.getText();                 System.out.println(resultText);             }              @Override             public void onFailure(Throwable t) {                 t.printStackTrace();             }         }, executor);     } } catch (IOException e) {     e.printStackTrace(); } catch (URISyntaxException e) {     e.printStackTrace(); } 

Web

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

 import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";  // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = {   // ... };  // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);  // Initialize the Gemini Developer API backend service const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });  // Create a `GenerativeModel` instance with a model that supports your use case const model = getGenerativeModel(ai, { model: "gemini-2.5-flash" });   // Converts a File object to a Part object. async function fileToGenerativePart(file) {   const base64EncodedDataPromise = new Promise((resolve) => {     const reader = new FileReader();     reader.onloadend = () => resolve(reader.result.split(',')[1]);     reader.readAsDataURL(file);   });   return {     inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },   }; }  async function run() {   // Provide a text prompt to include with the video   const prompt = "What do you see?";    const fileInputEl = document.querySelector("input[type=file]");   const videoPart = await fileToGenerativePart(fileInputEl.files[0]);    // To generate text output, call generateContent with the text and video   const result = await model.generateContent([prompt, videoPart]);    const response = result.response;   const text = response.text();   console.log(text); }  run(); 

Dart

คุณสามารถเรียกใช้ generateContent() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

 import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart';  // Initialize FirebaseApp await Firebase.initializeApp(   options: DefaultFirebaseOptions.currentPlatform, );  // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case final model =       FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');   // Provide a text prompt to include with the video final prompt = TextPart("What's in the video?");  // Prepare video for input final video = await File('video0.mp4').readAsBytes();  // Provide the video as `Data` with the appropriate mimetype final videoPart = InlineDataPart('video/mp4', video);  // To generate text output, call generateContent with the text and images final response = await model.generateContent([   Content.multi([prompt, ...videoPart]) ]); print(response.text); 

Unity

คุณสามารถเรียกใช้ GenerateContentAsync() เพื่อสร้างข้อความจากอินพุตหลายรูปแบบของไฟล์ข้อความและวิดีโอ

 using Firebase; using Firebase.AI;  // Initialize the Gemini Developer API backend service var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());  // Create a `GenerativeModel` instance with a model that supports your use case var model = ai.GetGenerativeModel(modelName: "gemini-2.5-flash");   // Provide the video as `data` with the appropriate MIME type. var video = ModelContent.InlineData("video/mp4",       System.IO.File.ReadAllBytes(System.IO.Path.Combine(           UnityEngine.Application.streamingAssetsPath, "yourVideo.mp4")));  // Provide a text prompt to include with the video var prompt = ModelContent.Text("What is in the video?");  // To generate text output, call GenerateContentAsync with the text and video var response = await model.GenerateContentAsync(new [] { video, prompt }); UnityEngine.Debug.Log(response.Text ?? "No text in response."); 

ดูวิธีเลือกโมเดล (ไม่บังคับ) ที่เหมาะสมกับกรณีการใช้งานและแอปของคุณ

สตรีมคำตอบ

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

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



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

โปรดทราบว่าไฟล์ที่ระบุเป็นข้อมูลแบบอินไลน์จะได้รับการเข้ารหัสเป็น base64 ระหว่างการรับส่ง ซึ่งจะเพิ่มขนาดของคำขอ คุณจะได้รับข้อผิดพลาด HTTP 413 หากคำขอมีขนาดใหญ่เกินไป

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

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



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

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

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

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

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่รองรับ

ดูข้อมูลเกี่ยวกับ โมเดลที่พร้อมใช้งานสำหรับกรณีการใช้งานต่างๆ รวมถึง โควต้าและ ราคา


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