mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 13:25:18 +00:00
feat: more llm provider options (google, mistral) (#28)
* feat: add google provider * fix: default for google model * feat: multiple providers * fix: defaults from env for login form * fix: add mistral to env files * chore: delete unused code * chore: revert database url to original * fix: render default value for api key from env on server * fix: type errors during compilation --------- Co-authored-by: Vasily Zubarev <me@vas3k.ru>
This commit is contained in:
@@ -1,12 +1,51 @@
|
||||
import { prisma } from "@/lib/db"
|
||||
import { PROVIDERS } from "@/lib/llm-providers"
|
||||
import { cache } from "react"
|
||||
import { LLMProvider } from "@/ai/providers/llmProvider"
|
||||
|
||||
export type SettingsMap = Record<string, string>
|
||||
|
||||
/**
|
||||
* Helper to extract LLM provider settings from SettingsMap.
|
||||
*/
|
||||
export function getLLMSettings(settings: SettingsMap) {
|
||||
const priorities = (settings.llm_providers || "openai,google,mistral").split(",").map(p => p.trim()).filter(Boolean)
|
||||
|
||||
const providers = priorities.map((provider) => {
|
||||
if (provider === "openai") {
|
||||
return {
|
||||
provider: provider as LLMProvider,
|
||||
apiKey: settings.openai_api_key || "",
|
||||
model: settings.openai_model_name || PROVIDERS[0]['defaultModelName'],
|
||||
}
|
||||
}
|
||||
if (provider === "google") {
|
||||
return {
|
||||
provider: provider as LLMProvider,
|
||||
apiKey: settings.google_api_key || "",
|
||||
model: settings.google_model_name || PROVIDERS[1]['defaultModelName'],
|
||||
}
|
||||
}
|
||||
if (provider === "mistral") {
|
||||
return {
|
||||
provider: provider as LLMProvider,
|
||||
apiKey: settings.mistral_api_key || "",
|
||||
model: settings.mistral_model_name || PROVIDERS[2]['defaultModelName'],
|
||||
}
|
||||
}
|
||||
return null
|
||||
}).filter((provider): provider is NonNullable<typeof provider> => provider !== null)
|
||||
|
||||
return {
|
||||
providers,
|
||||
}
|
||||
}
|
||||
|
||||
export const getSettings = cache(async (userId: string): Promise<SettingsMap> => {
|
||||
const settings = await prisma.setting.findMany({
|
||||
where: { userId },
|
||||
})
|
||||
|
||||
return settings.reduce((acc, setting) => {
|
||||
acc[setting.code] = setting.value || ""
|
||||
return acc
|
||||
|
||||
Reference in New Issue
Block a user