refactor: update provider documentation and improve comments

This commit is contained in:
2025-05-28 13:00:25 +02:00
parent 9bf8030ad5
commit 5da20536af
10 changed files with 2658 additions and 824 deletions

View File

@@ -64,17 +64,17 @@ describe('OpenWebUIProvider', () => {
expect(info.name).toBe('OpenWebUI');
expect(info.version).toBe('1.0.0');
expect(info.supportsStreaming).toBe(true);
expect(info.maxContextLength).toBe(8192);
expect(info.maxContextLength).toBe(32768);
expect(Array.isArray(info.models)).toBe(true);
});
it('should include expected models', () => {
const info = provider.getInfo();
expect(info.models).toContain('llama3.1');
expect(info.models).toContain('mistral');
expect(info.models).toContain('codellama');
expect(info.models).toContain('gemma2');
expect(info.models).toContain('llama3.1:latest');
expect(info.models).toContain('mistral:latest');
expect(info.models).toContain('codellama:latest');
expect(info.models).toContain('gemma:latest');
});
it('should have correct capabilities', () => {
@@ -83,10 +83,12 @@ describe('OpenWebUIProvider', () => {
expect(info.capabilities).toEqual({
vision: false,
functionCalling: false,
jsonMode: false,
systemMessages: true,
localExecution: true,
customModels: true,
rag: true
reasoning: true,
codeGeneration: true,
localDeployment: true,
multiModel: true
});
});
});
@@ -104,7 +106,7 @@ describe('OpenWebUIProvider', () => {
expect(aiError).toBeInstanceOf(AIProviderError);
expect(aiError.type).toBe(AIErrorType.NETWORK);
expect(aiError.message).toContain('Cannot connect to OpenWebUI');
expect(aiError.message).toContain('Network error connecting to OpenWebUI');
});
it('should handle hostname resolution errors', () => {
@@ -114,8 +116,8 @@ describe('OpenWebUIProvider', () => {
const aiError = (provider as any).handleOpenWebUIError(mockError);
expect(aiError).toBeInstanceOf(AIProviderError);
expect(aiError.type).toBe(AIErrorType.NETWORK);
expect(aiError.message).toContain('Cannot resolve OpenWebUI hostname');
expect(aiError.type).toBe(AIErrorType.UNKNOWN);
expect(aiError.message).toContain('OpenWebUI error');
});
it('should handle 404 model not found errors', () => {
@@ -137,7 +139,8 @@ describe('OpenWebUIProvider', () => {
const aiError = (provider as any).handleOpenWebUIError(mockError);
expect(aiError).toBeInstanceOf(AIProviderError);
expect(aiError.type).toBe(AIErrorType.NETWORK);
expect(aiError.type).toBe(AIErrorType.INVALID_REQUEST);
expect(aiError.message).toContain('OpenWebUI endpoint not found');
});
it('should handle timeout errors', () => {
@@ -178,7 +181,7 @@ describe('OpenWebUIProvider', () => {
expect(aiError).toBeInstanceOf(AIProviderError);
expect(aiError.type).toBe(AIErrorType.AUTHENTICATION);
expect(aiError.message).toContain('Settings > Account');
expect(aiError.message).toContain('Authentication failed with OpenWebUI');
});
it('should handle unknown errors', () => {
@@ -220,7 +223,7 @@ describe('OpenWebUIProvider', () => {
const prompt = (provider as any).convertMessagesToPrompt(messages);
expect(prompt).toBe('System: You are helpful\n\nHuman: Hello\n\nAssistant: Hi there!');
expect(prompt).toBe('System: You are helpful\n\nHuman: Hello\n\nAssistant: Hi there!\n\nAssistant: ');
});
});
@@ -278,8 +281,8 @@ describe('OpenWebUIProvider', () => {
expect(response.usage.promptTokens).toBe(10);
expect(response.usage.completionTokens).toBe(5);
expect(response.usage.totalTokens).toBe(15);
expect(response.metadata?.created_at).toBe('2024-01-01T00:00:00Z');
expect(response.metadata?.total_duration).toBe(1000000);
expect(response.metadata?.created).toBe(1704067200000);
expect(response.metadata?.totalDuration).toBe(1000000);
});
it('should handle response without content', () => {