具备思考能力的模型会输出一个 thinking 字段,该字段将模型的思考过程与最终答案分开。您可以使用此功能来审计模型的步骤、在用户界面中展示模型的思考过程,或者在仅需要最终回复时完全隐藏思考过程。
รุ่นที่รองรับ
- Qwen 3
- GPT-OSS (ใช้ระดับ
think:low,medium,high— ไม่สามารถปิดกระบวนการคิดได้อย่างสมบูรณ์) - DeepSeek-v3.1
- DeepSeek R1
- เรียกดูรุ่นล่าสุดที่เพิ่มเข้ามาได้ที่ thinking models
เปิดใช้งานการคิดในการเรียก API
กำหนดฟิลด์ think ในคำขอ chat หรือ generate รุ่นส่วนใหญ่รับค่า boolean (true/false) หรือระดับ (low, medium, high, max) โดย max จะขอระดับการคิดสูงสุด สำหรับ GPT-OSS ต้องระบุค่าเป็น low, medium หรือ high เพื่อปรับความยาวของกระบวนการคิด ฟิลด์ message.thinking (สำหรับ chat endpoint) หรือ thinking (สำหรับ generate endpoint) จะเก็บกระบวนการคิด ในขณะที่ message.content / response จะเก็บคำตอบสุดท้าย
cURL
```shell
curl http://localhost:11434/api/chat -d '{
"model": "qwen3",
"messages": [{
"role": "user",
"content": "How many letter r are in strawberry?"
}],
"think": true,
"stream": false
}'
```
Python
```python
from ollama import chat
response = chat(
model='qwen3',
messages=[{'role': 'user', 'content': 'How many letter r are in strawberry?'}],
think=True,
stream=False,
)
print('Thinking:\n', response.message.thinking)
print('Answer:\n', response.message.content)
```
JavaScript
```javascript
import ollama from 'ollama'
const response = await ollama.chat({
model: 'deepseek-r1',
messages: [{ role: 'user', content: 'How many letter r are in strawberry?' }],
think: true,
stream: false,
})
console.log('Thinking:\n', response.message.thinking)
console.log('Answer:\n', response.message.content)
```
Note
GPT-OSS ต้องกำหนดค่า think เป็น "low", "medium" หรือ "high" การส่งค่า true/false จะถูกเพิกเฉยสำหรับรุ่นนี้
สตรีมกระบวนการคิด
สตรีมกระบวนการคิดจะมีการสลับใช้โทเค็นของการคิดก่อนโทเค็นของคำตอบ ตรวจสอบชิ้นข้อมูล thinking แรกเพื่อแสดงส่วน "กระบวนการคิด" จากนั้นเปลี่ยนไปแสดงคำตอบสุดท้ายเมื่อ message.content เข้ามา
Python
```python
from ollama import chat
stream = chat(
model='qwen3',
messages=[{'role': 'user', 'content': 'What is 17 × 23?'}],
think=True,
stream=True,
)
in_thinking = False
for chunk in stream:
if chunk.message.thinking and not in_thinking:
in_thinking = True
print('Thinking:\n', end='')
if chunk.message.thinking:
print(chunk.message.thinking, end='')
elif chunk.message.content:
if in_thinking:
print('\n\nAnswer:\n', end='')
in_thinking = False
print(chunk.message.content, end='')
```
JavaScript
```javascript
import ollama from 'ollama'
async function main() {
const stream = await ollama.chat({
model: 'qwen3',
messages: [{ role: 'user', content: 'What is 17 × 23?' }],
think: true,
stream: true,
})
let inThinking = false
for await (const chunk of stream) {
if (chunk.message.thinking && !inThinking) {
inThinking = true
process.stdout.write('Thinking:\n')
}
if (chunk.message.thinking) {
process.stdout.write(chunk.message.thinking)
} else if (chunk.message.content) {
if (inThinking) {
process.stdout.write('\n\nAnswer:\n')
inThinking = false
}
process.stdout.write(chunk.message.content)
}
}
}
main()
```
ข้อมูลอ้างอิงด่วนสำหรับ CLI
- เปิดใช้งานการคิดสำหรับการรันครั้งเดียว:
ollama run deepseek-r1 --think "Where should I visit in Lisbon?" - ปิดการคิด:
ollama run deepseek-r1 --think=false "Summarize this article" - ซ่อนกระบวนการคิดในขณะที่ยังใช้รุ่นที่มีความสามารถในการคิด:
ollama run deepseek-r1 --hidethinking "Is 9.9 bigger or 9.11?" - ภายในเซสชันแบบโต้ตอบ ใช้คำสั่ง
/set thinkหรือ/set nothinkเพื่อสลับการเปิด/ปิด - GPT-OSS รองรับเฉพาะระดับเท่านั้น:
ollama run gpt-oss --think=low "Draft a headline"(แทนที่lowด้วยmediumหรือhighตามต้องการ)
Note
การคิดถูกเปิดใช้งานเป็นค่าเริ่มต้นใน CLI และ API สำหรับรุ่นที่รองรับ