تستخدم نماذج سلسلة Gemini 2.5 "عملية تفكير" داخلية تحسّن بشكل كبير قدراتها على الاستدلال والتخطيط المتعدد الخطوات، ما يجعلها فعالة للغاية في المهام المعقدة، مثل الترميز والرياضيات المتقدمة وتحليل البيانات.
يوضّح لك هذا الدليل كيفية الاستفادة من إمكانات التفكير في Gemini باستخدام Gemini API.
قبل البدء
تأكَّد من استخدام طراز متوافق من السلسلة 2.5 لإجراء عملية التفكير. ننصحك باستكشاف هذه النماذج في AI Studio قبل استخدام واجهة برمجة التطبيقات:
- تجربة Gemini 2.5 Flash في AI Studio
- تجربة نموذج Gemini 2.5 Pro في AI Studio
- تجربة نموذج Gemini 2.5 Flash-Lite في AI Studio
إنشاء محتوى مع التفكير
إنّ بدء طلب باستخدام نموذج تفكير يشبه أي طلب آخر لإنشاء المحتوى. يكمن الاختلاف الرئيسي في تحديد أحد النماذج التي تتضمّن ميزة التفكير في الحقل 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." } ] } ] }' ```
التفكير في الميزانيات
توجّه المَعلمة thinkingBudget
النموذج بشأن عدد الرموز المميزة التي يجب استخدامها عند إنشاء رد. يسمح عدد الرموز المميزة الأكبر بشكل عام بتقديم استدلال أكثر تفصيلاً، ما قد يكون مفيدًا في التعامل مع مهام أكثر تعقيدًا. إذا كانت الأولوية لتقليل وقت الاستجابة، استخدِم ميزانية أقل أو أوقِف التفكير من خلال ضبط thinkingBudget
على 0. يؤدي ضبط قيمة thinkingBudget
على -1 إلى تفعيل التفكير الديناميكي، ما يعني أنّ النموذج سيعدّل الميزانية استنادًا إلى مدى تعقيد الطلب.
thinkingBudget
متوافق فقط مع Gemini 2.5 Flash و2.5 Pro و2.5 Flash-Lite. استنادًا إلى الطلب، قد يتجاوز النموذج أو يقل عن ميزانية الرموز المميزة.
في ما يلي تفاصيل إعدادات thinkingBudget
لكل نوع من أنواع النماذج.
الطراز | الإعداد التلقائي (لم يتم ضبط ميزانية التفكير) | النطاق | إيقاف التفكير | تفعيل ميزة "التفكير الديناميكي" |
---|---|---|---|---|
2.5 Pro | التفكير الديناميكي: يقرّر النموذج متى وكم يجب أن يفكر | من 128 إلى 32768 | لا ينطبق: لا يمكن إيقاف التفكير | thinkingBudget = -1 |
2.5 Flash | التفكير الديناميكي: يقرّر النموذج متى وكم يجب أن يفكر | من 0 إلى 24576 | thinkingBudget = 0 | thinkingBudget = -1 |
2.5 Flash Lite | النموذج لا يفكّر | من 512 إلى 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 # Thinking off: # "thinkingBudget": 0 # Turn on dynamic thinking: # "thinkingBudget": -1 } } }'
ملخّصات الأفكار
ملخّصات الأفكار هي نسخ مركّبة من الأفكار الأولية التي يطرحها النموذج، وتقدّم إحصاءات حول عملية الاستدلال الداخلية التي يتّبعها النموذج. يُرجى العِلم أنّ ميزانيات التفكير تنطبق على الأفكار الأولية للنموذج وليس على ملخّصات الأفكار.
يمكنك تفعيل ملخّصات الأفكار من خلال ضبط includeThoughts
على true
في إعدادات الطلب. يمكنك بعد ذلك الوصول إلى الملخّص من خلال تكرار المعلَمة response
، والتحقّق من القيمة المنطقية thought
.parts
في ما يلي مثال يوضّح كيفية تفعيل ملخّصات الأفكار واستردادها بدون بث، ما يؤدي إلى عرض ملخّص نهائي واحد للأفكار مع الردّ:
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 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))
تنشئ نماذج التفكير أفكارًا كاملة لتحسين جودة الرد النهائي، ثم تعرض ملخّصات لتقديم نظرة ثاقبة حول عملية التفكير. لذلك، يستند التسعير إلى الرموز المميزة الكاملة التي يحتاج إليها النموذج لإنشاء ملخّص، على الرغم من أنّ الملخّص هو الناتج الوحيد من واجهة برمجة التطبيقات.
يمكنك الاطّلاع على مزيد من المعلومات حول الرموز المميزة في دليل احتساب الرموز المميزة.
النماذج المتوافقة
تتوفّر ميزات التفكير على جميع طُرز السلسلة 2.5. يمكنك العثور على جميع إمكانات النموذج في صفحة النظرة العامة على النموذج.
أفضل الممارسات
يتضمّن هذا القسم بعض الإرشادات لاستخدام نماذج التفكير بكفاءة. كما هو الحال دائمًا، سيساعدك اتّباع إرشادات كتابة الطلبات وأفضل الممارسات في الحصول على أفضل النتائج.
تصحيح الأخطاء والتوجيه
مراجعة عملية الاستدلال: عندما لا تحصل على الردّ المتوقّع من نماذج التفكير، قد يساعدك تحليل ملخّصات أفكار Gemini بعناية. يمكنك الاطّلاع على كيفية تقسيم المهمة والوصول إلى الاستنتاج، واستخدام هذه المعلومات لتصحيح النتائج.
تقديم إرشادات في التفكير: إذا كنت تأمل في الحصول على ناتج طويل بشكل خاص، يمكنك تقديم إرشادات في طلبك للحدّ من مقدار التفكير الذي يستخدمه النموذج. يتيح لك ذلك حجز المزيد من الرموز المميزة في الردّ.
تعقيد المهمة
- المهام السهلة (قد تكون ميزة "أفكر" غير مفعّلة): لا تتطلّب الطلبات المباشرة التي لا تحتاج إلى استنتاج معقّد، مثل استرجاع الحقائق أو التصنيف، تفعيل ميزة "أفكر". تشمل الأمثلة ما يلي:
- "أين تأسّست شركة DeepMind؟"
- "هل تطلب هذه الرسالة الإلكترونية عقد اجتماع أم أنّها تقدّم معلومات فقط؟"
- المهام المتوسطة (الإعداد التلقائي/بعض التفكير): تستفيد العديد من الطلبات الشائعة من درجة من المعالجة خطوة بخطوة أو الفهم الأعمق. يمكن لـ Gemini استخدام إمكانات التفكير بمرونة في مهام مثل:
- قدِّم تشبيهًا بين عملية التمثيل الضوئي ومرحلة النمو.
- تحديد أوجه الاختلاف والتشابه بين السيارات الكهربائية والسيارات الهجينة
- المهام الصعبة (الحد الأقصى لقدرة التفكير): بالنسبة إلى التحديات المعقّدة جدًا، مثل حلّ المسائل الرياضية المعقّدة أو مهام البرمجة، ننصحك بتحديد ميزانية تفكير عالية. تتطلّب هذه الأنواع من المهام أن يستفيد النموذج من جميع قدراته في التفكير والتخطيط، وغالبًا ما تتضمّن العديد من الخطوات الداخلية قبل تقديم إجابة. تشمل الأمثلة ما يلي:
- حلّ المسألة 1 في مسابقة AIME لعام 2025: أوجد مجموع جميع الأعداد الصحيحة b > 9 التي يكون فيها 17b قاسمًا للعدد 97b.
- اكتب رمز Python لتطبيق ويب يعرض بيانات سوق الأسهم في الوقت الفعلي، بما في ذلك مصادقة المستخدم. حاوِل أن تكون هذه العملية فعّالة قدر الإمكان.
التفكير باستخدام الأدوات والإمكانات
تعمل النماذج المفكّرة مع جميع أدوات Gemini وقدراته. يتيح ذلك للنماذج التفاعل مع الأنظمة الخارجية أو تنفيذ الرموز أو الوصول إلى المعلومات في الوقت الفعلي، ودمج النتائج في عملية الاستنتاج والرد النهائي.
تتيح أداة البحث للنموذج إرسال طلبات بحث إلى "بحث Google" للعثور على معلومات محدّثة أو معلومات تتجاوز بيانات التدريب الخاصة به. ويكون ذلك مفيدًا للأسئلة حول الأحداث الأخيرة أو المواضيع المحدّدة جدًا.
تتيح أداة تنفيذ الرموز البرمجية للنموذج إنشاء رموز Python البرمجية وتشغيلها لإجراء العمليات الحسابية أو معالجة البيانات أو حل المشاكل التي من الأفضل التعامل معها باستخدام الخوارزميات. يتلقّى النموذج ناتج الرمز ويمكنه استخدامه في ردّه.
باستخدام النتائج المنظَّمة، يمكنك فرض قيود على Gemini لكي يردّ بتنسيق JSON. ويفيد ذلك بشكل خاص في دمج نتائج النموذج في التطبيقات.
تتيح ميزة استدعاء الدوال ربط نموذج التفكير بالأدوات وواجهات برمجة التطبيقات الخارجية، ما يتيح له تحديد الوقت المناسب لاستدعاء الدالة الصحيحة وتحديد المَعلمات التي يجب تقديمها.
توفّر سياق عنوان URL للنموذج عناوين URL كسياق إضافي لطلبك. يمكن للنموذج بعد ذلك استرداد المحتوى من عناوين URL واستخدامه لتقديم معلومات وتشكيل الرد.
يمكنك تجربة أمثلة على استخدام الأدوات مع نماذج التفكير في كتاب وصفات التفكير.
ما هي الخطوات التالية؟
للاطّلاع على المزيد من الأمثلة التفصيلية، مثل:
- استخدام الأدوات مع التفكير
- البث مع التفكير
- تعديل ميزانية التفكير للحصول على نتائج مختلفة
والمزيد، جرِّب كتاب الطبخ التفكيري.
تتوفّر الآن معلومات حول التغطية في دليل التوافق مع OpenAI.
لمزيد من المعلومات حول Gemini 2.5 Pro وGemini Flash 2.5 وGemini 2.5 Flash-Lite، يُرجى الانتقال إلى صفحة النموذج.