API ReferenceSession

Session API

The Session is the main interface for text generation with language models.

createSession

Creates a new inference session.

function createSession(args?: CreateSessionArgs): Promise<Session>

Parameters

interface CreateSessionArgs {
  models?: {
    default?: Model;
    tool_use?: Model;
    chat?: Model;
    reasoning?: Model;
  };
  engine?: 'auto' | 'webgpu' | 'wasm' | 'webnn';
  hfToken?: string;
  ctx?: number;
}
 
interface Model {
  name: string;
  quantization: 'q4' | 'q8' | 'fp16' | 'fp32';
}

Example

import { createSession } from 'agentary-js';
 
const session = await createSession({
  models: {
    chat: {
      name: 'onnx-community/gemma-3-270m-it-ONNX',
      quantization: 'q4'
    }
  },
  engine: 'webgpu'
});

Session Methods

createResponse

Generate text with streaming output.

createResponse(
  args: GenerateArgs,
  generationTask?: GenerationTask
): AsyncIterable<TokenStreamChunk>

Parameters

interface GenerateArgs {
  messages: Message[];
  model?: Model;
  max_new_tokens?: number;
  tools?: Tool[];
  temperature?: number;
  top_p?: number;
  top_k?: number;
  repetition_penalty?: number;
  stop?: string[];
  seed?: number;
  deterministic?: boolean;
}
 
type GenerationTask = 'chat' | 'tool_use' | 'reasoning';

Returns

interface TokenStreamChunk {
  token: string;
  tokenId: number;
  isFirst: boolean;
  isLast: boolean;
  ttfbMs?: number;
  tokensPerSecond?: number;
}

Example

for await (const chunk of session.createResponse({
  messages: [
    { role: 'user', content: 'Hello!' }
  ],
  temperature: 0.7,
  max_new_tokens: 200
})) {
  console.log(chunk.token);
}

dispose

Clean up session resources.

dispose(): Promise<void>

Example

await session.dispose();

on

Subscribe to lifecycle events.

on(eventType: string | '*', handler: EventHandler): UnsubscribeFn

Example

const unsubscribe = session.on('generation:token', (event) => {
  console.log(event.token);
});
 
// Later: unsubscribe()

off

Unsubscribe from events.

off(eventType: string | '*', handler: EventHandler): void

Types

Message

interface Message {
  role: 'user' | 'assistant' | 'system';
  content: string;
}

Tool

interface Tool {
  type: 'function';
  function: {
    name: string;
    description: string;
    parameters: {
      type: 'object';
      properties: Record<string, any>;
      required?: string[];
    };
    implementation?: Function;
  };
}

Model

interface Model {
  name: string;
  quantization: 'q4' | 'q8' | 'fp16' | 'fp32';
}

See Also