स्ट्रीमिंग आपको मॉडल द्वारा उत्पन्न होते हुए टेक्स्ट को तुरंत प्रदर्शित करने की अनुमति देता है।
REST API के माध्यम से स्ट्रीमिंग डिफॉल्ट रूप से सक्षम होती है, लेकिन SDKs में डिफॉल्ट रूप से अक्षम होती है।
SDKs में स्ट्रीमिंग सक्षम करने के लिए, stream पैरामीटर को True पर सेट करें।
प्रमुख स्ट्रीमिंग अवधारणाएँ
- चैटिंग: आंशिक सहायक संदेशों को स्ट्रीम करें। प्रत्येक चंक में
contentशामिल होता है ताकि आप संदेशों के आने के साथ ही उन्हें रेंडर कर सकें। - थिंकिंग: सोचने की क्षमता वाले मॉडल प्रत्येक चंक में नियमित कंटेंट के साथ-साथ
thinkingफ़ील्ड भी भेजते हैं। अंतिम उत्तर आने से पहले तर्क के निशान को दिखाने या छिपाने के लिए स्ट्रीमिंग चंकों में इस फ़ील्ड का पता लगाएं। - टूल कॉलिंग: प्रत्येक चंक में स्ट्रीम किए गए
tool_callsकी निगरानी करें, अनुरोधित टूल को निष्पादित करें, और टूल के आउटपुट को वापस बातचीत में जोड़ें।
स्ट्रीम किए गए चंकों को संभालना
नोट
बातचीत का इतिहास बनाए रखने के लिए आंशिक फ़ील्डों को एकत्र करना आवश्यक है। यह टूल कॉलिंग के लिए विशेष रूप से महत्वपूर्ण है, जहां मॉडल से सोच (thinking), टूल कॉल और निष्पादित टूल का परिणाम अगले अनुरोध में वापस मॉडल को भेजा जाना चाहिए।
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)
# आंशिक थिंकिंग को एकत्र करें
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)
# आंशिक कंटेंट को एकत्र करें
content += chunk.message.content
# अगले अनुरोध के लिए संदेशों में एकत्रित फ़ील्डों को जोड़ें
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)
// आंशिक थिंकिंग को एकत्र करें
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)
// आंशिक कंटेंट को एकत्र करें
content += chunk.message.content
}
}
// अगले अनुरोध के लिए संदेशों में एकत्रित फ़ील्डों को जोड़ें
new_messages = [{ role: 'assistant', thinking: thinking, content: content }]
}
main().catch(console.error)
```