@unified-llm/core
Version:
Unified LLM interface (in-memory).
39 lines • 1.72 kB
JavaScript
export class ValidationError extends Error {
constructor(message) {
super(message);
this.name = 'ValidationError';
}
}
export function validateChatRequest(request) {
if (!request || typeof request !== 'object') {
throw new ValidationError('Request must be a valid object');
}
if (!request.messages || !Array.isArray(request.messages)) {
throw new ValidationError('Messages must be an array in the request');
}
if (request.messages.length === 0) {
throw new ValidationError('Messages array cannot be empty');
}
request.messages.forEach((msg, index) => {
validateMessage(msg, index);
});
}
export function validateMessage(message, index) {
if (!message || typeof message !== 'object') {
throw new ValidationError(`Message at index ${index} must be a valid object`);
}
const validRoles = ['system', 'user', 'assistant', 'tool', 'function', 'developer'];
if (!message.role || !validRoles.includes(message.role)) {
throw new ValidationError(`Message at index ${index} has invalid role: ${message.role}. Valid roles are: ${validRoles.join(', ')}`);
}
if (message.content === undefined || message.content === null) {
throw new ValidationError(`Message at index ${index} must have content`);
}
if (typeof message.content === 'string' && message.content.trim() === '') {
throw new ValidationError(`Message at index ${index} cannot have empty content`);
}
if (Array.isArray(message.content) && message.content.length === 0) {
throw new ValidationError(`Message at index ${index} cannot have empty content array`);
}
}
//# sourceMappingURL=validation.js.map