Akış, model tarafından metin üretilirken bu metni görüntülemenizi sağlar.
Akış, REST API üzerinden varsayılan olarak etkinleştirilirken, SDK'larda varsayılan olarak devre dışıdır.
SDK'larda akışı etkinleştirmek için stream parametresini True olarak ayarlayın.
Temel akış kavramları
- Sohbet: Kısmi asistan mesajlarını akış olarak alın. Her parça, mesajlarınız ulaştıkça görüntüleyebilmeniz için
contentalanını içerir. - Düşünme: Düşünme yeteneğine sahip modeller, her parçada normal içerik ile birlikte bir
thinkingalanı yayınlar. Akış parçalarında bu alanı tespit ederek, sonuç ulaşmadan önce akıl yürütme izlerini gösterebilir veya gizleyebilirsiniz. - Araç çağırma: Her parçada akış olarak gelen
tool_callsalanını izleyin, istenen aracı çalıştırın ve araç çıktılarını tekrar konuşmaya ekleyin.
Akış parçalarını işleme
Not
Konuşma geçmişini korumak için kısmi alanların birikmesi gerekir. Bu, özellikle araç çağırma işlemlerinde çok önemlidir; çünkü modelden gelen düşünme, araç çağırma ve çalıştırılan aracın sonucu bir sonraki istekte modele tekrar gönderilmelidir.
Python
```python
from ollama import chat
stream = chat(
model='qwen3',
messages=[{'role': 'user', 'content': 'What is 17 × 23?'}],
stream=True,
)
in_thinking = False
content = ''
thinking = ''
for chunk in stream:
if chunk.message.thinking:
if not in_thinking:
in_thinking = True
print('Thinking:\n', end='', flush=True)
print(chunk.message.thinking, end='', flush=True)
# kısmi düşünmeyi biriktir
thinking += chunk.message.thinking
elif chunk.message.content:
if in_thinking:
in_thinking = False
print('\n\nAnswer:\n', end='', flush=True)
print(chunk.message.content, end='', flush=True)
# kısmi içeriği biriktir
content += chunk.message.content
# bir sonraki istek için mesajlara birikmiş alanları ekle
new_messages = [{ role: 'assistant', thinking: thinking, content: content }]
```
JavaScript
```javascript
import ollama from 'ollama'
async function main() {
const stream = await ollama.chat({
model: 'qwen3',
messages: [{ role: 'user', content: 'What is 17 × 23?' }],
stream: true,
})
let inThinking = false
let content = ''
let thinking = ''
for await (const chunk of stream) {
if (chunk.message.thinking) {
if (!inThinking) {
inThinking = true
process.stdout.write('Thinking:\n')
}
process.stdout.write(chunk.message.thinking)
// kısmi düşünmeyi biriktir
thinking += chunk.message.thinking
} else if (chunk.message.content) {
if (inThinking) {
inThinking = false
process.stdout.write('\n\nAnswer:\n')
}
process.stdout.write(chunk.message.content)
// kısmi içeriği biriktir
content += chunk.message.content
}
}
// bir sonraki istek için mesajlara birikmiş alanları ekle
new_messages = [{ role: 'assistant', thinking: thinking, content: content }]
}
main().catch(console.error)
```