@@ -17,12 +17,11 @@ import play.api.libs.json.{Format, JsObject, JsValue, Json}
1717
1818import scala .concurrent .{ExecutionContext , Future }
1919import com .fasterxml .jackson .core .JsonProcessingException
20- import com .typesafe .config .Config
2120import io .cequence .openaiscala .OpenAIScalaClientException
2221import io .cequence .openaiscala .domain .JsonSchema .JsonSchemaOrMap
2322import io .cequence .wsclient .JsonUtil
2423
25- object OpenAIChatCompletionExtra extends OpenAIServiceConsts {
24+ object OpenAIChatCompletionExtra extends OpenAIServiceConsts with HasOpenAIConfig {
2625
2726 protected val logger : Logger =
2827 LoggerFactory .getLogger(this .getClass.getSimpleName.stripSuffix(" $" ))
@@ -129,7 +128,6 @@ object OpenAIChatCompletionExtra extends OpenAIServiceConsts {
129128 retryOnAnyError : Boolean = false ,
130129 taskNameForLogging : Option [String ] = None ,
131130 jsonSchemaModels : Seq [String ] = Nil ,
132- config : Option [Config ] = None ,
133131 enforceJsonSchemaMode : Boolean = false ,
134132 parseJson : String => JsValue = defaultParseJsonOrRepair
135133 )(
@@ -146,7 +144,6 @@ object OpenAIChatCompletionExtra extends OpenAIServiceConsts {
146144 settings,
147145 taskNameForLoggingFinal,
148146 jsonSchemaModels,
149- config,
150147 enforceJsonSchemaMode
151148 )
152149 } else {
@@ -206,41 +203,30 @@ object OpenAIChatCompletionExtra extends OpenAIServiceConsts {
206203 }
207204 }
208205
209- private lazy val defaultConfig = loadDefaultConfig()
210-
211- private def getJsonSchemaModels (
212- jsonSchemaModels : Seq [String ],
213- config : Option [Config ]
214- ): Seq [String ] = {
206+ private def getJsonSchemaModelsFromConfig (): Seq [String ] = {
215207 import scala .collection .JavaConverters ._
216- val cfg = config.getOrElse(defaultConfig)
217208 val configPath = s " $configPrefix.models-supporting-json-schema "
218- val configModels = if (cfg .hasPath(configPath)) {
219- cfg .getStringList(configPath).asScala.toSeq
209+ if (clientConfig .hasPath(configPath)) {
210+ clientConfig .getStringList(configPath).asScala.toSeq
220211 } else {
221212 Nil
222213 }
223-
224- if (jsonSchemaModels.isEmpty) {
225- configModels
226- } else if (config.isDefined) {
227- // Both explicit models and custom config provided - merge and deduplicate
228- (jsonSchemaModels ++ configModels).distinct
229- } else {
230- // Only explicit models provided
231- jsonSchemaModels
232- }
233214 }
234215
235216 def handleOutputJsonSchema (
236217 messages : Seq [BaseMessage ],
237218 settings : CreateChatCompletionSettings ,
238219 taskNameForLogging : String ,
239220 jsonSchemaModels : Seq [String ] = Nil ,
240- config : Option [Config ] = None ,
241221 enforceJsonSchemaMode : Boolean = false
242222 ): (Seq [BaseMessage ], CreateChatCompletionSettings ) = {
243- val jsonSchemaModelsFinal = getJsonSchemaModels(jsonSchemaModels, config)
223+ // Use explicitly provided JSON schema models if available,
224+ // otherwise fall back to models configured in openai-scala-client.conf
225+ val jsonSchemaModelsFinal =
226+ if (jsonSchemaModels.nonEmpty)
227+ jsonSchemaModels
228+ else
229+ getJsonSchemaModelsFromConfig()
244230
245231 val jsonSchemaDef = settings.jsonSchema.getOrElse(
246232 throw new IllegalArgumentException (" JSON schema is not defined but expected." )
0 commit comments