ภาพรวมของ Gemini API

Gemini API ให้คุณเข้าถึง Generative Model ล่าสุดจาก Google เมื่อคุณคุ้นเคยกับฟีเจอร์ทั่วไปที่มีให้บริการผ่าน API แล้ว ให้ลองดูบทแนะนำสำหรับภาษาที่คุณเลือกเพื่อเริ่มพัฒนา

รูปแบบ

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

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

ข้อมูลและการออกแบบพรอมต์

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

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

การออกแบบพรอมต์และการป้อนข้อความ

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

สร้างเนื้อหา

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

การป้อนข้อความและรูปภาพ

คุณสามารถส่งพรอมต์ข้อความพร้อมรูปภาพไปยังโมเดล gemini-pro-vision เพื่อทำงานที่เกี่ยวข้องกับการมองเห็นได้ เช่น การใส่คำบรรยายให้กับรูปภาพ หรือการระบุสิ่งที่อยู่ในรูปภาพ

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

Python

model = genai.GenerativeModel('gemini-pro-vision')

cookie_picture = [{
    'mime_type': 'image/png',
    'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"

response = model.generate_content(
    model="gemini-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

ดูบทแนะนำสำหรับ Python เพื่อดูข้อมูลโค้ดที่สมบูรณ์

Go

vmodel := client.GenerativeModel("gemini-pro-vision")

data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
  log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
  log.Fatal(err)
}

ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม

เว็บไซต์

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: base64EncodedImage /* see JavaScript quickstart for details */,
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม

ลูกดอก (Flutter)

final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
  Content.multi([
    TextPart(prompt),
    DataPart('image/png', imageBytes),
  ])
];

final response = await model.generateContent(content);
print(response.text);

ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)

Swift

let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

let response = try await model.generateContent(prompt, cookieImage)

ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro-vision",
    apiKey = BuildConfig.apiKey
)

val cookieImage: Bitmap = // ...
val inputContent = content() {
  image(cookieImage)
  text("Do these look store-bought or homemade?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision:generateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @<(echo'{
          "contents":[
            { "parts":[
                {"text": "Do these look store-bought or homemade?"},
                { "inlineData": {
                    "mimeType": "image/png",
                    "data": "'$(base64 -w0 cookie.png)'"
                  }
                }
              ]
            }
          ]
         }')

ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API

การป้อนข้อความเท่านั้น

นอกจากนี้ Gemini API ยังจัดการกับการป้อนข้อมูลแบบข้อความเท่านั้นได้ด้วย ฟีเจอร์นี้ช่วยให้คุณทำงานประมวลผลภาษาธรรมชาติ (NLP) ได้ เช่น การเติมข้อความและการสรุป

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

Python

model = genai.GenerativeModel('gemini-pro-vision')

prompt = "Write a story about a magic backpack."

response = model.generate_content(prompt)

ดูตัวอย่างแบบเต็มได้ที่บทแนะนำ Python

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม

เว็บไซต์

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม

ลูกดอก (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);

ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[
      { "parts":[{"text": "Write a story about a magic backpack"}]}
    ]
}'

ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API

เปลี่ยนการสนทนา (แชท) แบบหลายมุมมอง

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

ตัวอย่างโค้ดต่อไปนี้จะแสดงการใช้งานการโต้ตอบแชทแบบง่ายๆ สำหรับแต่ละภาษาที่รองรับ

Python

  model = genai.GenerativeModel('gemini-pro')
  chat = model.start_chat(history=[])

  response = chat.send_message(
      "Pretend you\'re a snowman and stay in character for each response.")
  print(response.text)

  response = chat.send_message(
      "What\'s your favorite season of the year?")
  print(response.text)

ดูการสาธิตการแชทในบทแนะนำ Python สำหรับตัวอย่างแบบเต็ม

Go

model := client.GenerativeModel("gemini-pro")
cs := model.StartChat()
cs.History = []*genai.Content{
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Pretend you're a snowman and stay in character for each response."),
    },
    Role: "user",
  },
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Hello! It's cold! Isn't that great?"),
    },
    Role: "model",
  },
}

resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
  log.Fatal(err)
}

ดูการสาธิตแชทในบทแนะนำเกี่ยวกับ Go เพื่อดูตัวอย่างแบบเต็ม

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

ดูการสาธิตแชทในบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม

เว็บไซต์

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's so cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

ดูการสาธิตแชทในบทแนะนำบนเว็บเพื่อดูตัวอย่างแบบเต็ม

ลูกดอก (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
  Content.text(
      "Pretend you're a snowman and stay in character for each response."),
  Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);

ดูการสาธิตการแชทในบทแนะนำ Dart (Flutter) เพื่อดูตัวอย่างแบบเต็ม

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let chat = model.startChat()

var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)

message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)

ดูการสาธิตแชทในบทแนะนำของ Swft เพื่อดูตัวอย่างแบบเต็ม

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
        character for each response.")
print(response.text)

ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Pretend you're a snowman and stay in character for each
        {"role": "model",
            response."}]},
         "parts":[{
           "text": "Hello! It's so cold! Isn't that great?"}]},
        {"role": "user",
         "parts":[{
           "text": "What\'s your favorite season of the year?"}]},
       ]
    }' 2> /dev/null | grep "text"
# response example:
"text": "Winter, of course!"

ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API

สตรีมคำตอบ

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

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

Python

prompt = "Write a story about a magic backpack."

response = genai.stream_generate_content(
    model="models/gemini-pro",
    prompt=prompt
)

ดูบทแนะนำสำหรับ Python เพื่อดูข้อมูลโค้ดที่สมบูรณ์

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")

iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }

  // print resp
}

ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม

เว็บไซต์

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม

ลูกดอก (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
  print(chunk.text);
}

ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let stream = model.generateContentStream(prompt)
for try await chunk in stream {
  print(chunk.text ?? "No content")
}

ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val inputContent = content {
  text("Write a story about a magic backpack.")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
  print(chunk.text)
  fullResponse += chunk.text
}

ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{ "contents":[
            {"role": "user",
              "parts":[{"text": "Write a story about a magic backpack."}]
            }
          ]
        }' > response.json

ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API

การตอบกลับรูปแบบ JSON

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

คุณใช้ฟีเจอร์เอาต์พุตนี้ได้โดยตั้งค่าตัวเลือกการกำหนดค่า response_mime_type เป็น application/json และรวมข้อกำหนดรูปแบบ JSON ไว้ในเนื้อหาของคำขอ ตัวอย่างโค้ดต่อไปนี้แสดงวิธีขอการตอบกลับ JSON สำหรับพรอมต์

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

การฝัง

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

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