API Tệp

Gemini có thể xử lý nhiều loại dữ liệu đầu vào cùng lúc, bao gồm văn bản, hình ảnh và âm thanh.

Hướng dẫn này trình bày cách xử lý tệp nội dung nghe nhìn bằng Files API. Các thao tác cơ bản là giống nhau đối với tệp âm thanh, hình ảnh, video, tài liệu và các loại tệp được hỗ trợ khác.

Để biết hướng dẫn về câu lệnh tệp, hãy xem phần Hướng dẫn về câu lệnh tệp.

Tải tệp lên

Bạn có thể dùng Files API để tải tệp nội dung nghe nhìn lên. Luôn sử dụng Files API khi tổng kích thước yêu cầu (bao gồm cả tệp, câu lệnh văn bản, chỉ dẫn hệ thống, v.v.) lớn hơn 100 MB. Đối với tệp PDF, giới hạn là 50 MB.

Mã sau đây tải một tệp lên rồi sử dụng tệp đó trong lệnh gọi đến interactions.create.

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file="path/to/sample.mp3")

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input=[
        {"type": "text", "text": "Describe this audio clip"},
        {"type": "audio", "uri": myfile.uri, "mime_type": myfile.mime_type}
    ]
)

print(interaction.output_text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const interaction = await client.interactions.create({
    model: "gemini-3.8-flash",
    input: [
      { type: "text", text: "Describe this audio clip" },
      { type: "audio", uri: myfile.uri, mime_type: myfile.mimeType }
    ]
  });
  console.log(interaction.output_text);
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.AudioContent;
import com.google.genai.gaos.models.interactions.AudioContentMimeType;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;
import java.util.Arrays;
import java.util.List;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

Content textContent = TextContent.builder().text("Describe this audio clip").build();
Content audioContent =
    AudioContent.builder()
        .uri(myFile.uri().orElse(""))
        .mimeType(AudioContentMimeType.of(myFile.mimeType().orElse("audio/mp3")))
        .build();

List<Content> contents = Arrays.asList(textContent, audioContent);

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.ofContent(contents))
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model: interactions.Model("gemini-3.8-flash"),
            Input: interactions.NewInteractionsInput([]interactions.Content{
                interactions.NewContent(interactions.TextContent{
                    Text: "Describe this audio clip",
                }),
                interactions.NewContent(interactions.AudioContent{
                    URI:      genai.Ptr(myFile.URI),
                    MimeType: interactions.AudioContentMimeType(myFile.MIMEType).ToPointer(),
                }),
            }),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Interaction.OutputText != nil {
        fmt.Println(*res.Interaction.OutputText)
    }
}

REST

AUDIO_PATH="path/to/sample.mp3"
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now create an interaction using the Interactions API
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "gemini-3.8-flash",
      "input": [
        {"type": "text", "text": "Describe this audio clip"},
        {"type": "audio", "uri": '$file_uri', "mime_type": "'${MIME_TYPE}'"}
      ]
    }' 2> /dev/null > response.json

cat response.json
echo

jq ".outputs[] | select(.type == \"text\") | .text" response.json

Lấy siêu dữ liệu cho một tệp

Bạn có thể xác minh rằng API đã lưu trữ thành công tệp đã tải lên và lấy siêu dữ liệu của tệp đó bằng cách gọi files.get.

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file='path/to/sample.mp3')
file_name = myfile.name
myfile = client.files.get(name=file_name)
print(myfile)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const fileName = myfile.name;
  const fetchedFile = await client.files.get({ name: fileName });
  console.log(fetchedFile);
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

String fileName = myFile.name().orElse("");
File fileMetadata = client.files.get(fileName, null);
System.out.println(fileMetadata);

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    fileMetadata, err := client.Files.Get(ctx, myFile.Name, nil)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(fileMetadata)
}

REST

# file_info.json was created in the upload example
name=$(jq -r ".file.name" file_info.json)
# Get the file of interest to check state
curl https://generativelanguage.googleapis.com/v1beta/$name \
-H "x-goog-api-key: $GEMINI_API_KEY" > file_info.json
# Print some information about the file you got
name=$(jq -r ".name" file_info.json)
echo name=$name
file_uri=$(jq -r ".uri" file_info.json)
echo file_uri=$file_uri

Liệt kê các tệp đã tải lên

Đoạn mã sau đây lấy danh sách tất cả các tệp đã tải lên:

Python

from google import genai

client = genai.Client()

print('My files:')
for f in client.files.list():
    print(' ', f.name)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const listResponse = await client.files.list({ config: { pageSize: 10 } });
  for await (const file of listResponse) {
    console.log(file.name);
  }
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;

Client client = new Client();

System.out.println("My files:");
for (File f : client.files.list(null)) {
  System.out.println("  " + f.name().orElse(""));
}

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("My files:")
    for f, err := range client.Files.All(ctx) {
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(" ", f.Name)
    }
}

REST

echo "My files: "

curl "https://generativelanguage.googleapis.com/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY"

Xoá tệp đã tải lên

Tệp sẽ tự động bị xoá sau 48 giờ. Bạn cũng có thể xoá tệp đã tải lên theo cách thủ công:

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file='path/to/sample.mp3')
client.files.delete(name=myfile.name)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const fileName = myfile.name;
  await client.files.delete({ name: fileName });
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

client.files.delete(myFile.name().orElse(""), null);

Go

package main

import (
    "context"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    if _, err := client.Files.Delete(ctx, myFile.Name, nil); err != nil {
        log.Fatal(err)
    }
}

REST

curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/$name \
  -H "x-goog-api-key: $GEMINI_API_KEY"

Thông tin về việc sử dụng

Bạn có thể sử dụng Files API để tải lên và tương tác với các tệp nội dung nghe nhìn. Files API cho phép bạn lưu trữ tối đa 20 GB tệp cho mỗi dự án, với kích thước tối đa cho mỗi tệp là 2 GB. Các tệp được lưu trữ trong 48 giờ.

Trong thời gian đó, bạn có thể sử dụng API để lấy siêu dữ liệu về các tệp. Tuy nhiên, bạn không thể tải tệp do người dùng tải lên xuống. Bạn có thể tải các tệp do mô hình tạo xuống, chẳng hạn như video, bằng phương thức files.download. Files API được cung cấp miễn phí ở tất cả các khu vực có Gemini API.

Chiến lược đặt câu lệnh tệp

Phần này cung cấp hướng dẫn và các phương pháp hay nhất để sử dụng tệp đa phương tiện kèm theo câu lệnh cho Gemini API.

Việc có thể sử dụng nhiều loại dữ liệu trong câu lệnh giúp bạn linh hoạt hơn trong việc giải quyết các nhiệm vụ bằng Gemini API. Ví dụ: bạn có thể gửi cho mô hình ảnh một bữa ăn ngon và yêu cầu mô hình viết một bài đăng ngắn trên blog về bữa ăn đó.

Câu lệnh Đáp

Viết một bài đăng trên blog ngắn và hấp dẫn dựa trên bức ảnh này. Bài đăng này nên có nội dung mô tả về bữa ăn trong ảnh và nói về hành trình chuẩn bị bữa ăn của tôi.


Bánh quy

Chuẩn bị bữa ăn là một cách tuyệt vời để tiết kiệm thời gian và tiền bạc, đồng thời cũng có thể giúp bạn ăn uống lành mạnh hơn. Bữa ăn này là một ví dụ tuyệt vời về một bữa ăn lành mạnh và ngon miệng, có thể chuẩn bị trước.

Bữa ăn này gồm có cơm gạo lứt, rau củ nướng và gà sốt teriyaki. Gạo lứt là một loại carbohydrate phức hợp và lành mạnh, giúp bạn duy trì năng lượng. Rau củ nướng là một cách tuyệt vời để bổ sung vitamin và khoáng chất hằng ngày, còn gà teriyaki là một lựa chọn ngon miệng và giàu protein.

Bữa ăn này cũng rất dễ chuẩn bị. Bạn chỉ cần nấu cơm gạo lứt, nướng rau củ và nấu món gà teriyaki. Sau khi nấu xong, hãy chia thức ăn vào các hộp đựng và bảo quản trong tủ lạnh. Sau đó, bạn có thể lấy một hộp và mang đi vào những buổi sáng bận rộn!

Nếu bạn đang tìm một bữa ăn lành mạnh và ngon miệng, có thể chuẩn bị trước, thì bữa ăn này là một lựa chọn tuyệt vời. Món ăn này chứa nhiều chất dinh dưỡng và hương vị, chắc chắn sẽ giúp bạn cảm thấy no và hài lòng.

Chúc bạn chuẩn bị được những bữa ăn lành mạnh và ngon miệng!

Nếu bạn gặp khó khăn trong việc nhận được kết quả mong muốn từ những câu lệnh sử dụng tệp đa phương tiện, thì có một số chiến lược có thể giúp bạn nhận được kết quả mong muốn. Các phần sau đây cung cấp các phương pháp thiết kế và mẹo khắc phục sự cố để cải thiện câu lệnh sử dụng dữ liệu đầu vào đa phương thức.

Bạn có thể cải thiện câu lệnh đa phương thức bằng cách làm theo các phương pháp hay nhất sau:

  • Kiến thức cơ bản về thiết kế câu lệnh

    • Đưa ra chỉ dẫn cụ thể: Đưa ra chỉ dẫn rõ ràng và súc tích để tránh hiểu lầm.
    • Thêm một vài ví dụ vào câu lệnh: Sử dụng một vài ví dụ thực tế để minh hoạ kết quả bạn muốn đạt được.
    • Chia nhỏ từng bước: Chia các nhiệm vụ phức tạp thành các mục tiêu phụ dễ quản lý, hướng dẫn mô hình thực hiện quy trình.
    • Chỉ định định dạng đầu ra: Trong câu lệnh, hãy yêu cầu kết quả đầu ra ở định dạng bạn muốn, chẳng hạn như Markdown, JSON, HTML, v.v.
    • Đặt hình ảnh lên trước đối với câu lệnh có một hình ảnh: Mặc dù Gemini có thể xử lý dữ liệu đầu vào là hình ảnh và văn bản theo bất kỳ thứ tự nào, nhưng đối với câu lệnh có một hình ảnh, Gemini có thể hoạt động hiệu quả hơn nếu hình ảnh (hoặc video) đó được đặt trước câu lệnh văn bản. Tuy nhiên, đối với những câu lệnh yêu cầu hình ảnh phải được lồng ghép chặt chẽ với văn bản để có ý nghĩa, hãy sử dụng thứ tự tự nhiên nhất.
  • Khắc phục sự cố về câu lệnh đa phương thức

    • Nếu mô hình không lấy thông tin từ phần có liên quan của hình ảnh: Hãy gợi ý những khía cạnh của hình ảnh mà bạn muốn câu lệnh lấy thông tin.
    • Nếu đầu ra của mô hình quá chung chung (không đủ phù hợp với hình ảnh/video đầu vào): Ở đầu câu lệnh, hãy thử yêu cầu mô hình mô tả(các) hình ảnh hoặc video trước khi đưa ra hướng dẫn về nhiệm vụ, hoặc thử yêu cầu mô hình tham khảo nội dung trong hình ảnh.
    • Cách khắc phục sự cố về phần không thành công: Yêu cầu mô hình mô tả hình ảnh hoặc yêu cầu mô hình giải thích lý do để đánh giá mức độ hiểu biết ban đầu của mô hình.
    • Nếu câu lệnh của bạn dẫn đến nội dung ảo tưởng: Hãy thử giảm chế độ cài đặt nhiệt độ hoặc yêu cầu mô hình cung cấp nội dung mô tả ngắn hơn để giảm khả năng mô hình suy luận thêm thông tin chi tiết.
    • Điều chỉnh các tham số lấy mẫu: Thử nghiệm với các chế độ cài đặt nhiệt độ và lựa chọn top-k khác nhau để điều chỉnh khả năng sáng tạo của mô hình.

Đưa ra hướng dẫn cụ thể

Câu lệnh sẽ hiệu quả nhất khi rõ ràng và chi tiết. Nếu bạn muốn có một kết quả cụ thể, tốt hơn hết là bạn nên đưa yêu cầu đó vào câu lệnh để đảm bảo nhận được kết quả như mong muốn.

Đối với hình ảnh bảng thông tin sân bay này, nếu bạn chỉ yêu cầu mô hình "mô tả hình ảnh này", thì mô hình có thể tạo ra một nội dung mô tả chung chung. Nếu cần mô hình phân tích cú pháp thời gian và thành phố trong hình ảnh, bạn có thể đưa yêu cầu đó trực tiếp vào câu lệnh.

Câu lệnh Câu trả lời của mô hình

Mô tả hình ảnh này.

Hình ảnh cho thấy bảng thông tin chuyến bay hạ cánh và khởi hành tại sân bay.

Câu lệnh đã cập nhật Câu trả lời được cải thiện
Lịch trình di chuyển

Phân tích cú pháp thời gian và thành phố trên bảng thông tin sân bay trong hình ảnh này thành một danh sách.

  • 10:50 Moscow
  • 11:05 Edinburgh
  • 11:05 London
  • 11:10 Bucharest
  • 11:30 theo giờ Kiev
  • 11:35 Dublin
  • 11:45 Đông Midlands
  • 12:15 Sofia
  • 12:30 London
  • 12:30 Newcastle
  • 12:40 Saint Petersburg
  • 12:40 London
  • 12:45 Manchester
  • Thêm một vài ví dụ

    Mô hình Gemini có thể chấp nhận nhiều dữ liệu đầu vào mà mô hình này có thể sử dụng làm ví dụ để hiểu kết quả bạn muốn. Việc thêm các ví dụ này có thể giúp mô hình xác định các mẫu và áp dụng mối quan hệ giữa hình ảnh và phản hồi đã cho vào ví dụ mới. Đây còn được gọi là phương pháp học "ít dữ liệu".

    Trong ví dụ sau, kết quả ban đầu được viết dưới dạng câu và cũng chứa quốc gia (Brazil). Giả sử bạn muốn kết quả có định dạng hoặc kiểu khác và bạn chỉ muốn thành phố chứ không muốn quốc gia. Việc thêm đặt câu lệnh kèm một vài ví dụ vào câu lệnh của bạn có thể hướng mô hình phản hồi theo cách bạn muốn.

    Câu lệnh Câu trả lời của mô hình
    Lịch trình di chuyển

    Xác định thành phố cùng với địa danh.

    Địa danh này là tượng Chúa Kitô Cứu thế ở Rio de Janeiro, Brazil.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Xác định thành phố cùng với địa danh.

    đấu trường la mã

    thành phố: Rome, địa danh: Đấu trường La Mã.

    Tử Cấm Thành

    thành phố: Bắc Kinh, địa danh: Tử Cấm Thành

    forbidden-city

    thành phố: Rio de Janeiro, địa danh: Tượng Chúa Kitô Cứu thế

    Phân tích từng bước

    Đối với những nhiệm vụ phức tạp như những nhiệm vụ đòi hỏi cả khả năng hiểu và suy luận bằng hình ảnh, bạn nên chia nhiệm vụ đó thành các bước nhỏ hơn, đơn giản hơn. Ngoài ra, bạn cũng có thể yêu cầu mô hình "suy nghĩ từng bước" ngay trong câu lệnh.

    Câu lệnh Câu trả lời của mô hình

    Khi nào tôi sẽ hết giấy vệ sinh?

    Bạn sắp chỉ còn 3 cuộn phim.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện
    1. Trước tiên, hãy đếm xem có bao nhiêu cuộn giấy vệ sinh trong bức ảnh này.
    2. Sau đó, hãy xác định lượng giấy vệ sinh mà một người bình thường sử dụng mỗi ngày.
    3. Tính xem những cuộn giấy vệ sinh này sẽ dùng được trong bao lâu.
    1. Có 3 cuộn giấy vệ sinh trong bức ảnh này.
    2. Một người bình thường sử dụng khoảng 20 tờ giấy vệ sinh mỗi ngày.
    3. Nếu mỗi cuộn có 200 tờ, thì mỗi cuộn sẽ dùng được trong khoảng 10 ngày. Do đó, 3 cuộn giấy sẽ dùng được trong khoảng một tháng.

    Bài toán hoặc các loại bài toán có lời văn khác là những ứng cử viên sáng giá để yêu cầu mô hình suy nghĩ từng bước.

    Câu lệnh Đáp

    Số hạng thứ 4 trong dãy số là gì?

    -135

    Câu trả lời của mô hình không chính xác. Một số cách để cải thiện vấn đề này là yêu cầu mô hình phân tích cú pháp vấn đề trước khi trả lời câu lệnh.

    Câu lệnh Đáp

    Trước tiên, hãy phân tích cú pháp công thức trong hình ảnh.

    Sau đó, dựa vào công thức, hãy trả lời câu hỏi "số hạng thứ 4 trong dãy số là gì?".

    Nhấp để mở rộng kết quả

    $$ b(n) = b(n-1) * (-3) $$

    $$ b(1) = 15 $$

    1. Thay n = 4 vào công thức:

      $$ b(4) = b(4-1) * (-3) $$

      $$ b(4) = b(3) * (-3) $$

    2. Chúng ta không biết giá trị của b(3), vì vậy hãy thay n = 3 vào công thức:

      $$ b(3) = b(3-1) * (-3) $$

      $$ b(3) = b(2) * (-3) $$

    3. Chúng ta không biết giá trị của b(2), vì vậy hãy thay n = 2 vào công thức:

      $$ b(2) = b(2-1) * (-3) $$

      $$ b(2) = b(1) * (-3) $$

    4. Chúng ta biết giá trị của b(1) là 15, nên hãy thay giá trị này vào công thức:

      $$ b(2) = 15 * (-3) $$

      $$ b(2) = -45 $$

    5. Bây giờ, chúng ta đã biết giá trị của b(2), hãy thay giá trị đó vào công thức cho b(3):

      $$ b(3) = b(2) * (-3) $$

      $$ b(3) = -45 * (-3) $$

      $$ b(3) = 135 $$

    6. Bây giờ, chúng ta đã biết giá trị của b(3), hãy thay giá trị đó vào công thức cho b(4):

      $$ b(4) = b(3) * (-3) $$

      $$ b(4) = 135 * (-3) $$

      $$ b(4) = -405 $$

    Do đó, số hạng thứ 4 trong dãy số là -405.

    Câu trả lời này của mô hình là chính xác. Giờ đây, để câu trả lời trở nên hợp lý hơn, bạn có thể yêu cầu mô hình suy nghĩ từng bước.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Số hạng thứ 4 trong dãy số là gì? Suy nghĩ từng bước.

    Số hạng đầu tiên là 15.

    Số hạng thứ hai là b(1) * (-3) = 15 * (-3) = -45.

    Số hạng thứ ba là b(2) * (-3) = -45 * (-3) = 135.

    Số hạng thứ tư là b(3) * (-3) = 135 * (-3) = -405.

    Chỉ định định dạng đầu ra

    Một vấn đề thường gặp là đầu ra của mô hình cần phải ở một định dạng nhất định (ví dụ: Markdown, JSON, HTML), đặc biệt là nếu đầu ra của mô hình cần được một tác vụ hạ nguồn nhập vào. Bạn có thể thử tạo kết quả ở định dạng đó bằng cách hướng dẫn mô hình thực hiện việc này trong câu lệnh. Sau đây là hai ví dụ:

    Câu lệnh Câu trả lời của mô hình

    Phân tích cú pháp bảng trong hình ảnh này sang định dạng Markdown

    ```none | Môn học | Trạng thái | Thời gian | Ngày bắt đầu | Ngày đến hạn | | ------- | ------ | ---- | ---------- | ------ | | Toán | Đã hoàn thành | 1,5 giờ | 29/11/2023 | 1/12/2023 | | Địa lý | Đã hoàn thành | 30 phút | 2/12/2023 | 4/12/2023 | | Vật lý | Đang thực hiện | 2 giờ | 3/12/2023 | 5/12/2023 | | Sinh học | Chưa bắt đầu | 6 giờ | 2/11/2016 | 6/12/2023 | ```
    Câu lệnh Câu trả lời của mô hình

    Cung cấp danh sách tất cả các thuộc tính sau:

    nguyên liệu, loại món ăn, có phải món chay hay không, ở định dạng JSON

    ```json { "ingredients": [ "rice", "shrimp", "clams", "mussels", "peas", "tomatoes", "onions", "garlic", "olive oil", "paprika", "salt", "pepper" ], "type of cuisine": "Spanish", "vegetarian": false } ```

    Đặt hình ảnh lên trước đối với câu lệnh có một hình ảnh

    Mặc dù Gemini có thể diễn giải hình ảnh và văn bản theo bất kỳ thứ tự nào trong câu lệnh, nhưng việc đặt một hình ảnh trước câu lệnh văn bản có thể mang lại kết quả tốt hơn. Trong các mẫu sau, bạn sẽ thấy hình ảnh xuất hiện trước văn bản trong mỗi câu lệnh.

    Khắc phục sự cố về câu lệnh đa phương thức

    Bạn có thể cần khắc phục sự cố về câu lệnh nếu không nhận được câu trả lời hữu ích. Sau đây là một số chiến lược mà bạn có thể thử.

    Nếu mô hình không lấy thông tin từ phần có liên quan của hình ảnh

    Để nhận được câu trả lời cụ thể hơn, bạn có thể chỉ ra những khía cạnh của hình ảnh mà bạn muốn câu lệnh lấy thông tin để đưa ra câu trả lời.

    Câu lệnh Câu trả lời của mô hình

    Số tã này đủ dùng cho em bé trong bao nhiêu ngày?

    Số tã này sẽ dùng được trong 198 ngày thì hết.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Số tã này dùng được bao lâu thì hết?

    Sử dụng trọng lượng ghi trên hộp để xác định độ tuổi của trẻ và sử dụng tổng số tã trong hộp.

    Chia tổng số tã cho số tã mà trẻ dùng mỗi ngày.

    Hộp chứa 198 chiếc tã. Hộp ghi rõ tã dành cho trẻ nặng từ 10 đến 17 kg.

    Trẻ em có cân nặng trung bình trong khoảng này thường từ 1 đến 2 tuổi.

    Một đứa trẻ 2 tuổi thường dùng 6 chiếc tã mỗi ngày, do đó, số tã này sẽ dùng được trong khoảng 33 ngày (198/6).

    Nếu kết quả đầu ra của mô hình quá chung chung và không đủ phù hợp với hình ảnh đầu vào

    Để giúp mô hình điều chỉnh câu trả lời cho phù hợp với(các) hình ảnh, hãy thử yêu cầu mô hình mô tả hình ảnh trước khi thực hiện nhiệm vụ suy luận.

    Câu lệnh Câu trả lời của mô hình

    Điểm chung giữa các hình ảnh này là gì?

    Cả bốn hình ảnh đều là ví dụ về ảnh phong cảnh.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Trước tiên, hãy mô tả chi tiết nội dung trong mỗi hình ảnh. Điểm chung giữa những hình ảnh này là gì?

    Hình ảnh đầu tiên cho thấy một người đang đóng gói vali. Hình ảnh thứ hai cho thấy một hành lang trống trong trung tâm mua sắm. Hình ảnh thứ ba cho thấy một cuộn giấy vệ sinh. Hình ảnh thứ tư cho thấy một vùng biển tối tăm và giông bão.

    Điểm chung giữa những hình ảnh này là chúng đều là ví dụ về không gian chuyển tiếp. Không gian chuyển tiếp là những địa điểm hoặc tình huống nằm giữa hai địa điểm hoặc tình huống khác. Chúng thường được đặc trưng bởi cảm giác không chắc chắn hoặc mơ hồ.

    Hình ảnh đầu tiên cho thấy người này đang ở nhà và đang đi du lịch. Hình ảnh thứ hai cho thấy hành lang giữa hai cửa hàng. Hình ảnh thứ ba là giấy vệ sinh, có thể đại diện cho phòng tắm. Phòng tắm là không gian chuyển tiếp giữa không gian riêng tư và không gian công cộng. Đó là nơi chúng ta chuẩn bị để bước vào hoặc rời khỏi thế giới bên ngoài.

    Hình ảnh thứ tư cho thấy biển ở trạng thái giữa yên bình và giông bão.

    Không gian chuyển tiếp có thể vừa thú vị vừa gây bất an. Đó có thể là nơi bắt đầu hoặc kết thúc. Đó có thể là nơi để suy ngẫm hoặc nơi để hành động.

    Bạn cũng có thể thử yêu cầu rõ ràng mô hình tham chiếu đến nội dung trong hình ảnh.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Điểm chung giữa các hình ảnh này là gì? Tham khảo nội dung trong hình ảnh trong câu trả lời của bạn.

    Tất cả hình ảnh đều liên quan đến du lịch. Hình ảnh đầu tiên cho thấy một người đang đóng gói vali, hình ảnh thứ hai cho thấy một hành lang trống trong trung tâm mua sắm, hình ảnh thứ ba cho thấy một chồng giấy vệ sinh và hình ảnh thứ tư cho thấy một biển tối và bão.

    Những hình ảnh này đều liên quan đến du lịch vì đây là những thứ mọi người cần hoặc sử dụng khi đi du lịch. Hình ảnh đầu tiên cho thấy một người đang đóng gói vali, đây là việc mọi người thường làm khi đi du lịch. Hình ảnh thứ hai cho thấy một hành lang trống trong trung tâm mua sắm, nơi mọi người thường đến để mua sắm cho chuyến đi của mình. Hình ảnh thứ ba cho thấy một chồng giấy vệ sinh, đây là thứ mà mọi người thường sử dụng khi đi du lịch. Hình ảnh thứ tư cho thấy một vùng biển tối tăm và giông bão, đây là điều mà mọi người thường gặp khi đi du lịch.

    Những mẹo này cũng áp dụng cho kết quả sáng tạo từ hình ảnh. Trong ví dụ sau đây về con thỏ, việc yêu cầu rõ ràng mô hình đưa các khía cạnh của hình ảnh vào có thể cải thiện kết quả đầu ra.

    Câu lệnh Câu trả lời của mô hình

    Bạn có thể viết cho tôi một bài thơ về hình ảnh này không?

    Chú thỏ nhỏ, lông mềm và nâu,
    Nhảy nhót khắp cánh đồng, lên và xuống.
    Tai dài, đuôi nhỏ,
    Bạn là sinh vật dễ thương nhất.

    Bạn gặm cỏ xanh và ngọt,
    Và nhảy đi khi thấy tôi.
    Nhưng tôi sẽ luôn là bạn của bạn,
    Chú thỏ nhỏ, cho đến tận cùng.

    Câu lệnh đã cập nhật Câu trả lời được cải thiện

    Bạn có thể viết cho tôi một bài thơ miêu tả và kịch tính về hình ảnh này, đồng thời cho biết địa điểm không?

    Chú thỏ nhỏ trên bãi cỏ xanh,
    Tai dài và thính.
    Bạn thấy gì ngoài kia,
    Ở nơi xa xăm mà bạn đang nhìn?

    Có phải là màu xanh của đại dương,
    Lấp lánh dưới ánh mặt trời?
    Hay tiếng sóng vỗ rì rào,
    Một nhịp điệu bạn yêu thích?

    Chú thỏ nhỏ ơi, hãy nói thật đi,
    Điều gì khiến chú say mê đến thế?
    Là gió biển mặn mòi,
    Hay tiếng hải âu gọi?

    Có lẽ là vì sự bao la của vạn vật,
    Một thế giới vừa rộng lớn vừa nhỏ bé.
    Nơi giấc mơ có thể bay xa,
    Và những cuộc phiêu lưu có thể bắt đầu.

    Chú thỏ nhỏ, tôi tự hỏi bạn mơ thấy gì,
    Khi bạn ngồi trên bãi cỏ, thật thanh bình.
    Bạn muốn khám phá biển sâu,
    Hay ở trên cạn, nơi bạn có thể nhảy?

    Dù là gì đi nữa, chú thỏ nhỏ ơi,
    Hãy giữ cho ngọn lửa tò mò luôn bừng sáng.
    Vì trong giấc mơ và khát vọng của bạn,
    Có một thế giới đang chờ bạn sáng tạo.

    Khắc phục sự cố về phần không thành công của câu lệnh

    Thật khó để biết liệu câu lệnh có không thành công hay không vì mô hình không hiểu hình ảnh ngay từ đầu, hoặc nếu mô hình hiểu hình ảnh nhưng không thực hiện đúng các bước suy luận sau đó. Để phân biệt giữa các lý do đó, hãy yêu cầu mô hình mô tả nội dung trong hình ảnh.

    Trong ví dụ sau, nếu mô hình phản hồi bằng một món ăn nhẹ có vẻ bất ngờ khi kết hợp với trà (ví dụ: bỏng ngô), thì trước tiên, bạn có thể khắc phục sự cố để xác định xem mô hình có nhận dạng chính xác rằng hình ảnh có chứa trà hay không.

    Câu lệnh Câu lệnh để khắc phục sự cố

    Tôi có thể làm món ăn nhẹ nào trong 1 phút để ăn kèm với món này?

    Mô tả nội dung trong hình ảnh này.

    Một chiến lược khác là yêu cầu mô hình giải thích lý do. Điều này có thể giúp bạn thu hẹp phạm vi để xác định phần nào trong lập luận bị sai sót (nếu có).

    Câu lệnh Câu lệnh để khắc phục sự cố

    Tôi có thể làm món ăn nhẹ nào trong 1 phút để ăn kèm với món này?

    Tôi có thể làm món ăn nhẹ nào trong 1 phút để ăn kèm với món này? Vui lòng giải thích lý do.

    Bước tiếp theo

    • Hãy thử viết câu lệnh đa phương thức của riêng bạn bằng Google AI Studio.
    • Để biết thông tin về cách sử dụng Gemini Files API để tải tệp nội dung nghe nhìn lên và đưa các tệp đó vào câu lệnh, hãy xem hướng dẫn về Vision, Âm thanh và Xử lý tài liệu.
    • Để biết thêm hướng dẫn về thiết kế câu lệnh, chẳng hạn như điều chỉnh tham số lấy mẫu, hãy xem trang Chiến lược câu lệnh.