Skip to content

Commit f66affa

Browse files
committed
honor explicit thinking_enable=False on Ollama and Gemini
1 parent 68f643d commit f66affa

5 files changed

Lines changed: 47 additions & 18 deletions

File tree

scripts/model_examples/openai_chat_call.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ async def example_simple_call() -> None:
3434
stream=True,
3535
context_size=200_000,
3636
parameters=OpenAIChatModel.Parameters(
37+
thinking_enable=True,
3738
reasoning_effort="low",
3839
),
3940
)
@@ -80,6 +81,7 @@ async def example_tool_call() -> None:
8081
stream=True,
8182
context_size=200_000,
8283
parameters=OpenAIChatModel.Parameters(
84+
thinking_enable=True,
8385
reasoning_effort="low",
8486
),
8587
)
@@ -155,6 +157,7 @@ async def example_structured_output() -> None:
155157
stream=True,
156158
context_size=200_000,
157159
parameters=OpenAIChatModel.Parameters(
160+
thinking_enable=True,
158161
reasoning_effort="low",
159162
),
160163
)

scripts/model_examples/openai_response_call.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ async def example_simple_call() -> None:
3838
model="o1",
3939
stream=True,
4040
context_size=200_000,
41-
parameters=OpenAIResponseModel.Parameters(reasoning_effort="low"),
41+
parameters=OpenAIResponseModel.Parameters(
42+
thinking_enable=True,
43+
reasoning_effort="low",
44+
),
4245
)
4346

4447
msgs = [
@@ -82,7 +85,10 @@ async def example_tool_call() -> None:
8285
model="o1",
8386
stream=True,
8487
context_size=200_000,
85-
parameters=OpenAIResponseModel.Parameters(reasoning_effort="low"),
88+
parameters=OpenAIResponseModel.Parameters(
89+
thinking_enable=True,
90+
reasoning_effort="low",
91+
),
8692
)
8793

8894
msgs = [
@@ -158,7 +164,10 @@ async def example_structured_output() -> None:
158164
model="o1",
159165
stream=True,
160166
context_size=200_000,
161-
parameters=OpenAIResponseModel.Parameters(reasoning_effort="low"),
167+
parameters=OpenAIResponseModel.Parameters(
168+
thinking_enable=True,
169+
reasoning_effort="low",
170+
),
162171
)
163172

164173
msgs = [

scripts/model_examples/xai_call.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ async def example_simple_call() -> None:
3838
model="grok-3-mini",
3939
stream=True,
4040
context_size=131_072,
41-
parameters=XAIChatModel.Parameters(reasoning_effort="low"),
41+
parameters=XAIChatModel.Parameters(
42+
thinking_enable=True,
43+
reasoning_effort="low",
44+
),
4245
)
4346

4447
msgs = [
@@ -157,7 +160,10 @@ async def example_structured_output() -> None:
157160
model="grok-3-mini",
158161
stream=True,
159162
context_size=131_072,
160-
parameters=XAIChatModel.Parameters(reasoning_effort="low"),
163+
parameters=XAIChatModel.Parameters(
164+
thinking_enable=True,
165+
reasoning_effort="low",
166+
),
161167
)
162168

163169
msgs = [

src/agentscope/model/_gemini/_model.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,13 @@ class Parameters(BaseModel):
8989
gt=0,
9090
)
9191

92-
thinking_enable: bool = Field(
93-
default=False,
92+
thinking_enable: bool | None = Field(
93+
default=None,
9494
title="Thinking",
95-
description="Whether to enable thinking output.",
95+
description="Whether to enable thinking output."
96+
" ``None`` keeps the Gemini model's own default"
97+
" (2.5 Pro/Flash think by default);"
98+
" ``True``/``False`` explicitly turns thinking on/off.",
9699
)
97100

98101
thinking_budget: int | None = Field(
@@ -234,11 +237,17 @@ async def _call_api(
234237
if self.parameters.top_p is not None:
235238
config["top_p"] = self.parameters.top_p
236239

237-
if self.parameters.thinking_enable:
238-
config["thinking_config"] = {
239-
"include_thoughts": True,
240-
"thinking_budget": self.parameters.thinking_budget or 1024,
241-
}
240+
if self.parameters.thinking_enable is not None:
241+
if self.parameters.thinking_enable:
242+
config["thinking_config"] = {
243+
"include_thoughts": True,
244+
"thinking_budget": self.parameters.thinking_budget or 1024,
245+
}
246+
else:
247+
config["thinking_config"] = {
248+
"include_thoughts": False,
249+
"thinking_budget": 0,
250+
}
242251

243252
fmt_tools, fmt_tool_choice = self._format_tools(tools, tool_choice)
244253

src/agentscope/model/_ollama/_model.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ class Parameters(BaseModel):
3535
gt=0,
3636
)
3737

38-
thinking_enable: bool = Field(
39-
default=False,
38+
thinking_enable: bool | None = Field(
39+
default=None,
4040
title="Thinking",
4141
description="Whether to enable thinking"
42-
" (for models like qwen3, deepseek-r1).",
42+
" (for models like qwen3, deepseek-r1)."
43+
" ``None`` keeps the Ollama model's own default;"
44+
" ``True``/``False`` explicitly turns thinking on/off.",
4345
)
4446

4547
temperature: float | None = Field(
@@ -175,8 +177,8 @@ async def _call_api(
175177
if options:
176178
kwargs["options"] = options
177179

178-
if self.parameters.thinking_enable:
179-
kwargs["think"] = True
180+
if self.parameters.thinking_enable is not None:
181+
kwargs["think"] = self.parameters.thinking_enable
180182

181183
kwargs.update(generate_kwargs)
182184

0 commit comments

Comments
 (0)