Skip to content

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ı

  1. 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 content alanını içerir.
  2. Düşünme: Düşünme yeteneğine sahip modeller, her parçada normal içerik ile birlikte bir thinking alanı yayınlar. Akış parçalarında bu alanı tespit ederek, sonuç ulaşmadan önce akıl yürütme izlerini gösterebilir veya gizleyebilirsiniz.
  3. Araç çağırma: Her parçada akış olarak gelen tool_calls alanı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)
```