streamObject()

Similar to textObject() but returns a stream of responses instead of waiting for completion

const agent = new Agent({...});
 
// Stream responses
const stream = await agent.streamObject({
  messages: ["What's the weather like?"],
  structuredOutput: {
    weather: {
      type: "object",
      items: {
        temperature: {
          type: "string"
        },
        humidity: {
          type: "string"
        },
        description: {
          type: "string"
        }
      }
    }
  }
});
 
// Handle the stream
  for await (const chunk of stream.textStream) {
    // Write each chunk without a newline to create a continuous stream
    process.stdout.write(`${chunk}\n`);
  }
 
// With step tracking
const stream = await agent.streamObject({
  messages: ["Send an email to john@example.com"],
  structuredOutput: {
    recipient: {
      type: "string"
    },
    emailContent: {
      type: "string"
    }
  }
  onStepFinish: (step) => {
  console.log(`Step completed: ${step}`)
  },
  maxSteps: 3
});

Key differences between textObject() and streamObject():

1. Response Format
  • textObject(): Returns complete structured response when finished
  • stream(): Returns chunks of the structured response as they’re generated
2. Use Cases
  • textObject(): Better for short structured responses or when you need the complete structured result
  • streamObject(): Better for long structured responses or when you want to show progress
3. Memory Usage
  • textObject(): Holds complete structured response in memory
  • streamObject(): Processes structured response in chunks, more memory efficient
4. Both methods share:
  • Same input parameters
  • Tool execution capabilities
  • Rate limit handling
  • Logging
  • Error handling

API Signature

Parameters

messages:

Array<string>
An array of messages to generate process

structuredOutput:

JSON schema
JSON structure for the model to use as guide in its response

onStepFinish?:

(step: string) => void;
Callback function called after each step. Receives step details as a JSON string

maxSteps?:

number
Maximum number of tool execution steps allowed. (Defaults to 5)

Returns

object?:

object
The generated structured response, (typed according to the structuredOuput)

textStream?:

AsyncIterableStream<string>
Text stream of the JSON representation of the generated object. It contains text chunks.

toolCalls?:

Array<ToolCall>
The tool calls made during the text generation process
ToolCall

toolName:

string
The name of the tool

args:

any
The arguments passed to the tool

error?:

string
Error message if the tool execution fails

MIT 2024 © Nextra.