mirror of
https://github.com/enricoros/big-AGI.git
synced 2026-05-10 21:50:14 -07:00
AIX: server: improve listModel errors
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import * as z from 'zod/v4';
|
||||
import { TRPCError } from '@trpc/server';
|
||||
|
||||
import { createTRPCRouter, publicProcedure } from '~/server/trpc/trpc.server';
|
||||
import { env } from '~/server/env';
|
||||
@@ -131,7 +132,7 @@ export function anthropicAccess(access: AnthropicAccessSchema, apiPath: string,
|
||||
|
||||
// break for the missing key only on the default host
|
||||
if (!anthropicKey && !(access.anthropicHost || env.ANTHROPIC_API_HOST))
|
||||
throw new Error('Missing Anthropic API Key. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing Anthropic API Key. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
// API host
|
||||
let anthropicHost = fixupHost(access.anthropicHost || env.ANTHROPIC_API_HOST || DEFAULT_ANTHROPIC_HOST, apiPath);
|
||||
@@ -141,7 +142,7 @@ export function anthropicAccess(access: AnthropicAccessSchema, apiPath: string,
|
||||
const heliKey = access.heliconeKey || env.HELICONE_API_KEY || false;
|
||||
if (heliKey) {
|
||||
if (!anthropicHost.includes(DEFAULT_ANTHROPIC_HOST) && !anthropicHost.includes(DEFAULT_HELICONE_ANTHROPIC_HOST))
|
||||
throw new Error(`The Helicone Anthropic Key has been provided, but the host is set to custom. Please fix it in the Models Setup page.`);
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'The Helicone Anthropic Key has been provided, but the host is set to custom. Please fix it in the Models Setup page.' });
|
||||
anthropicHost = `https://${DEFAULT_HELICONE_ANTHROPIC_HOST}`;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as z from 'zod/v4';
|
||||
import { TRPCError } from '@trpc/server';
|
||||
import { env } from '~/server/env';
|
||||
|
||||
import packageJson from '../../../../../package.json';
|
||||
@@ -36,7 +37,7 @@ export function geminiAccess(access: GeminiAccessSchema, modelRefId: string | nu
|
||||
// update model-dependent paths
|
||||
if (apiPath.includes('{model=models/*}')) {
|
||||
if (!modelRefId)
|
||||
throw new Error(`geminiAccess: modelRefId is required for ${apiPath}`);
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: `geminiAccess: modelRefId is required for ${apiPath}` });
|
||||
apiPath = apiPath.replace('{model=models/*}', modelRefId);
|
||||
}
|
||||
|
||||
|
||||
@@ -542,7 +542,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
alibabaOaiKey = getRandomKeyFromMultiKey(alibabaOaiKey);
|
||||
|
||||
if (!alibabaOaiKey || !alibabaOaiHost)
|
||||
throw new Error('Missing Alibaba API Key. Add it on the UI or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing Alibaba API Key. Add it on the UI or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -567,7 +567,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
deepseekKey = getRandomKeyFromMultiKey(deepseekKey);
|
||||
|
||||
if (!deepseekKey || !deepseekHost)
|
||||
throw new Error('Missing Deepseek API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing Deepseek API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -585,7 +585,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
let oaiHost = fixupHost(access.oaiHost || env.OPENAI_API_HOST || DEFAULT_OPENAI_HOST, apiPath);
|
||||
// warn if no key - only for default (non-overridden) hosts
|
||||
if (!oaiKey && oaiHost.indexOf(DEFAULT_OPENAI_HOST) !== -1)
|
||||
throw new Error('Missing OpenAI API Key. Add it on the UI or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing OpenAI API Key. Add it on the UI or server side (your deployment).' });
|
||||
|
||||
// [Helicone]
|
||||
// We don't change the host (as we do on Anthropic's), as we expect the user to have a custom host.
|
||||
@@ -607,11 +607,11 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
|
||||
// The expected path should be: /v1/<ACCOUNT_TAG>/<GATEWAY_URL_SLUG>/<PROVIDER_ENDPOINT>
|
||||
if (pathSegments.length < 3 || pathSegments.length > 4 || pathSegments[0] !== 'v1')
|
||||
throw new Error('Cloudflare AI Gateway API Host is not valid. Please check the API Host field in the Models Setup page.');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Cloudflare AI Gateway API Host is not valid. Please check the API Host field in the Models Setup page.' });
|
||||
|
||||
const [_v1, accountTag, gatewayName, provider] = pathSegments;
|
||||
if (provider && provider !== 'openai')
|
||||
throw new Error('Cloudflare AI Gateway only supports OpenAI as a provider.');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Cloudflare AI Gateway only supports OpenAI as a provider.' });
|
||||
|
||||
if (apiPath.startsWith('/v1'))
|
||||
apiPath = apiPath.replace('/v1', '');
|
||||
@@ -638,7 +638,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
groqKey = getRandomKeyFromMultiKey(groqKey);
|
||||
|
||||
if (!groqKey)
|
||||
throw new Error('Missing Groq API Key. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing Groq API Key. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -683,7 +683,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
case 'openpipe':
|
||||
const openPipeKey = access.oaiKey || env.OPENPIPE_API_KEY || '';
|
||||
if (!openPipeKey)
|
||||
throw new Error('Missing OpenPipe API Key or Host. Add it on the UI or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing OpenPipe API Key or Host. Add it on the UI or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -703,7 +703,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
orKey = getRandomKeyFromMultiKey(orKey);
|
||||
|
||||
if (!orKey || !orHost)
|
||||
throw new Error('Missing OpenRouter API Key or Host. Add it on the UI or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing OpenRouter API Key or Host. Add it on the UI or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -723,7 +723,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
perplexityKey = getRandomKeyFromMultiKey(perplexityKey);
|
||||
|
||||
if (!perplexityKey || !perplexityHost)
|
||||
throw new Error('Missing Perplexity API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing Perplexity API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
if (apiPath.startsWith('/v1'))
|
||||
apiPath = apiPath.replace('/v1', '');
|
||||
@@ -746,7 +746,7 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
togetherKey = getRandomKeyFromMultiKey(togetherKey);
|
||||
|
||||
if (!togetherKey || !togetherHost)
|
||||
throw new Error('Missing TogetherAI API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing TogetherAI API Key or Host. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
@@ -765,7 +765,8 @@ export function openAIAccess(access: OpenAIAccessSchema, modelRefId: string | nu
|
||||
xaiKey = getRandomKeyFromMultiKey(xaiKey);
|
||||
|
||||
if (!xaiKey)
|
||||
throw new Error('Missing xAI API Key. Add it on the UI (Models Setup) or server side (your deployment).');
|
||||
throw new TRPCError({ code: 'BAD_REQUEST', message: 'Missing xAI API Key. Add it on the UI (Models Setup) or server side (your deployment).' });
|
||||
|
||||
return {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
|
||||
Reference in New Issue
Block a user