API ของไฟล์

Gemini สามารถจัดการข้อมูลอินพุตประเภทต่างๆ ได้พร้อมกัน ไม่ว่าจะเป็นข้อความ รูปภาพ และเสียง

คู่มือนี้จะแสดงวิธีทำงานกับไฟล์สื่อโดยใช้ Files API การดำเนินการพื้นฐานจะเหมือนกันสำหรับไฟล์เสียง รูปภาพ วิดีโอ เอกสาร และ ประเภทไฟล์อื่นๆ ที่รองรับ

ดูคำแนะนำในการใช้พรอมต์ไฟล์ได้ที่ส่วนคู่มือการใช้พรอมต์ไฟล์

อัปโหลดไฟล์

คุณใช้ Files API เพื่ออัปโหลดไฟล์สื่อได้ ใช้ Files API เสมอเมื่อขนาดคำขอทั้งหมด (รวมถึงไฟล์, พรอมต์ข้อความ, คำสั่งของระบบ ฯลฯ) มีขนาดใหญ่กว่า 100 MB สำหรับไฟล์ PDF จะมีขีดจำกัดอยู่ที่ 50 MB

โค้ดต่อไปนี้จะอัปโหลดไฟล์ แล้วใช้ไฟล์ในการเรียกไปยัง 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

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

คุณสามารถยืนยันว่า API จัดเก็บไฟล์ที่อัปโหลดเรียบร้อยแล้วและรับข้อมูลเมตาของไฟล์ได้โดยการเรียกใช้ 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

แสดงรายการไฟล์ที่อัปโหลด

โค้ดต่อไปนี้จะรับรายการไฟล์ทั้งหมดที่อัปโหลด

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"

ลบไฟล์ที่อัปโหลด

ระบบจะลบไฟล์โดยอัตโนมัติหลังจากผ่านไป 48 ชั่วโมง นอกจากนี้ คุณยังลบไฟล์ที่อัปโหลดด้วยตนเองได้โดยทำดังนี้

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"

ข้อมูลการใช้งาน

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

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

กลยุทธ์การเขียนพรอมต์ไฟล์

ส่วนนี้จะให้คำแนะนำและแนวทางปฏิบัติแนะนำในการใช้ไฟล์สื่อกับ พรอมต์สำหรับ Gemini API

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

พรอมต์ คำตอบ

เขียนบล็อกโพสต์สั้นๆ ที่น่าสนใจโดยอิงตามรูปภาพนี้ โดยควรมีคำอธิบายอาหารในรูปภาพและพูดถึงเส้นทางการเตรียมอาหารของฉัน


คุกกี้

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

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

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

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

ขอให้คุณเตรียมอาหารได้อย่างอร่อยและดีต่อสุขภาพ

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

คุณปรับปรุงพรอมต์แบบหลายรูปแบบได้โดยทำตามแนวทางปฏิบัติแนะนำต่อไปนี้

  • พื้นฐานการออกแบบพรอมต์

    • ระบุคำสั่งให้เจาะจง: สร้างคำสั่งที่ชัดเจนและกระชับเพื่อให้มีโอกาสตีความผิดน้อยที่สุด
    • เพิ่มตัวอย่าง 2-3 รายการลงในพรอมต์: ใช้ตัวอย่างแบบ Few-Shot ที่สมจริงเพื่อแสดงสิ่งที่คุณต้องการบรรลุ
    • แบ่งงานออกเป็นขั้นตอน: แบ่งงานที่ซับซ้อนออกเป็นเป้าหมายย่อยที่จัดการได้ เพื่อนำโมเดลผ่านกระบวนการ
    • ระบุรูปแบบเอาต์พุต: ในพรอมต์ ให้ขอเอาต์พุตในรูปแบบที่ต้องการ เช่น Markdown, JSON, HTML และอื่นๆ
    • วางรูปภาพไว้ก่อนสำหรับพรอมต์ที่มีรูปภาพเดียว: แม้ว่า Gemini จะจัดการอินพุตรูปภาพและข้อความได้ทุกรูปแบบ แต่สำหรับพรอมต์ที่มีรูปภาพเดียว การวางรูปภาพ (หรือวิดีโอ) ไว้ก่อนพรอมต์ข้อความอาจช่วยให้ได้ผลลัพธ์ที่ดีกว่า อย่างไรก็ตาม สำหรับพรอมต์ที่ต้องใช้รูปภาพที่สอดแทรกกับข้อความอย่างมากเพื่อให้เข้าใจได้ ให้ใช้ลำดับที่เป็นธรรมชาติที่สุด
  • การแก้ปัญหาพรอมต์แบบมัลติโมดัล

    • หากโมเดลไม่ได้ดึงข้อมูลจากส่วนที่เกี่ยวข้องของรูปภาพ: ให้บอกใบ้ว่าคุณต้องการให้พรอมต์ดึงข้อมูลจากแง่มุมใดของรูปภาพ
    • หากเอาต์พุตโมเดลทั่วไปเกินไป (ไม่ปรับให้เหมาะกับอินพุตรูปภาพ/วิดีโอมากพอ): ที่จุดเริ่มต้นของพรอมต์ ให้ลองขอให้โมเดลอธิบายรูปภาพหรือวิดีโอก่อนที่จะให้คำสั่งงาน หรือลองขอให้โมเดลอ้างอิงถึงสิ่งที่อยู่ในรูปภาพ
    • หากต้องการแก้ปัญหาว่าส่วนใดล้มเหลว ให้ขอให้โมเดลอธิบายรูปภาพ หรือขอให้โมเดลอธิบายเหตุผลเพื่อวัดความเข้าใจเริ่มต้นของโมเดล
    • หากพรอมต์ของคุณทำให้เกิดเนื้อหาที่ผิดเพี้ยน: ให้ลองลดการตั้งค่าอุณหภูมิหรือขอให้โมเดลเขียนคำอธิบายที่สั้นลง เพื่อลดโอกาสที่โมเดลจะคาดคะเนรายละเอียดเพิ่มเติม
    • การปรับพารามิเตอร์การสุ่มตัวอย่าง: ทดลองใช้การตั้งค่าอุณหภูมิและการเลือกแบบ Top-k ที่แตกต่างกันเพื่อปรับความคิดสร้างสรรค์ของโมเดล

ระบุคำสั่งให้ชัดเจน

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

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

พรอมต์ คำตอบของโมเดล

อธิบายรูปภาพนี้

รูปภาพแสดงตารางเที่ยวบินขาเข้าและขาออกของสนามบิน

พรอมต์ที่อัปเดต การตอบสนองที่ดีขึ้น
ตารางเวลาการเดินทาง

แยกวิเคราะห์เวลาและเมืองจากกระดานข้อมูลของสนามบินที่แสดงในรูปภาพนี้เป็นรายการ

  • 10:50 มอสโก
  • 11:05 เอดินบะระ
  • 11:05 ลอนดอน
  • 11:10 บูคาเรสต์
  • 11:30 น. เคียฟ
  • 11:35 ดับลิน
  • 11:45 ภาคมิดแลนด์สตะวันออกของอังกฤษ
  • 12:15 โซเฟีย
  • 12:30 น. ลอนดอน
  • 12:30 นิวคาสเซิล
  • 12:40 เซนต์ปีเตอร์สเบิร์ก
  • 12:40 ลอนดอน
  • 12:45 แมนเชสเตอร์
  • เพิ่มตัวอย่าง

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

    ในตัวอย่างต่อไปนี้ เอาต์พุตเริ่มต้นจะเขียนในรูปแบบประโยคและมีประเทศ (บราซิล) ด้วย สมมติว่าคุณต้องการเอาต์พุตในรูปแบบหรือสไตล์ที่ต่างออกไป และต้องการเฉพาะชื่อเมือง ไม่ใช่ชื่อประเทศ การเพิ่มตัวอย่างแบบ Few-Shot ลงในพรอมต์จะช่วยบังคับให้โมเดลตอบในแบบที่คุณต้องการได้

    พรอมต์ คำตอบของโมเดล
    ตารางเวลาเดินทาง

    ระบุเมืองพร้อมกับจุดสังเกต

    สถานที่สำคัญคือรูปปั้นพระคริสต์ผู้ไถ่ในรีโอเดจาเนโร ประเทศบราซิล

    พรอมต์ที่อัปเดต การตอบสนองที่ดีขึ้น

    ระบุเมืองพร้อมกับจุดสังเกต

    โคลอสเซียม

    เมือง: โรม สถานที่สำคัญ: โคลอสเซียม

    นครต้องห้าม

    เมือง: ปักกิ่ง, จุดสังเกต: พระราชวังต้องห้าม

    forbidden-city

    เมือง: รีโอเดจาเนโร, สถานที่สำคัญ: รูปปั้นพระคริสต์ผู้ไถ่

    แจกแจงรายละเอียดทีละขั้นตอน

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

    พรอมต์ คำตอบของโมเดล

    กระดาษชำระจะหมดเมื่อใด

    ในไม่ช้า คุณจะเหลือม้วนฟิล์มเพียง 3 ม้วน

    พรอมต์ที่อัปเดต การตอบกลับที่ดีขึ้น
    1. ก่อนอื่น ให้นับม้วนกระดาษชำระในรูปภาพนี้
    2. จากนั้นให้พิจารณาว่าโดยปกติแล้วคนทั่วไปใช้กระดาษชำระวันละเท่าไร
    3. คำนวณระยะเวลาที่กระดาษชำระเหล่านี้จะหมด
    1. มีกระดาษชำระ 3 ม้วนในภาพนี้
    2. โดยทั่วไปคนเราใช้กระดาษชำระประมาณ 20 แผ่นต่อวัน
    3. หากกระดาษแต่ละม้วนมี 200 แผ่น กระดาษแต่ละม้วนจะใช้ได้ประมาณ 10 วัน ดังนั้น ม้วนฟิล์ม 3 ม้วนจะอยู่ได้ประมาณ 1 เดือน

    โจทย์คณิตศาสตร์หรือโจทย์ปัญหาประเภทอื่นๆ เป็นตัวอย่างที่ดีในการขอให้โมเดลคิดทีละขั้นตอน

    พรอมต์ การตอบกลับ

    พจน์ที่ 4 ในลำดับคืออะไร

    -135

    คำตอบจากโมเดลไม่ถูกต้อง วิธีหนึ่งในการปรับปรุงเรื่องนี้คือการขอให้โมเดลแยกวิเคราะห์ปัญหาก่อนที่จะตอบพรอมต์

    พรอมต์ คำตอบ

    แยกวิเคราะห์สูตรในรูปภาพก่อน

    จากนั้นตอบคำถาม "พจน์ที่ 4 ในลำดับคืออะไร" โดยอิงตามสูตร

    คลิกเพื่อขยายผลลัพธ์

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

    $$ b(1) = 15 $$

    1. แทนค่า n = 4 ในสูตร

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

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

    2. เราไม่ทราบค่าของ b(3) ดังนั้นให้แทน n = 3 ลงในสูตร

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

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

    3. เราไม่ทราบค่าของ b(2) ดังนั้นให้แทน n = 2 ลงในสูตร

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

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

    4. เรารู้ว่าค่าของ b(1) คือ 15 ดังนั้นให้แทนค่าลงในสูตร

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

      $$ b(2) = -45 $$

    5. ตอนนี้เรารู้ค่าของ b(2) แล้ว ให้แทนค่าลงในสูตรสำหรับ b(3) ดังนี้

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

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

      $$ b(3) = 135 $$

    6. ตอนนี้เรารู้ค่าของ b(3) แล้ว ให้แทนค่าลงในสูตรสำหรับ b(4)

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

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

      $$ b(4) = -405 $$

    ดังนั้น พจน์ที่ 4 ในลำดับคือ -405

    คำตอบของโมเดลนี้ถูกต้องแล้ว แต่หากต้องการให้คำตอบมีประสิทธิภาพมากขึ้น คุณสามารถขอให้โมเดลคิดทีละขั้นตอนได้

    พรอมต์ที่อัปเดต การตอบสนองที่ดีขึ้น

    พจน์ที่ 4 ในลำดับคืออะไร คิดทีละขั้นตอน

    โดยพจน์แรกคือ 15

    พจน์ที่ 2 คือ b(1) * (-3) = 15 * (-3) = -45

    พจน์ที่ 3 คือ b(2) * (-3) = -45 * (-3) = 135

    พจน์ที่ 4 คือ b(3) * (-3) = 135 * (-3) = -405

    ระบุรูปแบบเอาต์พุต

    ปัญหาที่พบบ่อยคือความจำเป็นที่เอาต์พุตโมเดลต้องอยู่ในรูปแบบที่เฉพาะเจาะจง (เช่น Markdown, JSON, HTML) โดยเฉพาะอย่างยิ่งหากเอาต์พุตโมเดลต้องได้รับการนำเข้าโดยงานปลายทาง คุณลองสร้างเอาต์พุตในรูปแบบนั้นได้ โดยสั่งให้โมเดลทำเช่นนั้นภายในพรอมต์ ตัวอย่าง 2 รายการมีดังนี้

    พรอมต์ คำตอบของโมเดล

    แยกวิเคราะห์ตารางในรูปภาพนี้เป็นรูปแบบ Markdown

    ```none | วิชา | สถานะ | เวลา | วันที่เริ่มต้น | ครบกำหนด | | ------- | ------ | ---- | ---------- | ------ | | คณิตศาสตร์ | เสร็จแล้ว | 1.5 ชม. | 29/11/2023 | 1/12/2023 | | ภูมิศาสตร์ | เสร็จแล้ว | 30 นาที | 2/12/2023 | 4/12/2023 | | ฟิสิกส์ | กำลังดำเนินการ | 2 ชม. | 3/12/2023 | 5/12/2023 | | ชีววิทยา | ยังไม่ได้เริ่ม | 6 ชม. | 2/11/2016 | 6/12/2023 | ```
    พรอมต์ คำตอบของโมเดล

    ระบุรายการแอตทริบิวต์ต่อไปนี้ทั้งหมด

    ส่วนผสม ประเภทอาหาร มังสวิรัติหรือไม่ ในรูปแบบ JSON

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

    ใส่รูปภาพก่อนสำหรับพรอมต์แบบรูปภาพเดียว

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

    การแก้ปัญหาเกี่ยวกับพรอมต์แบบหลายรูปแบบ

    คุณอาจต้องแก้ปัญหาพรอมต์หากไม่ได้รับคำตอบที่เป็นประโยชน์ คุณลองใช้กลยุทธ์ต่อไปนี้ได้

    หากโมเดลไม่ได้ดึงข้อมูลจากส่วนที่เกี่ยวข้องของรูปภาพ

    หากต้องการคำตอบที่เจาะจงมากขึ้น คุณสามารถระบุแง่มุมของรูปภาพที่ต้องการให้พรอมต์ดึงข้อมูลมาใช้ในการตอบได้

    พรอมต์ คำตอบของโมเดล

    ผ้าอ้อมเหล่านี้จะใช้ได้กี่วันสำหรับทารก

    ผ้าอ้อมจะใช้ได้นาน 198 วันก่อนที่จะหมด

    พรอมต์ที่อัปเดต การตอบสนองที่ดีขึ้น

    ผ้าอ้อมพวกนี้จะใช้ได้นานแค่ไหนก่อนจะหมด

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

    หารจำนวนทั้งหมดด้วยจำนวนผ้าอ้อมที่บุตรหลานใช้ต่อวัน

    กล่องมีผ้าอ้อม 198 ชิ้น กล่องระบุว่าผ้าอ้อมเหมาะสำหรับเด็กที่มีน้ำหนัก 22-37 ปอนด์

    เด็กที่มีน้ำหนักอยู่ในช่วงนี้มักจะมีอายุระหว่าง 1-2 ปี

    โดยปกติแล้วเด็กอายุ 2 ขวบจะใช้ผ้าอ้อม 6 ผืนต่อวัน ดังนั้นผ้าอ้อมจะใช้ได้ประมาณ 33 วัน (198/6)

    หากเอาต์พุตโมเดลเป็นแบบทั่วไปเกินไปและไม่ได้รับการปรับแต่งให้เหมาะกับอินพุตรูปภาพมากพอ

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

    พรอมต์ คำตอบของโมเดล

    รูปภาพเหล่านี้มีอะไรที่เหมือนกัน

    รูปภาพทั้ง 4 รูปเป็นตัวอย่างของการถ่ายภาพทิวทัศน์

    พรอมต์ที่อัปเดต การตอบกลับที่ดีขึ้น

    ก่อนอื่นให้อธิบายสิ่งที่อยู่ในแต่ละภาพโดยละเอียด รูปภาพเหล่านี้มีอะไรที่เหมือนกัน

    รูปภาพแรกแสดงภาพคนกำลังจัดกระเป๋าเดินทาง รูปภาพที่ 2 แสดงโถงทางเดินที่ว่างเปล่าในห้างสรรพสินค้า รูปภาพที่ 3 แสดงกระดาษชำระ 1 ม้วน รูปภาพที่ 4 แสดงทะเลที่มืดและมีพายุ

    ความเหมือนกันของภาพเหล่านี้คือเป็นตัวอย่างของพื้นที่ก้ำกึ่ง Liminal Space คือสถานที่หรือสถานการณ์ที่อยู่กึ่งกลางระหว่างสถานที่หรือสถานการณ์อื่นๆ 2 แห่ง ซึ่งมักมีลักษณะเป็นความรู้สึกไม่แน่นอนหรือความคลุมเครือ

    รูปภาพแรกแสดงบุคคลที่อยู่ระหว่างการอยู่บ้านกับการเดินทาง ภาพที่ 2 แสดงทางเดินระหว่างร้านค้า 2 ร้าน รูปภาพที่ 3 คือกระดาษชำระ ซึ่งอาจสื่อถึงห้องน้ำ ห้องน้ำเป็นพื้นที่เปลี่ยนผ่านระหว่างพื้นที่ส่วนตัว และพื้นที่สาธารณะ เป็นสถานที่ที่เราเตรียมตัวเพื่อเข้าหรือออกจากโลกภายนอก

    ภาพที่ 4 แสดงให้เห็นทะเลที่อยู่ระหว่างความสงบกับความปั่นป่วน

    Liminal Space อาจทั้งน่าตื่นเต้นและน่ากังวล ซึ่งอาจเป็นจุดเริ่มต้นใหม่หรือจุดสิ้นสุดก็ได้ ซึ่งอาจเป็นสถานที่สำหรับการไตร่ตรองหรือสถานที่สำหรับการลงมือทำ

    นอกจากนี้ คุณยังลองขอให้โมเดลอ้างอิงสิ่งที่อยู่ในรูปภาพอย่างชัดเจนได้ด้วย

    พรอมต์ที่อัปเดต การตอบกลับที่ดีขึ้น

    รูปภาพเหล่านี้มีอะไรที่เหมือนกัน อ้างอิงถึงสิ่งที่อยู่ในรูปภาพในคำตอบ

    รูปภาพทั้งหมดเกี่ยวข้องกับการท่องเที่ยว รูปภาพแรกแสดงคนกำลังจัดกระเป๋าเดินทาง รูปภาพที่ 2 แสดงโถงทางเดินที่ว่างเปล่าในห้างสรรพสินค้า รูปภาพที่ 3 แสดงกระดาษชำระที่วางซ้อนกัน และรูปภาพที่ 4 แสดงทะเลที่มืดและมีพายุ

    รูปภาพเหล่านี้เกี่ยวข้องกับการเดินทางทั้งหมด เนื่องจากเป็นสิ่งที่ผู้คนต้องการหรือใช้เมื่อเดินทาง รูปภาพแรกแสดงภาพคนกำลังจัดกระเป๋าเดินทาง ซึ่งเป็นสิ่งที่ผู้คนทำเมื่อจะเดินทาง รูปภาพที่ 2 แสดงโถงทางเดินที่ว่างเปล่าในห้างสรรพสินค้า ซึ่งเป็นสถานที่ที่ผู้คนมักจะไปซื้อของสำหรับการเดินทาง รูปภาพที่ 3 แสดงกองกระดาษชำระ ซึ่งเป็นสิ่งที่ผู้คนมักใช้เมื่อเดินทาง ภาพที่ 4 แสดงทะเลที่มืดครึ้มและมีพายุ ซึ่งเป็น สิ่งที่ผู้คนมักพบเจอเมื่อเดินทาง

    เคล็ดลับเดียวกันนี้ใช้ได้กับผลงานครีเอทีฟจากรูปภาพ ในตัวอย่างต่อไปนี้ที่มีกระต่าย การขอให้โมเดลรวมแง่มุมต่างๆ จากรูปภาพอย่างชัดเจนจะช่วยปรับปรุงเอาต์พุตได้

    พรอมต์ คำตอบของโมเดล

    คุณแต่งกลอนเกี่ยวกับรูปภาพนี้ให้ฉันได้ไหม

    กระต่ายน้อยขนสีน้ำตาลนุ่มฟู
    กระโดดโลดเต้นไปมาในทุ่งหญ้า
    หูยาว หางสั้น
    เจ้าเป็นสัตว์ที่น่ารักที่สุดในโลก

    เจ้าแทะเล็มหญ้าสีเขียวหวานฉ่ำ
    แล้วกระโดดหนีเมื่อเห็นฉัน
    แต่ฉันจะเป็นเพื่อนเธอเสมอ
    เจ้ากระต่ายน้อย จนถึงวันสุดท้าย

    พรอมต์ที่อัปเดต การตอบกลับที่ดีขึ้น

    คุณช่วยแต่งกลอนที่บรรยายและน่าทึ่งเกี่ยวกับรูปภาพนี้พร้อมระบุสถานที่ได้ไหม

    กระต่ายน้อยบนสนามหญ้า
    หูยาวๆ ช่างน่ารัก
    คุณเห็นอะไรที่นั่น
    ในระยะไกลที่คุณจ้องมอง

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

    เจ้ากระต่ายน้อย บอกฉันที
    อะไรทำให้เจ้าสนใจได้ขนาดนี้
    เป็นเพราะลมทะเลเค็มๆ
    หรือเสียงนกนางนวลที่ทำให้คุณพอใจ

    อาจเป็นเพราะความกว้างใหญ่ของทุกสิ่ง
    โลกที่ทั้งใหญ่และเล็ก
    สถานที่ที่ความฝันโลดแล่นได้
    และการผจญภัยเริ่มต้นขึ้น

    กระต่ายน้อย ฉันสงสัยว่าเธอฝันถึงอะไร
    ขณะนั่งอยู่บนหญ้าอย่างเงียบสงบ
    คุณอยากสำรวจใต้ทะเลลึก
    หรืออยู่บนบกที่กระโดดโลดเต้นได้

    ไม่ว่าจะเป็นอะไรก็ตาม เจ้ากระต่ายน้อย
    จงรักษาประกายแห่งความสงสัยนั้นไว้ให้สว่างไสว
    เพราะในความฝันและความปรารถนา
    มีโลกที่รอให้คุณสร้างสรรค์

    การแก้ปัญหาว่าพรอมต์ส่วนใดไม่สำเร็จ

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

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

    พรอมต์ พรอมต์สำหรับการแก้ปัญหา

    ฉันจะทำของว่างอะไรได้บ้างใน 1 นาทีที่เข้ากันได้ดีกับเครื่องดื่มนี้

    อธิบายสิ่งที่อยู่ในรูปภาพนี้

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

    พรอมต์ พรอมต์สำหรับการแก้ปัญหา

    ฉันจะทำของว่างอะไรได้บ้างใน 1 นาทีที่เข้ากันได้ดีกับเครื่องดื่มนี้

    ฉันจะทำของว่างอะไรได้บ้างใน 1 นาทีที่เข้ากันได้ดีกับเครื่องดื่มนี้ โปรดให้เหตุผล

    ขั้นตอนถัดไป

    • ลองเขียนพรอมต์แบบหลายรูปแบบของคุณเองโดยใช้ Google AI Studio
    • ดูข้อมูลเกี่ยวกับการใช้ Gemini Files API เพื่ออัปโหลดไฟล์สื่อและรวมไว้ในพรอมต์ได้ที่คู่มือVision เสียง และการประมวลผลเอกสาร
    • ดูคำแนะนำเพิ่มเติมเกี่ยวกับการออกแบบพรอมต์ เช่น การปรับพารามิเตอร์การสุ่มตัวอย่าง ได้ที่หน้ากลยุทธ์พรอมต์