Output

Control agent response formats

Agents can return structured data in specific formats – JSON, lists, or custom schemas.

Diagram

Structured Output

๐Ÿ‘ค User

๐Ÿค– Agent

๐Ÿ“‹ Schema

๐Ÿ“Š Formatted

Quick Start

  1. Simple Usage
    typescript
    import { Agent } from 'praisonai';
    
    const agent = new Agent({
      instructions: 'Extract contact information as JSON.',
      llm: 'gpt-4o-mini',
      outputSchema: {
        type: 'object',
        properties: {
          name: { type: 'string' },
          email: { type: 'string' },
          phone: { type: 'string' }
        },
        required: ['name']
      }
    });
    
    const result = await agent.start('John Smith, john@example.com, 555-1234');
    // {"name":"John Smith","email":"john@example.com","phone":"555-1234"}
  2. With Configuration

    outputSchema takes a JSON Schema object. See Structured Output for the full API.

    typescript
    const agent = new Agent({
      instructions: 'Extract product info',
      llm: 'openai/gpt-4o-mini',
      outputSchema: {
        type: 'object',
        properties: {
          name: { type: 'string' },
          price: { type: 'number' },
          inStock: { type: 'boolean' }
        },
        required: ['name', 'price', 'inStock']
      }
    });

User Interaction Flow

Diagram
SchemaAgentUserSchemaAgentUser“Extract data from…”Validate formatStructured data{formatted JSON}

Schema-Constrained Output

Pass a JSON Schema object to outputSchema and the agent returns a JSON string that matches it.

outputSchema takes a JSON Schema object (Record<string, any>). Pass a full JSON Schema for reliable structured output.

typescript
import { Agent } from 'praisonai';

const agent = new Agent({
  instructions: 'Extract person information from text.',
  llm: 'openai/gpt-4o-mini',
  outputSchema: {
    type: 'object',
    properties: {
      name: { type: 'string' },
      age: { type: 'number' },
      city: { type: 'string' }
    },
    required: ['name', 'age', 'city']
  },
  outputSchemaName: 'Person'  // names the schema in the response_format payload
});

const result = await agent.chat('John is 30 years old and lives in Paris');
// '{"name":"John","age":30,"city":"Paris"}'

agent.chat() returns the raw JSON string โ€” parse it with JSON.parse(result).


Schema-constrained output (outputSchema)

outputSchema takes a JSON Schema object. When set, the agent sends it to OpenAI as response_format: { type: 'json_schema', json_schema: { name, schema } }, so the model is constrained to return matching JSON โ€” the TypeScript parity of Python’s output_json / output_pydantic.

typescript
import { Agent } from 'praisonai';

const agent = new Agent({
  instructions: 'Extract product info',
  outputSchema: {
    type: 'object',
    properties: {
      name: { type: 'string' },
      price: { type: 'number' },
      inStock: { type: 'boolean' },
    },
    required: ['name', 'price', 'inStock'],
  },
  outputSchemaName: 'product',   // default: "response"
});

const json = await agent.chat('The Widget costs $9.99 and is in stock');
// '{"name":"Widget","price":9.99,"inStock":true}'

outputSchemaName names the schema in the response_format payload (default "response").


Output Formats

FormatUse Case
jsonStructured data extraction
markdownFormatted documents
textPlain text response
outputSchemaJSON-Schema-constrained output (works on every provider)

API Reference

OutputConfig

Output configuration options


Best Practices

Use schemas for consistency

A JSON Schema ensures the agent returns the same structure every time.

Keep schemas simple

Start with basic types. Deeply nested schemas can confuse some models.

Mark required fields

List the fields you always expect in required so they aren’t dropped.

Name your schema

Set outputSchemaName to label the schema in OpenAI’s response_format payload. Defaults to "response".

Works on every provider

outputSchema returns matching JSON on every supported provider. Switching the llm string from openai/... to anthropic/... or google/... does not change your schema code โ€” see Structured Output โ†’ Provider support.


Related