Skip to content

feat(ai): add support for setting a thinking budget #6999

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

thatfiredev
Copy link
Member

This should resolve #6990

Copy link
Contributor

github-actions bot commented May 28, 2025

Javadoc Changes:
--- /home/runner/diff/original/firebase-kotlindoc/android/client/firebase-ai/_toc.yaml	2025-06-27 16:40:17.355448133 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/client/firebase-ai/_toc.yaml	2025-06-27 16:36:37.281840735 +0000
@@ -168,6 +168,12 @@
       path: "/docs/reference/android/com/google/firebase/ai/type/StringFormat.Custom.html"
     - title: "TextPart"
       path: "/docs/reference/android/com/google/firebase/ai/type/TextPart.html"
+    - title: "ThinkingConfig"
+      path: "/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html"
+    - title: "ThinkingConfig.Builder"
+      path: "/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html"
+    - title: "ThinkingConfigKt"
+      path: "/docs/reference/android/com/google/firebase/ai/type/ThinkingConfigKt.html"
     - title: "Tool"
       path: "/docs/reference/android/com/google/firebase/ai/type/Tool.html"
     - title: "ToolConfig"
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/GenerationConfig.Builder.html	2025-06-27 16:40:17.337447921 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/GenerationConfig.Builder.html	2025-06-27 16:36:37.261840496 +0000
@@ -109,6 +109,12 @@
             </td>
           </tr>
           <tr>
+            <td><code>final <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#thinkingConfig()">thinkingConfig</a></code></div>
+            </td>
+          </tr>
+          <tr>
             <td><code>final <a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a></code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#topK()">topK</a></code></div>
@@ -221,6 +227,12 @@
           <tr>
             <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</a>(<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>&nbsp;thinkingConfig)</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTopK(kotlin.Int)">setTopK</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;topK)</code></div>
             </td>
           </tr>
@@ -280,6 +292,10 @@
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Float.html">Float</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#temperature()">temperature</a></pre>
         <p>See <code><a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.html#temperature()">GenerationConfig.temperature</a></code>.</p>
       </div>
+      <div class="api-item"><a name="getThinkingConfig()"></a><a name="setThinkingConfig()"></a><a name="getThinkingConfig--"></a><a name="setThinkingConfig--"></a>
+        <h3 class="api-name" id="thinkingConfig()">thinkingConfig</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#thinkingConfig()">thinkingConfig</a></pre>
+      </div>
       <div class="api-item"><a name="getTopK()"></a><a name="setTopK()"></a><a name="getTopK--"></a><a name="setTopK--"></a>
         <h3 class="api-name" id="topK()">topK</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#topK()">topK</a></pre>
@@ -341,6 +357,10 @@
         <h3 class="api-name" id="setTemperature(kotlin.Float)">setTemperature</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTemperature(kotlin.Float)">setTemperature</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/Float.html">Float</a>&nbsp;temperature)</pre>
       </div>
+      <div class="api-item"><a name="setThinkingConfig-com.google.firebase.ai.type.ThinkingConfig-"></a><a name="setthinkingconfig"></a>
+        <h3 class="api-name" id="setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</a>(<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>&nbsp;thinkingConfig)</pre>
+      </div>
       <div class="api-item"><a name="setTopK-kotlin.Int-"></a><a name="settopk"></a>
         <h3 class="api-name" id="setTopK(kotlin.Int)">setTopK</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTopK(kotlin.Int)">setTopK</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;topK)</pre>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html	2025-06-27 16:36:37.256840436 +0000
@@ -0,0 +1,112 @@
+<html devsite="true">
+  <head>
+    <title>ThinkingConfig.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ThinkingConfig.Builder</h1>
+    <p>
+      <pre>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></pre>
+    </p>
+    <hr>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#thinkingBudget()">thinkingBudget</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#Builder()">Builder</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public methods</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#build()">build</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#setThinkingBudget(kotlin.Int)">setThinkingBudget</a>(int&nbsp;thinkingBudget)</code></div>
+              <p>Indicates the thinking budget in tokens.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getThinkingBudget()"></a><a name="setThinkingBudget()"></a><a name="getThinkingBudget--"></a><a name="setThinkingBudget--"></a>
+        <h3 class="api-name" id="thinkingBudget()">thinkingBudget</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#thinkingBudget()">thinkingBudget</a></pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+        <h3 class="api-name" id="Builder()">Builder</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#Builder()">Builder</a>()</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="build--"></a><a name="build"></a>
+        <h3 class="api-name" id="build()">build</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#build()">build</a>()</pre>
+      </div>
+      <div class="api-item"><a name="setThinkingBudget-kotlin.Int-"></a><a name="setthinkingbudget"></a>
+        <h3 class="api-name" id="setThinkingBudget(kotlin.Int)">setThinkingBudget</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html#setThinkingBudget(kotlin.Int)">setThinkingBudget</a>(int&nbsp;thinkingBudget)</pre>
+        <p>Indicates the thinking budget in tokens. 0 is DISABLED. -1 is AUTOMATIC. The default values and allowed ranges are model dependent.</p>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfig.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfig.html	2025-06-27 16:36:37.267840568 +0000
@@ -0,0 +1,38 @@
+<html devsite="true">
+  <head>
+    <title>ThinkingConfig</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ThinkingConfig</h1>
+    <p>
+      <pre>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></pre>
+    </p>
+    <hr>
+    <p>Configuration parameters for thinking features.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Nested types</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfigKt.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/ThinkingConfigKt.html	2025-06-27 16:36:37.257840448 +0000
@@ -0,0 +1,48 @@
+<html devsite="true">
+  <head>
+    <title>ThinkingConfigKt</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <h1>ThinkingConfigKt</h1>
+    <p>
+      <pre>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfigKt.html">ThinkingConfigKt</a></pre>
+    </p>
+    <hr>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public methods</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>static&nbsp;final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfigKt.html#thinkingConfig(kotlin.Function1)">thinkingConfig</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html">ExtensionFunctionType</a> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a>,&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>&gt;&nbsp;init<br>)</code></div>
+              <p>Helper method to construct a <code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code> in a DSL-like manner.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="thinkingConfig-kotlin.Function1-"></a><a name="thinkingconfig"></a>
+        <h3 class="api-name" id="thinkingConfig(kotlin.Function1)">thinkingConfig</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfigKt.html#thinkingConfig(kotlin.Function1)">thinkingConfig</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html">ExtensionFunctionType</a> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a>,&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>&gt;&nbsp;init<br>)</pre>
+        <p>Helper method to construct a <code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code> in a DSL-like manner.</p>
+        <p>Example Usage:</p>
+        <pre class="prettyprint">thinkingConfig {<br>  thinkingBudget = 0 // disable thinking<br>}</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/UsageMetadata.html	2025-06-27 16:40:17.348448051 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/UsageMetadata.html	2025-06-27 16:36:37.273840639 +0000
@@ -56,6 +56,13 @@
           <tr>
             <td><code>final int</code></td>
             <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#thoughtsTokenCount()">thoughtsTokenCount</a></code></div>
+              <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final int</code></td>
+            <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#totalTokenCount()">totalTokenCount</a></code></div>
               <p>Total number of tokens.</p>
             </td>
@@ -77,7 +84,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;promptTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;candidatesTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;promptTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;candidatesTokensDetails<br>)</code></div>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;promptTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;candidatesTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;promptTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;candidatesTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;thoughtsTokenCount<br>)</code></div>
             </td>
           </tr>
         </tbody>
@@ -105,6 +112,11 @@
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#promptTokensDetails()">promptTokensDetails</a></pre>
         <p>The breakdown, by modality, of how many tokens are consumed by the prompt.</p>
       </div>
+      <div class="api-item"><a name="getThoughtsTokenCount()"></a><a name="setThoughtsTokenCount()"></a><a name="getThoughtsTokenCount--"></a><a name="setThoughtsTokenCount--"></a>
+        <h3 class="api-name" id="thoughtsTokenCount()">thoughtsTokenCount</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#thoughtsTokenCount()">thoughtsTokenCount</a></pre>
+        <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+      </div>
       <div class="api-item"><a name="getTotalTokenCount()"></a><a name="setTotalTokenCount()"></a><a name="getTotalTokenCount--"></a><a name="setTotalTokenCount--"></a>
         <h3 class="api-name" id="totalTokenCount()">totalTokenCount</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;int&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#totalTokenCount()">totalTokenCount</a></pre>
@@ -113,9 +125,9 @@
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="UsageMetadata(kotlin.Int, kotlin.Int, kotlin.Int, kotlin.collections.List, kotlin.collections.List)"></a><a name="UsageMetadata-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.collections.List-kotlin.collections.List-"></a><a name="usagemetadata"></a>
-        <h3 class="api-name" id="UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;promptTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;candidatesTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;promptTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;candidatesTokensDetails<br>)</pre>
+      <div class="api-item"><a name="UsageMetadata(kotlin.Int, kotlin.Int, kotlin.Int, kotlin.collections.List, kotlin.collections.List, kotlin.Int)"></a><a name="UsageMetadata-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.collections.List-kotlin.collections.List-kotlin.Int-"></a><a name="usagemetadata"></a>
+        <h3 class="api-name" id="UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;promptTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Integer.html">Integer</a>&nbsp;candidatesTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalTokenCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;promptTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;&nbsp;candidatesTokensDetails,<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;thoughtsTokenCount<br>)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -158,6 +170,12 @@
                   <p>The breakdown, by modality, of how many tokens are consumed by the candidates.</p>
                 </td>
               </tr>
+              <tr>
+                <td><code>int&nbsp;thoughtsTokenCount</code></td>
+                <td>
+                  <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+                </td>
+              </tr>
             </tbody>
           </table>
         </div>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/package-summary.html	2025-06-27 16:40:17.348448051 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/package-summary.html	2025-06-27 16:36:37.274840651 +0000
@@ -385,6 +385,20 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <p>Configuration parameters for thinking features.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/ThinkingConfigKt.html">ThinkingConfigKt</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/Tool.html">Tool</a></code></td>
             <td>
               <p>Contains a set of function declarations that the model has access to.</p>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-ai/_toc.yaml	2025-06-27 16:40:17.330447838 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-ai/_toc.yaml	2025-06-27 16:36:37.255840424 +0000
@@ -156,6 +156,10 @@
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/StringFormat.Custom.html"
     - title: "TextPart"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/TextPart.html"
+    - title: "ThinkingConfig"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html"
+    - title: "ThinkingConfig.Builder"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html"
     - title: "Tool"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/Tool.html"
     - title: "ToolConfig"
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html	2025-06-27 16:40:17.317447685 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html	2025-06-27 16:36:37.245840305 +0000
@@ -129,6 +129,12 @@
           <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</a>(thinkingConfig:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>?)</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTopK(kotlin.Int)">setTopK</a>(topK:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?)</code></div>
             </td>
           </tr>
@@ -217,6 +223,12 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#thinkingConfig()">thinkingConfig</a></code></div>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?</code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#topK()">topK</a></code></div>
@@ -283,6 +295,10 @@
         <h3 class="api-name" id="setTemperature(kotlin.Float)">setTemperature</h3>
         <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTemperature(kotlin.Float)">setTemperature</a>(temperature:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html">Float</a>?):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></pre>
       </div>
+      <div class="api-item"><a name="setThinkingConfig-com.google.firebase.ai.type.ThinkingConfig-"></a><a name="setthinkingconfig"></a>
+        <h3 class="api-name" id="setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#setThinkingConfig(com.google.firebase.ai.type.ThinkingConfig)">setThinkingConfig</a>(thinkingConfig:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>?):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></pre>
+      </div>
       <div class="api-item"><a name="setTopK-kotlin.Int-"></a><a name="settopk"></a>
         <h3 class="api-name" id="setTopK(kotlin.Int)">setTopK</h3>
         <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#setTopK(kotlin.Int)">setTopK</a>(topK:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html">GenerationConfig.Builder</a></pre>
@@ -339,6 +355,10 @@
         <pre class="api-signature no-pretty-print">var&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#temperature()">temperature</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html">Float</a>?</pre>
         <p>See <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.html#temperature()">GenerationConfig.temperature</a></code>.</p>
       </div>
+      <div class="api-item"><a name="getThinkingConfig()"></a><a name="setThinkingConfig()"></a><a name="getThinkingConfig--"></a><a name="setThinkingConfig--"></a>
+        <h3 class="api-name" id="thinkingConfig()">thinkingConfig</h3>
+        <pre class="api-signature no-pretty-print">var&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#thinkingConfig()">thinkingConfig</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a>?</pre>
+      </div>
       <div class="api-item"><a name="getTopK()"></a><a name="setTopK()"></a><a name="getTopK--"></a><a name="setTopK--"></a>
         <h3 class="api-name" id="topK()">topK</h3>
         <pre class="api-signature no-pretty-print">var&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/GenerationConfig.Builder.html#topK()">topK</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?</pre>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html	2025-06-27 16:36:37.240840245 +0000
@@ -0,0 +1,112 @@
+<html devsite="true">
+  <head>
+    <title>ThinkingConfig.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ThinkingConfig.Builder</h1>
+    <p>
+      <pre>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></pre>
+    </p>
+    <hr>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#Builder()">Builder</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public functions</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#build()">build</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#setThinkingBudget(kotlin.Int)">setThinkingBudget</a>(thinkingBudget:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>)</code></div>
+              <p>Indicates the thinking budget in tokens.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public properties</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#thinkingBudget()">thinkingBudget</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+        <h3 class="api-name" id="Builder()">Builder</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#Builder()">Builder</a>()</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public functions</h2>
+      <div class="api-item"><a name="build--"></a><a name="build"></a>
+        <h3 class="api-name" id="build()">build</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#build()">build</a>():&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></pre>
+      </div>
+      <div class="api-item"><a name="setThinkingBudget-kotlin.Int-"></a><a name="setthinkingbudget"></a>
+        <h3 class="api-name" id="setThinkingBudget(kotlin.Int)">setThinkingBudget</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#setThinkingBudget(kotlin.Int)">setThinkingBudget</a>(thinkingBudget:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></pre>
+        <p>Indicates the thinking budget in tokens. 0 is DISABLED. -1 is AUTOMATIC. The default values and allowed ranges are model dependent.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getThinkingBudget()"></a><a name="setThinkingBudget()"></a><a name="getThinkingBudget--"></a><a name="setThinkingBudget--"></a>
+        <h3 class="api-name" id="thinkingBudget()">thinkingBudget</h3>
+        <pre class="api-signature no-pretty-print">var&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html#thinkingBudget()">thinkingBudget</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/ThinkingConfig.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/ThinkingConfig.html	2025-06-27 16:36:37.247840329 +0000
@@ -0,0 +1,38 @@
+<html devsite="true">
+  <head>
+    <title>ThinkingConfig</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ThinkingConfig</h1>
+    <p>
+      <pre>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></pre>
+    </p>
+    <hr>
+    <p>Configuration parameters for thinking features.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Nested types</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/UsageMetadata.html	2025-06-27 16:40:17.322447744 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/UsageMetadata.html	2025-06-27 16:36:37.251840377 +0000
@@ -27,7 +27,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;totalTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;<br>)</code></div>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;totalTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;thoughtsTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a><br>)</code></div>
             </td>
           </tr>
         </tbody>
@@ -76,6 +76,13 @@
           <tr>
             <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#thoughtsTokenCount()">thoughtsTokenCount</a></code></div>
+              <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#totalTokenCount()">totalTokenCount</a></code></div>
               <p>Total number of tokens.</p>
             </td>
@@ -85,9 +92,9 @@
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="UsageMetadata(kotlin.Int, kotlin.Int, kotlin.Int, kotlin.collections.List, kotlin.collections.List)"></a><a name="UsageMetadata-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.collections.List-kotlin.collections.List-"></a><a name="usagemetadata"></a>
-        <h3 class="api-name" id="UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</h3>
-        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;totalTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;<br>)</pre>
+      <div class="api-item"><a name="UsageMetadata(kotlin.Int, kotlin.Int, kotlin.Int, kotlin.collections.List, kotlin.collections.List, kotlin.Int)"></a><a name="UsageMetadata-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.collections.List-kotlin.collections.List-kotlin.Int-"></a><a name="usagemetadata"></a>
+        <h3 class="api-name" id="UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#UsageMetadata(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.collections.List,kotlin.collections.List,kotlin.Int)">UsageMetadata</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;totalTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;promptTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;candidatesTokensDetails:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;thoughtsTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a><br>)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -130,6 +137,12 @@
                   <p>The breakdown, by modality, of how many tokens are consumed by the candidates.</p>
                 </td>
               </tr>
+              <tr>
+                <td><code>thoughtsTokenCount:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
+                <td>
+                  <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+                </td>
+              </tr>
             </tbody>
           </table>
         </div>
@@ -157,6 +170,11 @@
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#promptTokensDetails()">promptTokensDetails</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ModalityTokenCount.html">ModalityTokenCount</a>&gt;</pre>
         <p>The breakdown, by modality, of how many tokens are consumed by the prompt.</p>
       </div>
+      <div class="api-item"><a name="getThoughtsTokenCount()"></a><a name="setThoughtsTokenCount()"></a><a name="getThoughtsTokenCount--"></a><a name="setThoughtsTokenCount--"></a>
+        <h3 class="api-name" id="thoughtsTokenCount()">thoughtsTokenCount</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#thoughtsTokenCount()">thoughtsTokenCount</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
+        <p>The number of tokens used by the model's internal &quot;thinking&quot; process.</p>
+      </div>
       <div class="api-item"><a name="getTotalTokenCount()"></a><a name="setTotalTokenCount()"></a><a name="getTotalTokenCount--"></a><a name="setTotalTokenCount--"></a>
         <h3 class="api-name" id="totalTokenCount()">totalTokenCount</h3>
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/UsageMetadata.html#totalTokenCount()">totalTokenCount</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/package-summary.html	2025-06-27 16:40:17.323447756 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/package-summary.html	2025-06-27 16:36:37.251840377 +0000
@@ -350,6 +350,16 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <p>Configuration parameters for thinking features.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/Tool.html">Tool</a></code></td>
             <td>
               <p>Contains a set of function declarations that the model has access to.</p>
@@ -544,6 +554,13 @@
               <p>Helper method to construct a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code> in a DSL-like manner.</p>
             </td>
           </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/package-summary.html#thinkingConfig(kotlin.Function1)">thinkingConfig</a>(init:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a>.() <span style="white-space: nowrap;">-&gt;</span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>)</code></div>
+              <p>Helper method to construct a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code> in a DSL-like manner.</p>
+            </td>
+          </tr>
         </tbody>
       </table>
     </div>
@@ -616,6 +633,13 @@
       <p>Example Usage:</p>
       <pre class="prettyprint">liveGenerationConfig {<br>  temperature = 0.75f<br>  topP = 0.5f<br>  topK = 30<br>  candidateCount = 4<br>  maxOutputTokens = 300<br>  ...<br>}</pre>
     </div>
+    <div class="api-item"><a name="thinkingConfig-kotlin.Function1-"></a><a name="thinkingconfig"></a>
+      <h3 class="api-name" id="thinkingConfig(kotlin.Function1)">thinkingConfig</h3>
+      <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/package-summary.html#thinkingConfig(kotlin.Function1)">thinkingConfig</a>(init:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.Builder.html">ThinkingConfig.Builder</a>.() <span style="white-space: nowrap;">-&gt;</span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></pre>
+      <p>Helper method to construct a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/ThinkingConfig.html">ThinkingConfig</a></code> in a DSL-like manner.</p>
+      <p>Example Usage:</p>
+      <pre class="prettyprint">thinkingConfig {<br>  thinkingBudget = 0 // disable thinking<br>}</pre>
+    </div>
     <h2>Extension functions</h2>
     <div class="api-item"><a name="-com.google.firebase.ai.type.Part-.asFileDataOrNull--"></a><a name="asfiledataornull"></a>
       <h3 class="api-name" id="(com.google.firebase.ai.type.Part).asFileDataOrNull()">asFileDataOrNull</h3>

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 28, 2025

Copy link
Contributor

github-actions bot commented May 28, 2025

Test Results

 26 files  + 18   26 suites  +18   35s ⏱️ +15s
104 tests + 82  104 ✅ + 82  0 💤 ±0  0 ❌ ±0 
208 runs  +164  208 ✅ +164  0 💤 ±0  0 ❌ ±0 

Results for commit f780f6b. ± Comparison against base commit 39edc7c.

This pull request removes 22 and adds 104 tests. Note that renamed tests count towards both.
com.google.firebase.crashlytics.internal.common.CrashlyticsControllerRobolectricTest ‑ testDoCloseSession_disabledAnrs_doesNotPersistsAppExitInfo
com.google.firebase.crashlytics.internal.common.CrashlyticsControllerRobolectricTest ‑ testDoCloseSession_enabledAnrs_doesNotPersistsAppExitInfoIfItDoesntExist
com.google.firebase.crashlytics.internal.common.CrashlyticsControllerRobolectricTest ‑ testDoCloseSession_enabledAnrs_persistsAppExitInfoIfItExists
com.google.firebase.crashlytics.internal.common.DataCollectionArbiterRobolectricTest ‑ testDefaultDataCollection_usedWhenNoOverrideOrManifestSetting
com.google.firebase.crashlytics.internal.common.DataCollectionArbiterRobolectricTest ‑ testManifestMetadata_respectedWhenNoOverride
com.google.firebase.crashlytics.internal.common.DataCollectionArbiterRobolectricTest ‑ testSetCrashlyticsDataCollectionEnabled_overridesOtherSettings
com.google.firebase.crashlytics.internal.common.SessionReportingCoordinatorRobolectricTest ‑ testAppExitInfoEvent_notPersistIfAnrBeforeSession
com.google.firebase.crashlytics.internal.common.SessionReportingCoordinatorRobolectricTest ‑ testAppExitInfoEvent_notPersistIfAppExitInfoNotAnrButWithinSession
com.google.firebase.crashlytics.internal.common.SessionReportingCoordinatorRobolectricTest ‑ testAppExitInfoEvent_persistIfAnrWithinSession
com.google.firebase.crashlytics.internal.common.SessionReportingCoordinatorRobolectricTest ‑ testAppExitInfoEvent_persistIfAnrWithinSession_multipleAppExitInfo
…
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ citation parsed correctly
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ image rejected
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ long reply
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ prompt blocked for safety
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ short reply
com.google.firebase.ai.DevAPIStreamingSnapshotTests ‑ stopped for recitation
com.google.firebase.ai.DevAPIUnarySnapshotTests ‑ citation returns correctly
com.google.firebase.ai.DevAPIUnarySnapshotTests ‑ invalid api key
com.google.firebase.ai.DevAPIUnarySnapshotTests ‑ long reply
com.google.firebase.ai.DevAPIUnarySnapshotTests ‑ response blocked for safety
…

♻️ This comment has been updated with latest results.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 28, 2025

Size Report 1

Affected Products

  • firebase-ai

    TypeBase (39edc7c)Merge (701d02b)Diff
    aar829 kB839 kB+9.21 kB (+1.1%)
    apk (aggressive)1.56 MB1.56 MB+4.37 kB (+0.3%)
    apk (release)9.53 MB9.54 MB+6.83 kB (+0.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/Zpi5X3dNGM.html

@thatfiredev thatfiredev marked this pull request as ready for review June 27, 2025 14:24
@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-ai:
error: Removed field com.google.firebase.ai.type.ThinkingConfig.Builder.thinkingBudget [RemovedField]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Thinking budget cannot be set in firebase AI logic android sdk
3 participants