Files

1 line
5.9 KiB
JSON

{"repo": "aiden-qiu1/kowngen-agent", "files": {"src/lib/providers/index.ts": {"1d620f71df8d47a9f0af2f063a6126f62fc4a5a9": {"t": 1785596027.3060796, "n": 5496, "h": "0f0ad24e97da8f8d", "c": "import { createOpenAI } from \"@ai-sdk/openai\";\nimport { createDeepSeek } from \"@ai-sdk/deepseek\";\nimport { LanguageModel } from \"ai\";\n//import { db } from \"@/lib/db\";\nimport { eq, gte, lte, and } from \"drizzle-orm\";\nimport { globalState } from \"../global\";\nimport { GoogleGenAI } from \"@google/genai\";\nimport { OpenAI } from \"openai\";\n\nexport function getModel(): LanguageModel {\n const openai = createOpenAI({\n baseURL: process.env.MODELSCOPE_BASE_URL,\n apiKey: process.env.MODELSCOPE_API_KEY,\n });\n\n const deepseek = createDeepSeek({\n apiKey: process.env.DEEPSEEK_API_KEY,\n });\n const chatModel = deepseek(\"deepseek-reasoner\");\n //const run = await workflow.createRunAsync();\n //const stream = await run.streamVNext({ inputData: { message: \"asd\" } });\n //const chatModel = openai.chat(\"deepseek-ai/DeepSeek-V3.2-Exp\");\n // const chatModel = openai.chat(\"Qwen/Qwen3-Next-80B-A3B-Instruct\");\n\n //const chatModel = openai.chat(\"ZhipuAI/GLM-4.6\");\n\n if (!chatModel) {\n throw new Error(\"No model found\");\n }\n\n return chatModel as LanguageModel;\n}\n\ninterface Provider {\n id: string;\n name: string;\n icon?: string;\n models?: { id: string; name: string }[];\n}\n\nexport async function getProviders(): Promise<Provider[]> {\n const provides: Provider[] = [];\n\n if (process.env.ZHIPU_API_KEY) {\n provides.push({\n id: \"zhipuai\",\n name: \"ZhipuAI\",\n models: [\n {\n id: \"glm-4.7\",\n name: \"GLM-4.7\",\n },\n ],\n });\n }\n if (process.env.MODELSCOPE_API_KEY) {\n let models = [];\n if (globalState.cache.has(\"modelscope-models\")) {\n models = globalState.cache.get(\"modelscope-models\") as {\n id: string;\n name: string;\n }[];\n } else {\n const openai = new OpenAI({\n apiKey: process.env.MODELSCOPE_API_KEY,\n baseURL: process.env.MODELSCOPE_BASE_URL,\n });\n const list = await openai.models.list();\n const items = (list?.data ?? []).map((x) => {\n return {\n id: x.id,\n name: x.id,\n };\n });\n models = items.sort((a, b) => a.name.localeCompare(b.name));\n globalState.cache.set(\"modelscope-models\", models);\n }\n provides.push({\n id: \"modelscope\",\n name: \"ModelScope\",\n models,\n });\n }\n if (process.env.DEEPSEEK_API_KEY) {\n let models = [];\n if (globalState.cache.has(\"deepseek-models\")) {\n models = globalState.cache.get(\"deepseek-models\") as {\n id: string;\n name: string;\n }[];\n } else {\n const response = await fetch(\"https://api.deepseek.com/models\", {\n headers: {\n Authorization: `Bearer ${process.env.DEEPSEEK_API_KEY}`,\n },\n });\n const { data } = await response.json();\n models = data.map((model) => {\n return { id: model.id, name: model.id };\n });\n globalState.cache.set(\"deepseek-models\", models);\n }\n provides.push({\n id: \"deepseek\",\n name: \"DeepSeek\",\n models,\n });\n }\n\n if (process.env.OPENAI_API_KEY) {\n let models = [];\n if (globalState.cache.has(\"openai-models\")) {\n models = globalState.cache.get(\"openai-models\") as {\n id: string;\n name: string;\n }[];\n } else {\n const openai = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY,\n });\n const list = await openai.models.list();\n const items = (list?.data ?? []).map((x) => {\n return {\n id: x.id,\n name: x.id,\n };\n });\n models = items.sort((a, b) => a.name.localeCompare(b.name));\n globalState.cache.set(\"openai-models\", models);\n }\n provides.push({\n id: \"openai\",\n name: \"OpenAI\",\n models,\n });\n }\n if (process.env.ANTHROPIC_API_KEY) {\n provides.push({\n id: \"anthropic\",\n name: \"Anthropic\",\n });\n }\n\n if (process.env.WQ_API_KEY && process.env.WQ_MODEL_ID) {\n provides.push({\n id: \"wanqing\",\n name: \"WANQING\",\n models: [\n {\n id: \"KAT-Coder-Pro-V1\",\n name: \"KAT-Coder-Pro-V1\",\n },\n ],\n });\n }\n if (process.env.GOOGLE_GENERATIVE_AI_API_KEY) {\n let models = [];\n if (globalState.cache.has(\"google-models\")) {\n models = globalState.cache.get(\"google-models\") as {\n id: string;\n name: string;\n }[];\n } else {\n const ai = new GoogleGenAI({\n apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY,\n });\n const res = await ai.models.list({\n config: {\n pageSize: 100,\n },\n });\n models = res.page\n .filter((x) => x.supportedActions.includes(\"generateContent\"))\n .map((x) => {\n const id = x.name.split(\"/\")[1];\n return {\n id: id,\n name: x.displayName,\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n globalState.cache.set(\"google-models\", models);\n }\n provides.push({\n id: \"google\",\n name: \"Google\",\n models,\n });\n }\n // const data = await db.select().from(providers);\n // for (const item of data) {\n // provides.push({\n // id: item.id,\n // name: item.name,\n // });\n // }\n return provides;\n}\n\n// export async function getAvailableModels(): Promise<\n// { id: string; name: string }[]\n// > {\n// const data = await db\n// .select()\n// .from(providers)\n// .where(eq(providers.is_enabled, true));\n// return data.map((item) => ({\n// id: item.id,\n// name: item.name,\n// }));\n// }\n"}}}}