تستخدم جميع نماذج Gemini "عملية تفكير" داخلية تحسّن بشكل كبير قدراتها على الاستدلال والتخطيط المتعدّد الخطوات، ما يجعلها فعّالة للغاية في المهام المعقّدة، مثل الترميز والرياضيات المتقدّمة وتحليل البيانات.
توفّر نماذج التفكير الإعدادات والخيارات التالية:
التحكّم في مقدار التفكير
يمكنك ضبط مستويات التفكير للتحكّم في مقدار "التفكير" الذي يمكن للنموذج القيام به. هذا الإعداد مهم بشكل خاص إذا كان تقليل وقت الاستجابة أو التكلفة يمثل أولوية. يمكنك أيضًا مراجعة مقارنة صعوبات المهام لتحديد مدى حاجة النموذج إلى قدرته على التفكير.الحصول على ملخّصات لعملية التفكير
يمكنك تفعيل ملخّصات لعملية التفكير لتضمينها في الردّ الذي يتم إنشاؤه. هذه الملخّصات هي نُسخ مركّبة من أفكار النموذج الأولية، وتقدّم إحصاءات حول عملية الاستدلال الداخلية للنموذج.التعامل مع توقيعات الأفكار
تتعامل حزم تطوير البرامج (SDK) في Firebase AI Logic تلقائيًا مع توقيعات الأفكار نيابةً عنك، ما يضمن وصول النموذج إلى سياق الأفكار من الجولات السابقة تحديدًا عند استخدام ميزة استدعاء الدوال.
احرص على مراجعة أفضل الممارسات والإرشادات المتعلقة بالطلبات لاستخدام النماذج المفكّرة.
أفضل الممارسات والإرشادات حول الطلبات لاستخدام النماذج المفكّرة
ننصحك باختبار طلبك في Google AI Studio أو Agent Studio حيث يمكنك الاطّلاع على عملية التفكير الكاملة. يمكنك تحديد أي جوانب قد يكون النموذج قد أخطأ فيها لتتمكّن من تحسين طلباتك والحصول على ردود أكثر اتساقًا ودقة.
ابدأ بطلب عام يصف النتيجة المرجوة، ولاحظ أفكار النموذج الأولية حول كيفية تحديد ردّه. إذا لم يكن الردّ على النحو المتوقّع، يمكنك مساعدة النموذج في إنشاء ردّ أفضل باستخدام أي من أساليب الطلبات التالية:
- تقديم تعليمات مفصّلة
- تقديم عدة أمثلة على أزواج الإدخال والإخراج
- قدِّم إرشادات حول كيفية صياغة النتائج والردود وتنسيقها
- تقديم خطوات محدّدة لإثبات الهوية
بالإضافة إلى الطلبات، ننصحك باتّباع الاقتراحات التالية:
اضبط تعليمات النظام، وهي مثل "مقدمة" تضيفها قبل أن يتلقّى النموذج أي تعليمات أخرى من الطلب أو المستخدم النهائي. فهي تتيح لك توجيه سلوك النموذج استنادًا إلى احتياجاتك وحالات الاستخدام المحدّدة.
اضبط مستوى التفكير للتحكّم في مقدار التفكير الذي يمكن للنموذج القيام به. إذا ضبطته على مستوى عالٍ، يمكن للنموذج التفكير أكثر، إذا لزم الأمر. إذا ضبطت قيمة أقل، لن "يفرط النموذج في التفكير" في ردّه، كما أنّه يحتفظ بمزيد من إجمالي الحدّ الأقصى للرموز المميّزة للردّ الفعلي ويمكن أن يساعد في تقليل وقت الاستجابة والتكلفة.
يمكنك تفعيل ميزة تتبُّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase لتتبُّع عدد الرموز المميّزة للتفكير ووقت استجابة طلباتك التي تم تفعيل ميزة التفكير فيها. وإذا كانت ميزة ملخّصات الأفكار مفعَّلة، ستظهر في وحدة التحكّم حيث يمكنك فحص الاستدلال المفصّل للنموذج لمساعدتك في تصحيح الأخطاء وتحسين طلباتك.
التحكّم في مقدار التفكير
يمكنك ضبط مستويات التفكير للتحكّم في مقدار "التفكير" والاستدلال الذي يمكن للنموذج إجراؤه قبل عرض الردّ. وهذا الإعداد مهم بشكل خاص إذا كان تقليل وقت الاستجابة أو التكلفة يمثّل أولوية.
يُرجى مراجعة مقارنة صعوبات المهام لتحديد مدى حاجة النموذج إلى قدرته على التفكير. في ما يلي بعض الإرشادات العامة:
- يمكنك ضبط قيمة تفكير أقل للمهام الأقل تعقيدًا أو إذا كان تقليل وقت الاستجابة أو التكلفة يمثّل أولوية بالنسبة إليك.
- اضبط قيمة تفكير أعلى للمهام الأكثر تعقيدًا.
مستويات التفكير
للتحكّم في مقدار التفكير الذي يمكن للنموذج إجراؤه لإنشاء ردّه، يمكنك تحديد مستوى تفكير لعدد الرموز المميّزة للتفكير التي يُسمح له باستخدامها.
ضبط مستوى التفكير
|
انقر على مزوّد خدمة Gemini API لعرض المحتوى والرمز البرمجي الخاصَّين بالمزوّد على هذه الصفحة. |
يمكنك ضبط مستوى التفكير في GenerationConfig كجزء من إنشاء مثيل
GenerativeModel. يتم الاحتفاظ بالإعدادات طوال مدة عمل
المثيل. إذا أردت استخدام مستويات تفكير مختلفة لطلبات مختلفة، يمكنك إنشاء نُسخ من GenerativeModel تم ضبطها لكل مستوى.
يمكنك الاطّلاع على مزيد من المعلومات حول القيم المسموح بها لمستوى التفكير لاحقًا في هذا القسم.
Swift
يمكنك ضبط مستوى التفكير في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel.
// ...
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
let generationConfig = GenerationConfig(
thinkingConfig: ThinkingConfig(thinkingLevel: .low)
)
// Specify the config as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "GEMINI_3.x_MODEL_NAME",
generationConfig: generationConfig
)
// ...
Kotlin
اضبط قيم المَعلمات في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel.
// ...
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
val generationConfig = generationConfig {
thinkingConfig = thinkingConfig {
thinkingLevel = ThinkingLevel.LOW
}
}
// Specify the config as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "GEMINI_3.x_MODEL_NAME",
generationConfig,
)
// ...
Java
اضبط قيم المَعلمات في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel.
// ...
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
.setThinkingLevel(ThinkingLevel.LOW)
.build();
GenerationConfig generationConfig = GenerationConfig.builder()
.setThinkingConfig(thinkingConfig)
.build();
// Specify the config as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ "GEMINI_3.x_MODEL_NAME",
/* generationConfig */ generationConfig
);
);
// ...
Web
اضبط قيم المَعلمات في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel.
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
const generationConfig = {
thinkingConfig: {
thinkingLevel: ThinkingLevel.LOW
}
};
// Specify the config as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, { model: "GEMINI_3.x_MODEL_NAME", generationConfig });
// ...
Dart
اضبط قيم المَعلمات في GenerationConfig كجزء من إنشاء مثيل GenerativeModel.
// ...
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
final thinkingConfig = ThinkingConfig.withThinkingLevel(ThinkingLevel.low);
final generationConfig = GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_3.x_MODEL_NAME',
generationConfig: generationConfig,
);
// ...
Unity
اضبط قيم المَعلمات في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel.
// ...
// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
var thinkingConfig = new ThinkingConfig(thinkingLevel: ThinkingLevel.Low);
var generationConfig = new GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
modelName: "GEMINI_3.x_MODEL_NAME",
generationConfig: generationConfig
);
// ...
قيم مستوى التفكير المسموح بها
يسرد الجدول التالي قيم مستوى التفكير التي يمكنك ضبطها لكل نموذج من خلال ضبط thinkingLevel للنموذج.
MINIMAL |
LOW |
MEDIUM |
HIGH |
|
|---|---|---|---|---|
|
يستخدم النموذج أقل عدد ممكن من الرموز المميّزة، ولا يفكّر تقريبًا المهام البسيطة |
يستخدم النموذج عددًا أقل من الرموز المميّزة، ما يقلّل من وقت الاستجابة والتكلفة المهام البسيطة والمهام ذات معدّل النقل العالي |
يستخدم النموذج نهجًا متوازنًا مهام متوسطة التعقيد |
يستخدم النموذج الرموز المميّزة حتى الحد الأقصى المسموح به الطلبات المعقّدة التي تتطلّب استدلالاً عميقًا |
|
Gemini 4 Argongemini-4-argon
|
1 | (تلقائي) | ||
Gemini 3.x Progemini-3.1-pro-preview
|
(تلقائي) | |||
Gemini 3.x Flashgemini-3.8-flashgemini-3.7-flashgemini-3.6-flashgemini-3.5-flash
|
غير متوافقة مع gemini-3.8-flashgemini-3.7-flash |
(تلقائي) | ||
Gemini 3.x Flash‑Litegemini-3.5-flash-litegemini-3.1-flash-lite
|
(تلقائي) | |||
Gemini Nano Banana 2.1gemini-nano-banana-2.1
|
(تلقائي) | |||
Gemini Nano Banana 2gemini-3.1-flash-image |
(تلقائي) | |||
Gemini Nano Banana 2 Litegemini-3.1-flash-lite-image |
(تلقائي) | |||
Gemini Nano Banana Progemini-3-pro-image
|
(تلقائي) |
1 gemini-4-argon وgemini-3.8-flash
وgemini-3.7-flash لا تتيح
مستوى التفكير MINIMAL. إذا ضبطت مستوى التفكير على
MINIMAL، سيتعذّر تنفيذ الطلب وسيظهر الخطأ 400.
ميزانيات التفكير (نموذجان (Gemini 2.5))
للتحكّم في مقدار التفكير الذي يمكن لنموذج Gemini 2.5 إجراؤه لإنشاء ردّه، يمكنك تحديد حد أقصى للتفكير لعدد الرموز المميّزة للتفكير التي يُسمح له باستخدامها.
مستوى تعقيد المهام في جميع النماذج المفكّرة
المهام السهلة التي لا تتطلّب الكثير من التفكير
هي الطلبات المباشرة التي لا تتطلّب استدلالاً معقّدًا، مثل استرجاع الحقائق أو التصنيف. أمثلة:- "أين تأسست شركة DeepMind؟"
- "هل تطلب هذه الرسالة الإلكترونية عقد اجتماع أم تقدّم معلومات فقط؟"
المهام المتوسطة: قد تتطلّب بعض التفكير
هي الطلبات الشائعة التي تستفيد من درجة معيّنة من المعالجة خطوة بخطوة أو الفهم الأعمق. أمثلة:- "أريد إنشاء تشبيه بين عملية التمثيل الضوئي والنمو".
- "قارِن بين السيارات الكهربائية والسيارات الهجينة".
المهام الصعبة: قد يكون من الضروري استخدام أقصى قدر من التفكير
التحديات المعقّدة حقًا، مثل حلّ المسائل الرياضية المعقّدة أو مهام الترميز تتطلّب هذه الأنواع من المهام من النموذج استخدام كامل قدراته في الاستدلال والتخطيط، وغالبًا ما تتضمّن العديد من الخطوات الداخلية قبل تقديم الإجابة. أمثلة:- "حلّ المسألة 1 في اختبار AIME لعام 2025: أوجد مجموع كل الأساسات الصحيحة b > 9 التي يكون فيها 17b قاسمًا لـ 97b".
- "اكتب رمز Python لتطبيق ويب يعرض بيانات سوق الأسهم في الوقت الفعلي، بما في ذلك مصادقة المستخدم. اجعلها فعالة قدر الإمكان".
ملخّصات الأفكار
ملخّصات الأفكار هي نُسخ مركّبة من الأفكار الأولية للنموذج، وتقدّم إحصاءات حول عملية الاستدلال الداخلية للنموذج.
في ما يلي بعض الأسباب التي تدفعك إلى تضمين ملخّصات الأفكار في الردود:
يمكنك عرض ملخّص التفكير في واجهة مستخدم تطبيقك أو إتاحته للمستخدمين. يتم عرض ملخّص التفكير كجزء منفصل في الردّ، ما يمنحك مزيدًا من التحكّم في كيفية استخدامه في تطبيقك.
إذا فعّلت أيضًا تتبُّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase، ستظهر ملخّصات الأفكار في وحدة التحكّم حيث يمكنك فحص الاستدلال المفصّل للنموذج لمساعدتك في تصحيح الأخطاء وتحسين طلباتك.
في ما يلي بعض الملاحظات الأساسية حول ملخّصات الأفكار:
لا تخضع ملخّصات الأفكار لميزانيات التفكير (تنطبق الميزانيات فقط على الأفكار الأولية للنموذج). ومع ذلك، إذا كانت ميزة التفكير غير مفعَّلة، لن يعرض النموذج ملخّصًا للتفكير.
تُعدّ ملخّصات التفكير جزءًا من ردّ النموذج العادي الذي يتضمّن نصًا من إنشائه، ويتم احتسابها ضمن الرموز المميّزة الناتجة.
تفعيل ملخّصات التفكير
|
انقر على مزوّد خدمة Gemini API لعرض المحتوى والرمز البرمجي الخاصَّين بالمزوّد على هذه الصفحة. |
يمكنك تفعيل ملخّصات التفكير من خلال ضبط includeThoughts على "صحيح" في إعدادات النموذج. يمكنك بعد ذلك الوصول إلى الملخّص من خلال التحقّق من حقل thoughtSummary من الردّ.
في ما يلي مثال يوضّح كيفية تفعيل ملخّصات الاستدلال واستردادها مع الردّ:
Swift
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
let generationConfig = GenerationConfig(
thinkingConfig: ThinkingConfig(includeThoughts: true)
)
// Specify the config as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "GEMINI_MODEL_NAME",
generationConfig: generationConfig
)
let response = try await model.generateContent("solve x^2 + 4x + 4 = 0")
// Handle the response that includes thought summaries.
if let thoughtSummary = response.thoughtSummary {
print("Thought Summary: \(thoughtSummary)")
}
guard let text = response.text else {
fatalError("No text in response.")
}
print("Answer: \(text)")
Kotlin
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
val generationConfig = generationConfig {
thinkingConfig = thinkingConfig {
includeThoughts = true
}
}
// Specify the config as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "GEMINI_MODEL_NAME",
generationConfig,
)
val response = model.generateContent("solve x^2 + 4x + 4 = 0")
// Handle the response that includes thought summaries.
response.thoughtSummary?.let {
println("Thought Summary: $it")
}
response.text?.let {
println("Answer: $it")
}
Java
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
.setIncludeThoughts(true)
.build();
GenerationConfig generationConfig = GenerationConfig.builder()
.setThinkingConfig(thinkingConfig)
.build();
// Specify the config as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ "GEMINI_MODEL_NAME",
/* generationConfig */ generationConfig
);
);
// Handle the response that includes thought summaries.
ListenableFuture responseFuture = model.generateContent("solve x^2 + 4x + 4 = 0");
Futures.addCallback(responseFuture, new FutureCallback() {
@Override
public void onSuccess(GenerateContentResponse response) {
if (response.getThoughtSummary() != null) {
System.out.println("Thought Summary: " + response.getThoughtSummary());
}
if (response.getText() != null) {
System.out.println("Answer: " + response.getText());
}
}
@Override
public void onFailure(Throwable t) {
// Handle error
}
}, MoreExecutors.directExecutor());
Web
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
const generationConfig = {
thinkingConfig: {
includeThoughts: true
}
};
// Specify the config as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });
const result = await model.generateContent("solve x^2 + 4x + 4 = 0");
const response = result.response;
// Handle the response that includes thought summaries.
if (response.thoughtSummary()) {
console.log(`Thought Summary: ${response.thoughtSummary()}`);
}
const text = response.text();
console.log(`Answer: ${text}`);
Dart
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
final thinkingConfig = ThinkingConfig(includeThoughts: true);
final generationConfig = GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_MODEL_NAME',
generationConfig: generationConfig,
);
final response = await model.generateContent([Content.text('solve x^2 + 4x + 4 = 0')]);
// Handle the response that includes thought summaries.
if (response.thoughtSummary != null) {
print('Thought Summary: ${response.thoughtSummary}');
}
if (response.text != null) {
print('Answer: ${response.text}');
}
Unity
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
var thinkingConfig = new ThinkingConfig(includeThoughts: true);
var generationConfig = new GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
modelName: "GEMINI_MODEL_NAME",
generationConfig: generationConfig
);
var response = await model.GenerateContentAsync("solve x^2 + 4x + 4 = 0");
// Handle the response that includes thought summaries.
if (response.ThoughtSummary != null) {
Debug.Log($"Thought Summary: {response.ThoughtSummary}");
}
if (response.Text != null) {
Debug.Log($"Answer: {response.Text}");
}
عرض ملخّصات الأفكار تدريجيًا
يمكنك أيضًا الاطّلاع على ملخّصات الأفكار إذا اخترت بث ردّ باستخدام
generateContentStream. سيؤدي ذلك إلى عرض ملخّصات متجدّدة وتدريجية أثناء
إنشاء الردّ.
Swift
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
let generationConfig = GenerationConfig(
thinkingConfig: ThinkingConfig(includeThoughts: true)
)
// Specify the config as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "GEMINI_MODEL_NAME",
generationConfig: generationConfig
)
let stream = try model.generateContentStream("solve x^2 + 4x + 4 = 0")
// Handle the streamed response that includes thought summaries.
var thoughts = ""
var answer = ""
for try await response in stream {
if let thought = response.thoughtSummary {
if thoughts.isEmpty {
print("--- Thoughts Summary ---")
}
print(thought)
thoughts += thought
}
if let text = response.text {
if answer.isEmpty {
print("--- Answer ---")
}
print(text)
answer += text
}
}
Kotlin
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
val generationConfig = generationConfig {
thinkingConfig = thinkingConfig {
includeThoughts = true
}
}
// Specify the config as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "GEMINI_MODEL_NAME",
generationConfig,
)
// Handle the streamed response that includes thought summaries.
var thoughts = ""
var answer = ""
model.generateContentStream("solve x^2 + 4x + 4 = 0").collect { response ->
response.thoughtSummary?.let {
if (thoughts.isEmpty()) {
println("--- Thoughts Summary ---")
}
print(it)
thoughts += it
}
response.text?.let {
if (answer.isEmpty()) {
println("--- Answer ---")
}
print(it)
answer += it
}
}
Java
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
.setIncludeThoughts(true)
.build();
GenerationConfig generationConfig = GenerationConfig.builder()
.setThinkingConfig(thinkingConfig)
.build();
// Specify the config as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ "GEMINI_MODEL_NAME",
/* generationConfig */ generationConfig
);
);
// Streaming with Java is complex and depends on the async library used.
// This is a conceptual example using a reactive stream.
Flowable responseStream = model.generateContentStream("solve x^2 + 4x + 4 = 0");
// Handle the streamed response that includes thought summaries
StringBuilder thoughts = new StringBuilder();
StringBuilder answer = new StringBuilder();
responseStream.subscribe(response -> {
if (response.getThoughtSummary() != null) {
if (thoughts.length() == 0) {
System.out.println("--- Thoughts Summary ---");
}
System.out.print(response.getThoughtSummary());
thoughts.append(response.getThoughtSummary());
}
if (response.getText() != null) {
if (answer.length() == 0) {
System.out.println("--- Answer ---");
}
System.out.print(response.getText());
answer.append(response.getText());
}
}, throwable -> {
// Handle error
});
Web
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
const generationConfig = {
thinkingConfig: {
includeThoughts: true
}
};
// Specify the config as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });
const result = await model.generateContentStream("solve x^2 + 4x + 4 = 0");
// Handle the streamed response that includes thought summaries.
let thoughts = "";
let answer = "";
for await (const chunk of result.stream) {
if (chunk.thoughtSummary()) {
if (thoughts === "") {
console.log("--- Thoughts Summary ---");
}
// In Node.js, process.stdout.write(chunk.thoughtSummary()) could be used
// to avoid extra newlines.
console.log(chunk.thoughtSummary());
thoughts += chunk.thoughtSummary();
}
const text = chunk.text();
if (text) {
if (answer === "") {
console.log("--- Answer ---");
}
// In Node.js, process.stdout.write(text) could be used.
console.log(text);
answer += text;
}
}
Dart
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
final thinkingConfig = ThinkingConfig(includeThoughts: true);
final generationConfig = GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_MODEL_NAME',
generationConfig: generationConfig,
);
final responses = model.generateContentStream([Content.text('solve x^2 + 4x + 4 = 0')]);
// Handle the streamed response that includes thought summaries.
var thoughts = '';
var answer = '';
await for (final response in responses) {
if (response.thoughtSummary != null) {
if (thoughts.isEmpty) {
print('--- Thoughts Summary ---');
}
thoughts += response.thoughtSummary!;
}
if (response.text != null) {
if (answer.isEmpty) {
print('--- Answer ---');
}
answer += response.text!;
}
}
Unity
تفعيل ملخّصات الأفكار في
GenerationConfig
كجزء من إنشاء مثيل GenerativeModel
// ...
// Set the thinking configuration.
// Optionally enable thought summaries in the generated response (default is false).
var thinkingConfig = new ThinkingConfig(includeThoughts: true);
var generationConfig = new GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance.
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
modelName: "GEMINI_MODEL_NAME",
generationConfig: generationConfig
);
var stream = model.GenerateContentStreamAsync("solve x^2 + 4x + 4 = 0");
// Handle the streamed response that includes thought summaries.
var thoughts = "";
var answer = "";
await foreach (var response in stream)
{
if (response.ThoughtSummary != null)
{
if (string.IsNullOrEmpty(thoughts))
{
Debug.Log("--- Thoughts Summary ---");
}
Debug.Log(response.ThoughtSummary);
thoughts += response.ThoughtSummary;
}
if (response.Text != null)
{
if (string.IsNullOrEmpty(answer))
{
Debug.Log("--- Answer ---");
}
Debug.Log(response.Text);
answer += response.Text;
}
}
توقيعات الأفكار
عند استخدام ميزة "المفكّر" في التفاعلات المتعدّدة الأدوار، لا يمكن للنموذج الوصول إلى سياق الأفكار من الأدوار السابقة. ومع ذلك، إذا كنت تستخدم ميزة استدعاء الدوال، يمكنك الاستفادة من توقيعات الأفكار للحفاظ على سياق الأفكار في جميع الجولات. توقيعات التفكير هي تمثيلات مشفّرة لعملية التفكير الداخلية للنموذج، وهي متاحة عند استخدام ميزة التفكير واستدعاء الدوال. على وجه التحديد، يتم إنشاء توقيعات الأفكار في الحالات التالية:
- عندما تكون ميزة "المفكّر" مفعّلة ويتم إنشاء الأفكار.
- يتضمّن الطلب تعريفات الدوال.
للاستفادة من توقيعات التفكير، استخدِم ميزة استدعاء الدوال كالمعتاد.
تسهّل حزم تطوير البرامج (SDK) في Firebase AI Logic العملية من خلال إدارة الحالة
والتعامل تلقائيًا مع توقيعات التفكير نيابةً عنك. تنقل حِزم تطوير البرامج (SDK) تلقائيًا
أي توقيعات فكرية يتم إنشاؤها بين طلبات sendMessage أو
sendMessageStream اللاحقة في جلسة Chat.
أسعار الرموز المميّزة للتفكير وطريقة احتسابها
تنطبق على الرموز المميّزة للتفكير الأسعار نفسها التي تنطبق على الرموز المميّزة للنصوص الناتجة. إذا فعّلت ملخّصات الأفكار، سيتم اعتبارها رموزًا مميّزة للتفكير وسيتم تحديد سعرها وفقًا لذلك.
يمكنك تفعيل تتبُّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase لتتبُّع عدد الرموز المميّزة للتفكير في الطلبات التي تم تفعيل التفكير فيها.
يمكنك الحصول على إجمالي عدد الرموز المميّزة للتفكير من الحقل thoughtsTokenCount في السمة usageMetadata للردّ:
Swift
// ...
let response = try await model.generateContent("Why is the sky blue?")
if let usageMetadata = response.usageMetadata {
print("Thoughts Token Count: \(usageMetadata.thoughtsTokenCount)")
}
Kotlin
// ...
val response = model.generateContent("Why is the sky blue?")
response.usageMetadata?.let { usageMetadata ->
println("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}")
}
Java
// ...
ListenableFuture<GenerateContentResponse> response =
model.generateContent("Why is the sky blue?");
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String usageMetadata = result.getUsageMetadata();
if (usageMetadata != null) {
System.out.println("Thoughts Token Count: " +
usageMetadata.getThoughtsTokenCount());
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
// ...
const response = await model.generateContent("Why is the sky blue?");
if (response?.usageMetadata?.thoughtsTokenCount != null) {
console.log(`Thoughts Token Count: ${response.usageMetadata.thoughtsTokenCount}`);
}
Dart
// ...
final response = await model.generateContent(
Content.text("Why is the sky blue?"),
]);
if (response?.usageMetadata case final usageMetadata?) {
print("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}");
}
Unity
// ...
var response = await model.GenerateContentAsync("Why is the sky blue?");
if (response.UsageMetadata != null)
{
UnityEngine.Debug.Log($"Thoughts Token Count: {response.UsageMetadata?.ThoughtsTokenCount}");
}
يمكنك الاطّلاع على مزيد من المعلومات حول الرموز المميّزة في دليل احتساب الرموز المميّزة.