تستخدم سلسلة نماذج Gemini 3 و2.5 "عملية تفكير" داخلية تحسّن بشكل كبير قدراتها على الاستدلال والتخطيط المتعدّد الخطوات، ما يجعلها فعّالة للغاية في المهام المعقّدة، مثل الترميز والرياضيات المتقدّمة وتحليل البيانات.
يوضّح هذا الدليل كيفية الاستفادة من إمكانات التفكير في 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-2.5-pro",
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-2.5-pro",
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-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, genai.Text(prompt), nil)
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro: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 في إعدادات الطلب. يمكنك بعد ذلك الوصول إلى الملخّص من خلال تكرار المعلَمة responseparts والتحقّق من القيمة المنطقية 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-2.5-pro",
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-2.5-pro",
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-2.5-pro"
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-2.5-pro",
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-2.5-pro",
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-2.5-pro"
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 3 Pro)
تتيح لك المَعلمة thinkingLevel، التي يُنصح باستخدامها مع نماذج Gemini 3 والإصدارات الأحدث، التحكّم في سلوك الاستدلال.
يمكنك ضبط مستوى التفكير على "low" أو "high".
إذا لم تحدّد مستوى التفكير، سيستخدم Gemini مستوى التفكير الديناميكي التلقائي للنموذج، "high"، في "النسخة الحصرية من Gemini 3 Pro".
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
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 } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
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-pro-preview"
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-pro-preview: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 3 Pro.
لا تتوافق سلسلة نماذج Gemini 2.5 مع thinkingLevel، لذا يُرجى استخدام thinkingBudget بدلاً من ذلك.
التفكير في الميزانيات
توجّه المَعلمة thinkingBudget، التي تم طرحها مع سلسلة Gemini 2.5، النموذج بشأن العدد المحدّد من الرموز المميزة الخاصة بالتفكير التي يجب استخدامها للاستدلال.
في ما يلي تفاصيل إعدادات thinkingBudget لكل نوع من أنواع النماذج.
يمكنك إيقاف التفكير من خلال ضبط قيمة thinkingBudget على 0.
يؤدي ضبط قيمة thinkingBudget على -1 إلى تفعيل الاستدلال الديناميكي، ما يعني أنّ النموذج سيعدّل الميزانية استنادًا إلى مدى تعقيد الطلب.
| الطراز | الإعداد التلقائي (لم يتم ضبط ميزانية التفكير) |
النطاق | إيقاف التفكير | تفعيل ميزة "التفكير الديناميكي" |
|---|---|---|---|---|
| 2.5 Pro | التفكير الديناميكي: يقرّر النموذج متى وكيف يفكر | من 128 إلى 32768 |
لا ينطبق: لا يمكن إيقاف التفكير | thinkingBudget = -1 |
| 2.5 Flash | التفكير الديناميكي: يقرّر النموذج متى وكيف يفكر | من 0 إلى 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| معاينة الإصدار 2.5 Flash | التفكير الديناميكي: يقرّر النموذج متى وكيف يفكر | من 0 إلى 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| 2.5 Flash Lite | النموذج لا يفكّر | من 512 إلى 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| معاينة 2.5 Flash Lite | النموذج لا يفكّر | من 512 إلى 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| Robotics-ER 1.5 Preview | التفكير الديناميكي: يقرّر النموذج متى وكيف يفكر | من 0 إلى 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| معاينة الصوت الأصلي المباشر في 2.5 Flash (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-pro",
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-pro",
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-pro"
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-pro: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 هو واجهة برمجة تطبيقات لا تحتفظ بأي حالة، لذا يتعامل النموذج مع كل طلب من طلبات واجهة برمجة التطبيقات بشكل مستقل، ولا يمكنه الوصول إلى سياق الأفكار من الأدوار السابقة في التفاعلات المتعددة الأدوار.
لإتاحة الحفاظ على سياق الأفكار خلال المحادثات المتعددة الأدوار، يعرض Gemini توقيعات الأفكار، وهي تمثيلات مشفّرة لعملية معالجة الأفكار الداخلية في النموذج.
- تعرض نماذج Gemini 2.5 توقيعات الأفكار عندما تكون ميزة التفكير مفعّلة ويتضمّن الطلب استدعاء الدوال، وتحديدًا تعريفات الدوال.
- قد تعرض نماذج Gemini 3 توقيعات فكرية لجميع أنواع الأجزاء. ننصحك دائمًا بإعادة جميع التواقيع كما تم استلامها، ولكن هذا الإجراء إلزامي لتواقيع استدعاء الدوال. يمكنك الاطّلاع على صفحة توقيعات الأفكار لمعرفة المزيد.
تتولّى حزمة تطوير البرامج (SDK) الخاصة بالذكاء الاصطناعي التوليدي من Google تلقائيًا عملية عرض توقيعات الأفكار نيابةً عنك. عليك إدارة توقيعات الأفكار يدويًا فقط في حال تعديل سجلّ المحادثات أو استخدام REST API.
تشمل القيود الأخرى على الاستخدام التي يجب مراعاتها عند استخدام ميزة "استدعاء الدوال" ما يلي:
- يتم عرض التواقيع من النموذج ضمن أجزاء أخرى في الردّ، مثل استدعاء الدوال أو الأجزاء النصية. أعِد الردّ بالكامل مع إعادة جميع الأجزاء إلى النموذج في الجولات اللاحقة.
- لا تدمج الأجزاء التي تتضمّن توقيعات معًا.
- لا تدمج جزءًا واحدًا مع توقيع مع جزء آخر بدون توقيع.
الأسعار
عند تفعيل ميزة "التفكير"، يكون سعر الردّ هو مجموع الرموز المميزة للناتج والرموز المميزة للتفكير. يمكنك الحصول على إجمالي عدد الرموز المميزة التي تم إنشاؤها من حقل 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
// ...
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println("Thoughts tokens:", string(usageMetadata.thoughts_token_count))
fmt.Println("Output tokens:", string(usageMetadata.candidates_token_count))
تنشئ نماذج التفكير أفكارًا كاملة لتحسين جودة الرد النهائي، ثم تعرض ملخّصات لتقديم نظرة ثاقبة حول عملية التفكير. لذلك، يستند التسعير إلى الرموز المميزة الكاملة التي يحتاج إليها النموذج لإنشاء ملخّص، على الرغم من أنّ الملخّص هو الناتج الوحيد من واجهة برمجة التطبيقات.
يمكنك الاطّلاع على مزيد من المعلومات حول الرموز المميزة في دليل احتساب الرموز المميزة.
أفضل الممارسات
يتضمّن هذا القسم بعض الإرشادات لاستخدام نماذج التفكير بكفاءة. كما هو الحال دائمًا، سيساعدك اتّباع إرشادات كتابة الطلبات وأفضل الممارسات في الحصول على أفضل النتائج.
تصحيح الأخطاء والتوجيه
مراجعة عملية الاستدلال: عندما لا تحصل على الردّ المتوقّع من نماذج التفكير، قد يكون من المفيد تحليل ملخّصات أفكار Gemini بعناية. يمكنك الاطّلاع على كيفية تقسيم المهمة والوصول إلى الاستنتاج، واستخدام هذه المعلومات لتصحيح النتائج.
تقديم إرشادات بشأن طريقة التفكير: إذا كنت تأمل في الحصول على ناتج طويل بشكل خاص، يمكنك تقديم إرشادات في طلبك للحدّ من مقدار التفكير الذي يستخدمه النموذج. يتيح لك ذلك حجز المزيد من نواتج الرموز المميزة لردّك.
مدى تعقيد المهمة
- المهام البسيطة (قد تكون ميزة "أفكر" غير مفعّلة): لا تتطلّب الطلبات المباشرة التي لا تحتاج إلى استنتاج معقّد، مثل استرجاع الحقائق أو التصنيف، تفعيل ميزة "أفكر". تشمل الأمثلة ما يلي:
- "أين تأسّست شركة DeepMind؟"
- "هل تطلب هذه الرسالة الإلكترونية عقد اجتماع أم أنّها تقدّم معلومات فقط؟"
- المهام المتوسطة (الإعدادات التلقائية/بعض التفكير): تستفيد العديد من الطلبات الشائعة من درجة من المعالجة خطوة بخطوة أو الفهم الأعمق. يمكن لـ Gemini استخدام ميزة "التفكير" بمرونة لتنفيذ مهام مثل:
- قدِّم تشبيهًا بين عملية التمثيل الضوئي والنمو.
- تحديد أوجه الاختلاف والتشابه بين السيارات الكهربائية والسيارات الهجينة
- المهام الصعبة (الحد الأقصى لقدرة التفكير): بالنسبة إلى التحديات المعقدة جدًا، مثل حلّ مسائل رياضية معقدة أو مهام الترميز، ننصحك بتحديد ميزانية تفكير عالية. تتطلّب هذه الأنواع من المهام أن يستفيد النموذج من جميع إمكاناته في التفكير والتخطيط، وغالبًا ما تتضمّن العديد من الخطوات الداخلية قبل تقديم إجابة. تشمل الأمثلة ما يلي:
- حلّ المسألة 1 في مسابقة AIME لعام 2025: أوجد مجموع جميع الأعداد الصحيحة b > 9 التي يكون فيها 17b قاسمًا للعدد 97b.
- اكتب رمز Python لتطبيق ويب يعرض بيانات سوق الأسهم في الوقت الفعلي، بما في ذلك مصادقة المستخدم. حاوِل أن تكون هذه العملية فعّالة قدر الإمكان.
الطُرز والأدوات والإمكانات المتوافقة
تتوفّر ميزات التفكير على جميع طُرز السلسلة 3 و2.5. يمكنك العثور على جميع إمكانات النموذج في صفحة نظرة عامة على النموذج.
تعمل النماذج المفكِّرة مع جميع أدوات Gemini وإمكاناته. يتيح ذلك للنماذج التفاعل مع الأنظمة الخارجية أو تنفيذ الرموز أو الوصول إلى المعلومات في الوقت الفعلي، ودمج النتائج في عملية الاستدلال والرد النهائي.
يمكنك تجربة أمثلة على استخدام الأدوات مع النماذج المفكِّرة في كتاب الطبخ الخاص بالنماذج المفكِّرة.
ما هي الخطوات التالية؟
- تتوفّر معلومات حول التغطية في دليل التوافق مع OpenAI.