Installation
Copy
npm install classer-ai
Quick Start
Copy
import { classify } from "classer-ai";
// Uses CLASSER_API_KEY environment variable
const result = await classify({
source: "I can't log in",
labels: ["billing", "technical", "sales"]
});
console.log(result.label); // "technical"
console.log(result.confidence); // 0.94
Configuration
Environment variable (recommended)
Copy
export CLASSER_API_KEY=your-api-key
Client instance
Copy
import { ClasserClient } from "classer-ai";
const client = new ClasserClient({
apiKey: "your-api-key",
baseUrl: "https://api.classer.ai" // optional
});
Methods
classify()
Single-label classification.Copy
const result = await classify({
source: "Text to classify",
labels: ["label1", "label2", "label3"],
descriptions: { label1: "Description" }, // optional
model: "model-name" // optional
});
// Response
result.label // string
result.confidence // number
result.latency_ms // number
result.usage // Usage | undefined
tag()
Multi-label classification.Copy
const result = await tag({
source: "Text to tag",
labels: ["label1", "label2", "label3"],
descriptions: { label1: "Description" }, // optional
threshold: 0.3, // optional, default 0.3
model: "model-name" // optional
});
// Response
result.tags // string[]
result.confidences // number[]
result.latency_ms // number
result.usage // Usage | undefined
match()
Semantic similarity scoring.Copy
const result = await match({
source: "Document text",
query: "Search query",
model: "model-name" // optional
});
// Response
result.score // number
result.latency_ms // number
result.usage // Usage | undefined
score()
Attribute scoring.Copy
const result = await score({
source: "Text to score",
attribute: "urgency",
description: "How urgent is this", // optional
model: "model-name" // optional
});
// Response
result.score // number
result.latency_ms // number
result.usage // Usage | undefined
Error Handling
Copy
import { ClasserClient, ClasserError } from "classer-ai";
const client = new ClasserClient({ apiKey: "your-key" });
try {
const result = await client.classify({
source: "Hello",
labels: ["greeting", "question"]
});
} catch (error) {
if (error instanceof ClasserError) {
console.log(`Error: ${error.message}`);
console.log(`Status: ${error.status}`);
console.log(`Detail: ${error.detail}`);
}
}
Types
ClassifyRequest
Copy
interface ClassifyRequest {
source: string;
labels: string[];
descriptions?: Record<string, string>;
model?: string;
}
ClassifyResponse
Copy
interface ClassifyResponse {
label: string;
confidence: number;
latency_ms: number;
usage?: Usage;
}
TagRequest
Copy
interface TagRequest {
source: string;
labels: string[];
descriptions?: Record<string, string>;
threshold?: number;
model?: string;
}
TagResponse
Copy
interface TagResponse {
tags: string[];
confidences: number[];
latency_ms: number;
usage?: Usage;
}
MatchRequest
Copy
interface MatchRequest {
source: string;
query: string;
model?: string;
}
MatchResponse
Copy
interface MatchResponse {
score: number;
latency_ms: number;
usage?: Usage;
}
ScoreRequest
Copy
interface ScoreRequest {
source: string;
attribute: string;
description?: string;
model?: string;
}
ScoreResponse
Copy
interface ScoreResponse {
score: number;
latency_ms: number;
usage?: Usage;
}
Usage
Copy
interface Usage {
prompt_tokens: number;
completion_tokens: number;
total_tokens: number;
}
Requirements
- Node.js 18+ or modern browser with fetch support