UNPKG

ai

Version:

AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript

109 lines (91 loc) 2.87 kB
--- title: streamToResponse description: Learn to use streamToResponse helper function in your application. --- # `streamToResponse` <Note type="warning"> `streamToResponse` has been removed in AI SDK 4.0. Use `pipeDataStreamToResponse` from [streamText](/docs/reference/ai-sdk-core/stream-text) instead. </Note> `streamToResponse` pipes a data stream to a Node.js `ServerResponse` object and sets the status code and headers. This is useful to create data stream responses in environments that use `ServerResponse` objects, such as Node.js HTTP servers. The status code and headers can be configured using the `options` parameter. By default, the status code is set to 200 and the Content-Type header is set to `text/plain; charset=utf-8`. ## Import <Snippet text={`import { streamToResponse } from "ai"`} prompt={false} /> ## Example You can e.g. use `streamToResponse` to pipe a data stream to a Node.js HTTP server response: ```ts import { StreamData, streamText, streamToResponse } from 'ai'; __PROVIDER_IMPORT__; import { createServer } from 'http'; createServer(async (req, res) => { const result = streamText({ model: __MODEL__, prompt: 'What is the weather in San Francisco?', }); // use stream data const data = new StreamData(); data.append('initialized call'); streamToResponse( result.toAIStream({ onFinal() { data.append('call completed'); data.close(); }, }), res, {}, data, ); }).listen(8080); ``` ## API Signature ### Parameters <PropertiesTable content={[ { name: 'stream', type: 'ReadableStream', description: 'The Web Stream to pipe to the response. It can be the return value of OpenAIStream, HuggingFaceStream, AnthropicStream, or an AIStream instance.', }, { name: 'response', type: 'ServerResponse', description: 'The Node.js ServerResponse object to pipe the stream to. This is usually the second argument of a Node.js HTTP request handler.', }, { name: 'options', type: 'Options', description: 'Configure the response', properties: [ { type: 'Options', parameters: [ { name: 'status', type: 'number', description: 'The status code to set on the response. Defaults to `200`.', }, { name: 'headers', type: 'Record<string, string>', description: "Additional headers to set on the response. Defaults to `{ 'Content-Type': 'text/plain; charset=utf-8' }`.", }, ], }, ], }, { name: 'data', type: 'StreamData', description: 'StreamData object for forwarding additional data to the client.', }, ]} />