Use admin-configured AI model and add GPT-5/o-series options

- Add getConfiguredModel() that reads ai_model from SystemSettings
- AI assignment and mentor matching now use the admin-selected model
- Remove duplicate OpenAI client in mentor-matching (use shared singleton)
- Add GPT-5, GPT-5 Mini, o3, o3 Mini, o4 Mini to model dropdown

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 16:24:46 +01:00
parent 8c598ba3ee
commit bfcfd84008
4 changed files with 29 additions and 20 deletions

View File

@@ -1,20 +1,5 @@
import { PrismaClient, OceanIssue, CompetitionCategory } from '@prisma/client'
import OpenAI from 'openai'
// Lazy initialization to avoid errors when API key is not set
let openaiClient: OpenAI | null = null
function getOpenAIClient(): OpenAI | null {
if (!process.env.OPENAI_API_KEY) {
return null
}
if (!openaiClient) {
openaiClient = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
})
}
return openaiClient
}
import { getOpenAI, getConfiguredModel } from '@/lib/openai'
interface ProjectInfo {
id: string
@@ -170,13 +155,15 @@ Respond in JSON format:
]
}`
const openai = getOpenAIClient()
const openai = await getOpenAI()
if (!openai) {
throw new Error('OpenAI client not available')
}
const model = await getConfiguredModel()
const response = await openai.chat.completions.create({
model: 'gpt-4o-mini',
model,
messages: [
{
role: 'system',