feat(ai): send Gemini API key as query param when listing models packages/server/src/utils/ai/select-ai-provider.ts: add "gemini" case using createOpenAICompatible with queryParams: { key: config.apiKey } and empty headers. apps/dokploy/server/api/routers/ai.ts: update "gemini" models fetch to call ${input.apiUrl}/models?key=${encodeURIComponent(input.apiKey)} with empty headers.

This commit is contained in:
HarikrishnanD
2025-10-09 13:45:47 +05:30
parent a0b550ace9
commit 9b81d15b0c
2 changed files with 14 additions and 0 deletions

View File

@@ -62,6 +62,12 @@ export const aiRouter = createTRPCRouter({
case "ollama":
response = await fetch(`${input.apiUrl}/api/tags`, { headers });
break;
case "gemini":
response = await fetch(
`${input.apiUrl}/models?key=${encodeURIComponent(input.apiKey)}`,
{ headers: {} }
);
break;
default:
if (!input.apiKey)
throw new TRPCError({

View File

@@ -16,6 +16,7 @@ export function getProviderName(apiUrl: string) {
if (apiUrl.includes("api.mistral.ai")) return "mistral";
if (apiUrl.includes(":11434") || apiUrl.includes("ollama")) return "ollama";
if (apiUrl.includes("api.deepinfra.com")) return "deepinfra";
if (apiUrl.includes("generativelanguage.googleapis.com")) return "gemini";
return "custom";
}
@@ -66,6 +67,13 @@ export function selectAIProvider(config: { apiUrl: string; apiKey: string }) {
baseURL: config.apiUrl,
apiKey: config.apiKey,
});
case "gemini":
return createOpenAICompatible({
name:"gemini",
baseURL:config.apiUrl,
queryParams:{ key: config.apiKey},
headers:{}
})
case "custom":
return createOpenAICompatible({
name: "custom",