กำลังคิด

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

คู่มือนี้จะแสดงวิธีใช้ความสามารถในการคิดของ Gemini โดยใช้ Gemini API

การสร้างเนื้อหาด้วยการคิด

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

Python

from google import genai

client = genai.Client()
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=prompt
)

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";

  const response = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: prompt,
  });

  console.log(response.text);
}

main();

Go

package main

import (
  "context"
  "fmt"
  "log"
  "os"
  "google.golang.org/genai"
)

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

  prompt := "Explain the concept of Occam's Razor and provide a simple, everyday example."
  model := "gemini-3.8-flash"

  resp, _ := client.Models.GenerateContent(ctx, model, genai.Text(prompt), nil)

  fmt.Println(resp.Text())
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
 -H "x-goog-api-key: $GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -X POST \
 -d '{
   "contents": [
     {
       "parts": [
         {
           "text": "Explain the concept of Occam'\''s Razor and provide a simple, everyday example."
         }
       ]
     }
   ]
 }'
 ```

ข้อมูลสรุปการคิด

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

คุณเปิดใช้ข้อมูลสรุปการคิดได้โดยตั้งค่า includeThoughts เป็น true ในการกำหนดค่าคำขอ จากนั้นคุณจะเข้าถึงข้อมูลสรุปได้โดยการวนซ้ำ parts ของพารามิเตอร์ response และตรวจสอบบูลีน thought

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

Python

from google import genai
from google.genai import types

client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
  model="gemini-3.8-flash",
  contents=prompt,
  config=types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(
      include_thoughts=True
    )
  )
)

for part in response.candidates[0].content.parts:
  if not part.text:
    continue
  if part.thought:
    print("Thought summary:")
    print(part.text)
    print()
  else:
    print("Answer:")
    print(part.text)
    print()

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: "What is the sum of the first 50 prime numbers?",
    config: {
      thinkingConfig: {
        includeThoughts: true,
      },
    },
  });

  for (const part of response.candidates[0].content.parts) {
    if (!part.text) {
      continue;
    }
    else if (part.thought) {
      console.log("Thoughts summary:");
      console.log(part.text);
    }
    else {
      console.log("Answer:");
      console.log(part.text);
    }
  }
}

main();

Go

package main

import (
  "context"
  "fmt"
  "google.golang.org/genai"
  "os"
)

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

  contents := genai.Text("What is the sum of the first 50 prime numbers?")
  model := "gemini-3.8-flash"
  resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      IncludeThoughts: true,
    },
  })

  for _, part := range resp.Candidates[0].Content.Parts {
    if part.Text != "" {
      if part.Thought {
        fmt.Println("Thoughts Summary:")
        fmt.Println(part.Text)
      } else {
        fmt.Println("Answer:")
        fmt.Println(part.Text)
      }
    }
  }
}

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

Python

from google import genai
from google.genai import types

client = genai.Client()

prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""

thoughts = ""
answer = ""

for chunk in client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=prompt,
    config=types.GenerateContentConfig(
      thinking_config=types.ThinkingConfig(
        include_thoughts=True
      )
    )
):
  for part in chunk.candidates[0].content.parts:
    if not part.text:
      continue
    elif part.thought:
      if not thoughts:
        print("Thoughts summary:")
      print(part.text)
      thoughts += part.text
    else:
      if not answer:
        print("Answer:")
      print(part.text)
      answer += part.text

JavaScript

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

const ai = new GoogleGenAI({});

const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. The person who lives in the red house owns a cat.
Bob does not live in the green house. Carol owns a dog. The green house is to
the left of the red house. Alice does not own a cat. Who lives in each house,
and what pet do they own?`;

let thoughts = "";
let answer = "";

async function main() {
  const response = await ai.models.generateContentStream({
    model: "gemini-3.8-flash",
    contents: prompt,
    config: {
      thinkingConfig: {
        includeThoughts: true,
      },
    },
  });

  for await (const chunk of response) {
    for (const part of chunk.candidates[0].content.parts) {
      if (!part.text) {
        continue;
      } else if (part.thought) {
        if (!thoughts) {
          console.log("Thoughts summary:");
        }
        console.log(part.text);
        thoughts = thoughts + part.text;
      } else {
        if (!answer) {
          console.log("Answer:");
        }
        console.log(part.text);
        answer = answer + part.text;
      }
    }
  }
}

await main();

Go

package main

import (
  "context"
  "fmt"
  "log"
  "os"
  "google.golang.org/genai"
)

const prompt = `
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
`

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

  contents := genai.Text(prompt)
  model := "gemini-3.8-flash"

  resp := client.Models.GenerateContentStream(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      IncludeThoughts: true,
    },
  })

  for chunk := range resp {
    for _, part := range chunk.Candidates[0].Content.Parts {
      if len(part.Text) == 0 {
        continue
      }

      if part.Thought {
        fmt.Printf("Thought: %s\n", part.Text)
      } else {
        fmt.Printf("Answer: %s\n", part.Text)
      }
    }
  }
}

การควบคุมการคิด

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

ระดับการคิด (Gemini 4 และ Gemini 3)

พารามิเตอร์ thinkingLevel ซึ่งจำเป็นสำหรับ Gemini 4 และแนะนำสำหรับโมเดล Gemini 3 ช่วยให้คุณควบคุมลักษณะการทำงานของการให้เหตุผลได้ Gemini 4 (gemini-4-argon) รองรับ low, medium (ค่าเริ่มต้น) และ high

ตารางต่อไปนี้แสดงรายละเอียดการตั้งค่า thinkingLevel สำหรับโมเดลแต่ละประเภท

ระดับการคิด Gemini 3.8 Flash Gemini 3.6 Flash Gemini 4 Argon Gemini 3.5 และ 3.1 Flash-Lite Gemini 3.1 Flash-Lite Image Gemini 3 Flash Gemini Robotics ER 2 คำอธิบาย
minimal ไม่รองรับ (ข้อผิดพลาด) รองรับ ไม่รองรับ (ข้อผิดพลาด) รองรับ (ค่าเริ่มต้น) รองรับ (ค่าเริ่มต้น) รองรับ รองรับ ตรงกับการตั้งค่า "ไม่คิด" สำหรับคำค้นหาส่วนใหญ่ โปรดทราบว่า minimal ไม่รับประกันว่าจะปิดการคิด โมเดลอาจคิดน้อยมากสำหรับงานที่ซับซ้อน
low รองรับ รองรับ รองรับ รองรับ ไม่รองรับ รองรับ รองรับ ลดเวลาในการตอบสนองและค่าใช้จ่ายให้เหลือน้อยที่สุด
medium รองรับ (ค่าเริ่มต้น) รองรับ (ค่าเริ่มต้น) รองรับ (ค่าเริ่มต้น) รองรับ ไม่รองรับ รองรับ รองรับ การคิดที่สมดุลสำหรับงานส่วนใหญ่
high รองรับ (ไดนามิก) รองรับ (ไดนามิก) รองรับ (ไดนามิก) รองรับ (ไดนามิก) รองรับ (ไดนามิก) รองรับ (ค่าเริ่มต้น, ไดนามิก) รองรับ (ค่าเริ่มต้น, ไดนามิก) เพิ่มความลึกซึ้งของการให้เหตุผลให้สูงสุด โมเดลอาจใช้เวลานานขึ้นอย่างมากในการ แสดงโทเค็นเอาต์พุตแรก (ที่ไม่ใช่การคิด) แต่เอาต์พุตจะได้รับการพิจารณาอย่างรอบคอบมากขึ้น

ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่าระดับการคิด

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Provide a list of 3 famous physicists and their key contributions",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="low")
    ),
)

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: "Provide a list of 3 famous physicists and their key contributions",
    config: {
      thinkingConfig: {
        thinkingLevel: ThinkingLevel.LOW,
      },
    },
  });

  console.log(response.text);
}

main();

Go

package main

import (
  "context"
  "fmt"
  "google.golang.org/genai"
  "os"
)

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

  thinkingLevelVal := "low"

  contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
  model := "gemini-3.8-flash"
  resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      ThinkingLevel: &thinkingLevelVal,
    },
  })

fmt.Println(resp.Text())
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
  "contents": [
    {
      "parts": [
        {
          "text": "Provide a list of 3 famous physicists and their key contributions"
        }
      ]
    }
  ],
  "generationConfig": {
    "thinkingConfig": {
          "thinkingLevel": "low"
    }
  }
}'

คุณปิดใช้การคิดสำหรับ Gemini 4 Argon ไม่ได้ นอกจากนี้ Gemini 3 Flash และ Flash-Lite ยังไม่รองรับการปิดการคิดอย่างสมบูรณ์ หากคุณไม่ได้ระบุระดับการคิด Gemini จะใช้ระดับการคิด เริ่มต้นของโมเดล (เช่น "medium" สำหรับ Gemini 4 Argon, Gemini 3.8 Flash และ Gemini 3.6 Flash)

โมเดล Gemini 2.5 Series ไม่รองรับ thinkingLevel ให้ใช้ thinkingBudget แทน

ขีดจำกัดของโทเค็นและ max_output_tokens

พารามิเตอร์การสร้าง max_output_tokens จะกำหนดจำนวนโทเค็นสูงสุดที่คำตอบสร้างได้ ซึ่งรวมถึงโทเค็นการคิด

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

หากโมเดลถึงขีดจำกัดนี้ขณะให้เหตุผล โมเดลจะหยุดสร้างโดยมี finish_reason: MAX_TOKENS และแสดงเอาต์พุตที่ถูกตัดทอนหรือว่างเปล่า (พร้อมทั้งเรียกเก็บเงินสำหรับโทเค็นการคิดที่สร้างขึ้น) หากต้องการลดค่าใช้จ่ายหรือเวลาในการตอบสนองโดยไม่ตัดทอนคำตอบ ให้ลด thinking_level (low หรือ medium) แทนการตั้งค่า max_output_tokens ขนาดเล็ก

สำหรับโมเดล Gemini 4 (gemini-4-argon) โปรดคำนึงถึงขีดจำกัดบริบทและเอาต์พุตต่อไปนี้

  • หน้าต่างบริบทขนาด 1 ล้านโทเค็นที่ใช้ร่วมกัน: โทเค็นอินพุต การคิด และเอาต์พุตใช้หน้าต่างบริบทขนาด 1 ล้านโทเค็น (1,048,576 โทเค็น) เดียวกัน หากโทเค็นอินพุตบวก max_output_tokens เกิน 1,048,576 โทเค็น API จะจำกัดเอาต์พุตโดยอัตโนมัติให้เหลือพื้นที่ในหน้าต่างบริบท (1,048,576 ลบด้วยโทเค็นอินพุต)
  • ขีดจำกัดเอาต์พุตต่อคำขอ (การสตรีม 64,000 โทเค็น / ไม่สตรีม 32,000 โทเค็น) และการถอดรหัสแบบยาว (สูงสุด 1 ล้านโทเค็น): คำขอสตรีมรายการเดียว (streamGenerateContent) จะแสดงโทเค็นสูงสุด 65,536 โทเค็น และคำขอที่ไม่สตรีมรายการเดียว (generateContent) จะแสดงโทเค็นสูงสุด 32,768 โทเค็น หากต้องการสร้างโทเค็นเกินขีดจำกัดต่อคำขอ (สูงสุด 1,048,576 โทเค็นลบด้วยอินพุต) ให้ตั้งค่า max_output_tokens เหนือขีดจำกัด SDK GenAI ล่าสุดของ Google จะดำเนินการต่อโดยอัตโนมัติตามค่าเริ่มต้น (automatic_continuation=True) หรือคุณสามารถเรียกใช้ลูปไคลเอ็นต์โดยใช้ continuation_token ที่แสดงเมื่อการดำเนินการหยุดโดยมี finish_reason: "CONTINUATION" ดูตัวอย่างโค้ดได้ที่การถอดรหัสแบบยาว

งบประมาณการคิด

พารามิเตอร์ thinkingBudget ซึ่งเปิดตัวพร้อมกับ Gemini 2.5 Series จะแนะนำโมเดลเกี่ยวกับจำนวนโทเค็นการคิดที่เฉพาะเจาะจงที่จะใช้ในการให้เหตุผล

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

โมเดล การตั้งค่าเริ่มต้น
(ไม่ได้ตั้งงบประมาณการคิด)
ช่วง ปิดใช้การคิด เปิดใช้การคิดแบบไดนามิก
2.5 Pro การคิดแบบไดนามิก 128 ถึง 32768 ใช้ไม่ได้: ปิดใช้การคิดไม่ได้ thinkingBudget = -1 (ค่าเริ่มต้น)
2.5 Flash การคิดแบบไดนามิก 0 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1 (ค่าเริ่มต้น)
2.5 Flash Preview การคิดแบบไดนามิก 0 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1 (ค่าเริ่มต้น)
2.5 Flash Lite โมเดลไม่คิด 512 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1
2.5 Flash Lite Preview โมเดลไม่คิด 512 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1
Robotics-ER 1.6 Preview การคิดแบบไดนามิก 0 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1 (ค่าเริ่มต้น)
2.5 Flash Live Native Audio Preview (09-2025) การคิดแบบไดนามิก 0 ถึง 24576 thinkingBudget = 0 thinkingBudget = -1 (ค่าเริ่มต้น)

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Provide a list of 3 famous physicists and their key contributions",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_budget=1024)
        # Turn off thinking:
        # thinking_config=types.ThinkingConfig(thinking_budget=0)
        # Turn on dynamic thinking:
        # thinking_config=types.ThinkingConfig(thinking_budget=-1)
    ),
)

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-2.5-flash",
    contents: "Provide a list of 3 famous physicists and their key contributions",
    config: {
      thinkingConfig: {
        thinkingBudget: 1024,
        // Turn off thinking:
        // thinkingBudget: 0
        // Turn on dynamic thinking:
        // thinkingBudget: -1
      },
    },
  });

  console.log(response.text);
}

main();

Go

package main

import (
  "context"
  "fmt"
  "google.golang.org/genai"
  "os"
)

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

  thinkingBudgetVal := int32(1024)

  contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
  model := "gemini-2.5-flash"
  resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      ThinkingBudget: &thinkingBudgetVal,
      // Turn off thinking:
      // ThinkingBudget: int32(0),
      // Turn on dynamic thinking:
      // ThinkingBudget: int32(-1),
    },
  })

fmt.Println(resp.Text())
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
  "contents": [
    {
      "parts": [
        {
          "text": "Provide a list of 3 famous physicists and their key contributions"
        }
      ]
    }
  ],
  "generationConfig": {
    "thinkingConfig": {
          "thinkingBudget": 1024
    }
  }
}'

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

ลายเซ็นการคิด

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

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

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

ข้อจำกัดในการใช้งานอื่นๆ ที่ควรพิจารณาเกี่ยวกับการเรียกใช้ฟังก์ชันมีดังนี้

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

ราคา

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

Python

# ...
print("Thoughts tokens:", response.usage_metadata.thoughts_token_count)
print("Output tokens:", response.usage_metadata.candidates_token_count)

JavaScript

// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);

Go

// ...
fmt.Println("Thoughts tokens:", response.UsageMetadata.ThoughtsTokenCount)
fmt.Println("Output tokens:", response.UsageMetadata.CandidatesTokenCount)

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับโทเค็นได้ในคู่มือการนับโทเค็น

แนวทางปฏิบัติแนะนำ

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

การแก้ไขข้อบกพร่องและการควบคุม

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

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

ความซับซ้อนของงาน

  • งานง่าย (อาจปิดการคิดได้): สำหรับคำขอตรงไปตรงมาที่ไม่จำเป็นต้องมีการให้เหตุผลที่ซับซ้อน เช่น การดึงข้อมูลข้อเท็จจริงหรือการจัดประเภท ไม่จำเป็นต้องมีการคิด ตัวอย่างเช่น
    • "DeepMind ก่อตั้งขึ้นที่ไหน"
    • "อีเมลนี้ขอให้มีการประชุมหรือเพียงแค่ให้ข้อมูล"
  • งานปานกลาง (ค่าเริ่มต้น/มีการคิดบ้าง): คำขอทั่วไปหลายรายการได้รับประโยชน์จากการประมวลผลแบบทีละขั้นตอนหรือความเข้าใจที่ลึกซึ้งยิ่งขึ้น Gemini สามารถใช้ความสามารถในการคิดได้อย่างยืดหยุ่นสำหรับงานต่างๆ เช่น
    • เปรียบเทียบการสังเคราะห์แสงกับการเติบโต
    • เปรียบเทียบรถยนต์ไฟฟ้ากับรถยนต์ไฮบริด
  • งานยาก (ความสามารถในการคิดสูงสุด): สำหรับความท้าทายที่ซับซ้อนอย่างแท้จริง เช่น การแก้โจทย์คณิตศาสตร์ที่ซับซ้อนหรืองานเขียนโค้ด เราขอแนะนำให้ตั้งงบประมาณการคิดไว้สูง งานประเภทนี้กำหนดให้โมเดลต้องใช้ความสามารถในการให้เหตุผลและการวางแผนอย่างเต็มที่ ซึ่งมักเกี่ยวข้องกับขั้นตอนภายในหลายขั้นตอนก่อนที่จะให้คำตอบ ตัวอย่างเช่น
    • แก้ปัญหาข้อที่ 1 ใน AIME 2025: หาผลรวมของฐานจำนวนเต็มทั้งหมด b > 9 สำหรับ ซึ่ง 17b เป็นตัวหารของ 97b
    • เขียนโค้ด Python สำหรับเว็บแอปพลิเคชันที่แสดงข้อมูลตลาดหุ้นแบบเรียลไทม์ ซึ่งรวมถึงการตรวจสอบสิทธิ์ของผู้ใช้ ทำให้มีประสิทธิภาพมากที่สุด

โมเดล เครื่องมือ และความสามารถที่รองรับ

ฟีเจอร์การคิดรองรับในโมเดล Gemini 4, 3 และ 2.5 Series ทั้งหมด คุณดูความสามารถทั้งหมดของโมเดลได้ในหน้า ภาพรวมของโมเดล

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

คุณลองดูตัวอย่างการใช้เครื่องมือกับโมเดลการคิดได้ใน [Thinking Cookbook][Colab]

ต้องทำอะไรต่อ

[Colab]: https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_started_thinking.ipynb