001/* 002 * Copyright (c) 2026 Singular 003 * SPDX-License-Identifier: MIT 004 */ 005 006package ai.singlr.openai; 007 008import ai.singlr.core.model.Model; 009import ai.singlr.core.model.ModelConfig; 010import ai.singlr.core.model.ModelProvider; 011 012/** 013 * ModelProvider implementation for OpenAI's GPT API. 014 * 015 * <p>Supports GPT-5.4, GPT-4.1, GPT-4o, o3, and o4-mini models through the Responses API. 016 */ 017public class OpenAIProvider implements ModelProvider { 018 019 private static final String PROVIDER_NAME = "openai"; 020 021 @Override 022 public String name() { 023 return PROVIDER_NAME; 024 } 025 026 @Override 027 public Model create(String modelId, ModelConfig config) { 028 var openaiModel = OpenAIModelId.fromId(modelId); 029 if (openaiModel == null) { 030 throw new IllegalArgumentException("Unsupported model: " + modelId); 031 } 032 return new OpenAIModel(openaiModel, config); 033 } 034 035 @Override 036 public boolean supports(String modelId) { 037 return OpenAIModelId.isSupported(modelId); 038 } 039}