openlit
Version:
OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications, facilitating the integration of observability into your GenAI-driven projects
46 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
describe('evals/utils', () => {
describe('formatPrompt', () => {
it('formats prompt with all fields', () => {
const result = (0, utils_1.formatPrompt)('SYSTEM', { prompt: 'p', contexts: ['c1', 'c2'], text: 't' });
expect(result).toContain('SYSTEM');
expect(result).toContain('Prompt: p');
expect(result).toContain('Contexts: c1 | c2');
expect(result).toContain('Text: t');
});
it('handles missing fields', () => {
const result = (0, utils_1.formatPrompt)('SYSTEM', { text: 't' });
expect(result).toContain('Text: t');
});
});
describe('parseLlmResponse', () => {
it('parses valid JSON', () => {
const obj = { verdict: 'yes', evaluation: 'Bias', score: 1, classification: 'age', explanation: 'reason' };
expect((0, utils_1.parseLlmResponse)(JSON.stringify(obj))).toEqual(obj);
});
it('returns fallback on invalid JSON', () => {
const originalError = console.error;
console.error = jest.fn(); // suppress error output
const result = (0, utils_1.parseLlmResponse)('not json');
expect(result.verdict).toBe('no');
expect(result.classification).toBe('none');
console.error = originalError; // restore
});
});
describe('formatCustomCategories', () => {
it('returns empty string if no categories', () => {
expect((0, utils_1.formatCustomCategories)()).toBe('');
expect((0, utils_1.formatCustomCategories)({})).toBe('');
});
it('formats categories with label', () => {
const cats = { foo: 'desc1', bar: 'desc2' };
const out = (0, utils_1.formatCustomCategories)(cats, 'Bias');
expect(out).toContain('Additional Bias Categories:');
expect(out).toContain('- foo: desc1');
expect(out).toContain('- bar: desc2');
});
});
});
//# sourceMappingURL=utils.test.js.map