From e904e9634548e47d611bdcbb88d7b180b927fd5f Mon Sep 17 00:00:00 2001 From: JustZvan Date: Fri, 6 Feb 2026 12:16:40 +0100 Subject: feat: initial commit! --- src/ai/ai.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/ai/ai.ts (limited to 'src/ai') 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"); -- cgit v1.2.3