diff options
Diffstat (limited to 'src/ai/ai.ts')
| -rw-r--r-- | src/ai/ai.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/ai/ai.ts b/src/ai/ai.ts new file mode 100644 index 0000000..449effd --- /dev/null +++ b/src/ai/ai.ts @@ -0,0 +1,39 @@ +import { createOpenAI } from "@ai-sdk/openai"; +import { LanguageModel } from "ai"; +import { ollama } from "ollama-ai-provider-v2"; +import { logger } from "../lib/pino"; + +const isProduction = process.env.NODE_ENV === "production"; + +logger.info( + { environment: process.env.NODE_ENV, isProduction }, + "Initializing AI model", +); + +/** + * The language model used throughout the app. + * Uses OpenAI in production, Ollama locally for dev. + */ +export const model: LanguageModel = isProduction + ? (() => { + logger.info( + { + baseURL: process.env.OPENAI_API_BASE_URL, + model: process.env.OPENAI_MODEL_NAME, + }, + "Using OpenAI model for production", + ); + return createOpenAI({ + apiKey: process.env.OPENAI_API_KEY!, + baseURL: process.env.OPENAI_API_BASE_URL!, + })(process.env.OPENAI_MODEL_NAME!); + })() + : (() => { + logger.info( + { model: "dolphin-phi" }, + "Using Ollama model for development", + ); + return ollama("dolphin-phi"); + })(); + +logger.info("AI model initialized successfully"); |