Skip to main content

Streaming

If streaming is set when making prediction, tokens will be sent as data-only server-sent events as they become available.

Using Python/TS Library

CiniterFlow provides 2 libraries:

Python

from ciniterflow import CiniterFlow, PredictionData

def test_streaming():
client = CiniterFlow()

# Test streaming prediction
completion = client.create_prediction(
PredictionData(
chatflowId="<flow-id>",
question="Tell me a joke!",
streaming=True
)
)

# Process and print each streamed chunk
print("Streaming response:")
for chunk in completion:
# {event: "token", data: "hello"}
print(chunk)


if __name__ == "__main__":
test_streaming()

Typescript

import { CiniterFlowClient } from 'ciniterflow-sdk'

async function test_streaming() {
const client = new CiniterFlowClient({ baseUrl: 'http://localhost:3000' });

try {
// For streaming prediction
const prediction = await client.createPrediction({
chatflowId: '<flow-id>',
question: 'What is the capital of France?',
streaming: true,
});

for await (const chunk of prediction) {
// {event: "token", data: "hello"}
console.log(chunk);
}

} catch (error) {
console.error('Error:', error);
}
}

// Run streaming test
test_streaming()

cURL

curl https://localhost:3000/api/v1/predictions/{flow-id} \
-H "Content-Type: application/json" \
-d '{
"question": "Hello world!",
"streaming": true
}'
event: token
data: Once upon a time...

A prediction's event stream consists of the following event types:

EventDescription
startThe start of streaming
tokenEmitted when the prediction is streaming new token output
errorEmitted when the prediction returns an error
endEmitted when the prediction finishes
metadataAll metadata such as chatId, messageId, of the related flow. Emitted after all tokens have finished streaming, and before end event
sourceDocumentsEmitted when the flow returns sources from vector store
usedToolsEmitted when the flow used tools

Streamlit App

https://github.com/HenryHengZJ/ciniterflow-streamlit