feat: add clear error message when llama-server not running
This commit is contained in:
@@ -81,4 +81,16 @@ describe('LlamaCppClient', () => {
|
||||
usage: { inputTokens: 5, outputTokens: 2 },
|
||||
});
|
||||
});
|
||||
|
||||
it('throws clear error when server not running', async () => {
|
||||
mockFetch.mockRejectedValue(new TypeError('fetch failed'));
|
||||
|
||||
const client = new LlamaCppClient({
|
||||
endpoint: 'http://localhost:8080',
|
||||
});
|
||||
|
||||
await expect(client.chat({
|
||||
messages: [{ role: 'user', content: 'Hello' }],
|
||||
})).rejects.toThrow('llama-server not running at http://localhost:8080');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -48,14 +48,22 @@ export class LlamaCppClient implements ModelClient {
|
||||
headers['Authorization'] = `Bearer ${this.authToken}`;
|
||||
}
|
||||
|
||||
const response = await fetch(`${this.endpoint}/v1/chat/completions`, {
|
||||
method: 'POST',
|
||||
headers,
|
||||
body: JSON.stringify({
|
||||
messages,
|
||||
max_tokens: request.maxTokens ?? 2048,
|
||||
}),
|
||||
});
|
||||
let response: Response;
|
||||
try {
|
||||
response = await fetch(`${this.endpoint}/v1/chat/completions`, {
|
||||
method: 'POST',
|
||||
headers,
|
||||
body: JSON.stringify({
|
||||
messages,
|
||||
max_tokens: request.maxTokens ?? 2048,
|
||||
}),
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof TypeError && error.message.includes('fetch failed')) {
|
||||
throw new Error(`llama-server not running at ${this.endpoint}`);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
|
||||
if (!response.ok) {
|
||||
const text = await response.text();
|
||||
|
||||
Reference in New Issue
Block a user