تفكير Gemini

تستخدم نماذج سلسلة Gemini 2.5 "عملية تفكير" داخلية تحسّن بشكل كبير قدراتها على الاستدلال والتخطيط المتعدّد الخطوات، ما يجعلها فعّالة للغاية في المهام المعقّدة، مثل الترميز والرياضيات المتقدّمة وتحليل البيانات.

يوضّح لك هذا الدليل كيفية الاستفادة من إمكانات التفكير في Gemini باستخدام Gemini API.

قبل البدء

تأكَّد من استخدام طراز متوافق من السلسلة 2.5 لإجراء عملية التفكير. قد يكون من المفيد استكشاف هذه النماذج في 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();

انتقال

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();

انتقال

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();

انتقال

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();

انتقال

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}`);

انتقال

// ...
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، يُرجى الانتقال إلى صفحة النموذج.