AI.tools()
Complete API reference for the KoAI client
ValidationResult
interface ValidationResult {
valid: boolean;
errors: string[];
tokenCount: number;
estimatedCost: number;
}
Example
const tokenCount = await ai.tokenCount('Hello, world!');
console.log(`Token count: ${tokenCount}`);
const validation = ai.validateMessage('Very long message...');
if (!validation.valid) {
console.log('Validation errors:', validation.errors);
}
Event Handling
on()
Listen for events.
on(event: string, handler: Function): void
off()
Remove event listener.
off(event: string, handler: Function): void
Events
Event | Description | Handler Signature |
---|---|---|
response | New response received | (response: ChatResponse) => void |
error | Error occurred | (error: Error) => void |
tokenUsage | Token usage update | (usage: TokenUsage) => void |
toolCall | Tool was called | (toolCall: ToolCall) => void |
Example
ai.on('response', (response) => {
console.log(`Received response: ${response.content.length} chars`);
});
ai.on('error', (error) => {
console.error('AI Error:', error.message);
});
ai.on('tokenUsage', (usage) => {
console.log(`Tokens used: ${usage.totalTokens}`);
});
Error Handling
KoAIError
Base error class for all KoAI errors.
class KoAIError extends Error {
code: string;
statusCode?: number;
retryable: boolean;
metadata?: Record<string, any>;
}
Error Codes
Code | Description | Retryable |
---|---|---|
INVALID_API_KEY | API key is invalid | No |
RATE_LIMIT_EXCEEDED | Rate limit exceeded | Yes |
CONTEXT_LENGTH_EXCEEDED | Message too long | No |
MODEL_NOT_FOUND | Model not available | No |
NETWORK_ERROR | Network connectivity issue | Yes |
TIMEOUT | Request timed out | Yes |
Example
try {
const response = await ai.chat('Hello');
} catch (error) {
if (error instanceof KoAIError) {
console.log(`Error code: ${error.code}`);
console.log(`Retryable: ${error.retryable}`);
if (error.retryable) {
// Implement retry logic
await new Promise(resolve => setTimeout(resolve, 1000));
// Retry the request
}
}
}
Advanced Features
Custom Providers
Register custom AI providers.
interface CustomProvider {
name: string;
endpoint: string;
headers?: Record<string, string>;
transform?: {
request: (data: any) => any;
response: (data: any) => ChatResponse;
};
}
ai.registerProvider(customProvider);
Middleware
Add middleware for request/response processing.
ai.use(async (context, next) => {
console.log('Before request:', context.message);
const response = await next();
console.log('After response:', response.content);
return response;
});
Debugging
Enable debug mode for detailed logging.
const ai = new KoAI({
apiKey: process.env.OPENAI_API_KEY,
debug: true,
logLevel: 'verbose'
});