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}