29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
import { config as loadEnv } from "dotenv";
|
|
|
|
loadEnv();
|
|
loadEnv({ path: ".env.local", override: true });
|
|
|
|
function requireEnv(name: string, fallback?: string): string {
|
|
const value = process.env[name] ?? fallback;
|
|
if (!value) {
|
|
throw new Error(`Missing environment variable: ${name}`);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
export const env = {
|
|
nodeEnv: process.env.NODE_ENV ?? "development",
|
|
port: Number(process.env.PORT ?? 3000),
|
|
qdrantUrl: requireEnv("QDRANT_URL", "http://localhost:6333"),
|
|
qdrantApiKey: process.env.QDRANT_API_KEY ?? "",
|
|
qdrantCollection: requireEnv("QDRANT_COLLECTION", "rag_chunks"),
|
|
qdrantLogsCollection: requireEnv("QDRANT_LOGS_COLLECTION", "rag_eval_logs"),
|
|
embeddingProvider: requireEnv("EMBEDDING_PROVIDER", "openrouter"),
|
|
embeddingModel: requireEnv("EMBEDDING_MODEL", "qwen/qwen3-embedding-8b"),
|
|
embeddingBaseUrl: requireEnv("EMBEDDING_BASE_URL", "https://openrouter.ai/api/v1"),
|
|
embeddingApiKey: process.env.EMBEDDING_API_KEY ?? "",
|
|
answerProvider: requireEnv("ANSWER_PROVIDER", "openrouter"),
|
|
answerModel: requireEnv("ANSWER_MODEL", "openai/gpt-4.1-mini"),
|
|
answerBaseUrl: requireEnv("ANSWER_BASE_URL", "https://openrouter.ai/api/v1"),
|
|
answerApiKey: process.env.ANSWER_API_KEY ?? process.env.EMBEDDING_API_KEY ?? ""
|
|
} as const;
|