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): UnsubscribeFnExample
const unsubscribe = session.on('generation:token', (event) => {
console.log(event.token);
});
// Later: unsubscribe()off
Unsubscribe from events.
off(eventType: string | '*', handler: EventHandler): voidTypes
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';
}