From cb26ca33eb45b2731223c953079b82fd9eca9c23 Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 19 Mar 2026 01:12:56 -0700 Subject: [PATCH 1/3] feat: add new model definitions for Google, OpenAI, and xAI --- .../images/providers/google/models.py | 24 +++++++++++++ .../text/providers/google/models.py | 19 +++++++++++ .../text/providers/openai/models.py | 34 +++++++++++++++++++ .../modalities/text/providers/xai/models.py | 15 ++++++++ 4 files changed, 92 insertions(+) diff --git a/src/celeste/modalities/images/providers/google/models.py b/src/celeste/modalities/images/providers/google/models.py index 1d55c36..6e83f64 100644 --- a/src/celeste/modalities/images/providers/google/models.py +++ b/src/celeste/modalities/images/providers/google/models.py @@ -99,6 +99,30 @@ ImageParameter.REFERENCE_IMAGES: ImagesConstraint(max_count=14), }, ), + Model( + id="gemini-3.1-flash-image-preview", + provider=Provider.GOOGLE, + display_name="Nano Banana 2", + operations={Modality.IMAGES: {Operation.GENERATE, Operation.EDIT}}, + parameter_constraints={ + ImageParameter.ASPECT_RATIO: Choice( + options=[ + "1:1", + "2:3", + "3:2", + "3:4", + "4:3", + "4:5", + "5:4", + "9:16", + "16:9", + "21:9", + ] + ), + ImageParameter.QUALITY: Choice(options=["1K", "2K", "4K"]), + ImageParameter.REFERENCE_IMAGES: ImagesConstraint(max_count=14), + }, + ), ] # Unified model list for registration diff --git a/src/celeste/modalities/text/providers/google/models.py b/src/celeste/modalities/text/providers/google/models.py index eda3dad..2e77a66 100644 --- a/src/celeste/modalities/text/providers/google/models.py +++ b/src/celeste/modalities/text/providers/google/models.py @@ -130,4 +130,23 @@ TextParameter.AUDIO: AudioConstraint(), }, ), + Model( + id="gemini-3.1-flash-lite-preview", + provider=Provider.GOOGLE, + display_name="Gemini 3.1 Flash Lite Preview", + operations={Modality.TEXT: {Operation.GENERATE, Operation.ANALYZE}}, + streaming=True, + parameter_constraints={ + Parameter.TEMPERATURE: Range(min=0.0, max=2.0), + Parameter.MAX_TOKENS: Range(min=1, max=65536), + TextParameter.THINKING_LEVEL: Choice(options=["low", "high"]), + TextParameter.WEB_SEARCH: Bool(), + TextParameter.CODE_EXECUTION: Bool(), + TextParameter.OUTPUT_SCHEMA: Schema(), + # Media input support + TextParameter.IMAGE: ImagesConstraint(), + TextParameter.VIDEO: VideosConstraint(), + TextParameter.AUDIO: AudioConstraint(), + }, + ), ] diff --git a/src/celeste/modalities/text/providers/openai/models.py b/src/celeste/modalities/text/providers/openai/models.py index c9b03e1..18e5450 100644 --- a/src/celeste/modalities/text/providers/openai/models.py +++ b/src/celeste/modalities/text/providers/openai/models.py @@ -218,6 +218,40 @@ TextParameter.IMAGE: ImagesConstraint(), }, ), + Model( + id="gpt-5.4", + provider=Provider.OPENAI, + display_name="GPT-5.4", + operations={Modality.TEXT: {Operation.GENERATE, Operation.ANALYZE}}, + streaming=True, + parameter_constraints={ + Parameter.MAX_TOKENS: Range(min=1, max=128000), + TextParameter.THINKING_BUDGET: Choice( + options=["minimal", "low", "medium", "high", "xhigh"] + ), + TextParameter.VERBOSITY: Choice(options=["low", "medium", "high"]), + TextParameter.WEB_SEARCH: Bool(), + TextParameter.OUTPUT_SCHEMA: Schema(), + TextParameter.IMAGE: ImagesConstraint(), + }, + ), + Model( + id="gpt-5.4-pro", + provider=Provider.OPENAI, + display_name="GPT-5.4 Pro", + operations={Modality.TEXT: {Operation.GENERATE, Operation.ANALYZE}}, + streaming=True, + parameter_constraints={ + Parameter.MAX_TOKENS: Range(min=1, max=128000), + TextParameter.THINKING_BUDGET: Choice( + options=["minimal", "low", "medium", "high", "xhigh"] + ), + TextParameter.VERBOSITY: Choice(options=["low", "medium", "high"]), + TextParameter.WEB_SEARCH: Bool(), + TextParameter.OUTPUT_SCHEMA: Schema(), + TextParameter.IMAGE: ImagesConstraint(), + }, + ), Model( id="gpt-4.1", provider=Provider.OPENAI, diff --git a/src/celeste/modalities/text/providers/xai/models.py b/src/celeste/modalities/text/providers/xai/models.py index 8328880..5bfa4f1 100644 --- a/src/celeste/modalities/text/providers/xai/models.py +++ b/src/celeste/modalities/text/providers/xai/models.py @@ -88,6 +88,21 @@ TextParameter.CODE_EXECUTION: Bool(), }, ), + Model( + id="grok-4.20-beta-0309-reasoning", + provider=Provider.XAI, + display_name="Grok 4.20 Beta 0309 Reasoning", + operations={Modality.TEXT: {Operation.GENERATE}}, + streaming=True, + parameter_constraints={ + Parameter.TEMPERATURE: Range(min=0.0, max=2.0), + Parameter.MAX_TOKENS: Range(min=1, max=30000), + TextParameter.WEB_SEARCH: Bool(), + TextParameter.X_SEARCH: Bool(), + TextParameter.CODE_EXECUTION: Bool(), + TextParameter.OUTPUT_SCHEMA: Schema(), + }, + ), Model( id="grok-3-mini", provider=Provider.XAI, From 6a8163046a094458e697e649b7048596d626e106 Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 19 Mar 2026 01:16:28 -0700 Subject: [PATCH 2/3] feat: add grok-4.20-beta-0309-non-reasoning model --- .../modalities/text/providers/xai/models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/celeste/modalities/text/providers/xai/models.py b/src/celeste/modalities/text/providers/xai/models.py index 5bfa4f1..e189f41 100644 --- a/src/celeste/modalities/text/providers/xai/models.py +++ b/src/celeste/modalities/text/providers/xai/models.py @@ -103,6 +103,21 @@ TextParameter.OUTPUT_SCHEMA: Schema(), }, ), + Model( + id="grok-4.20-beta-0309-non-reasoning", + provider=Provider.XAI, + display_name="Grok 4.20 Beta 0309 Non Reasoning", + operations={Modality.TEXT: {Operation.GENERATE}}, + streaming=True, + parameter_constraints={ + Parameter.TEMPERATURE: Range(min=0.0, max=2.0), + Parameter.MAX_TOKENS: Range(min=1, max=30000), + TextParameter.WEB_SEARCH: Bool(), + TextParameter.X_SEARCH: Bool(), + TextParameter.CODE_EXECUTION: Bool(), + TextParameter.OUTPUT_SCHEMA: Schema(), + }, + ), Model( id="grok-3-mini", provider=Provider.XAI, From e86b7a9288438e1dc83f349594c9d6a729264044 Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 19 Mar 2026 01:21:20 -0700 Subject: [PATCH 3/3] feat: add gpt-5.4-mini and gpt-5.4-nano models --- .../text/providers/openai/models.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/celeste/modalities/text/providers/openai/models.py b/src/celeste/modalities/text/providers/openai/models.py index 18e5450..6268cf9 100644 --- a/src/celeste/modalities/text/providers/openai/models.py +++ b/src/celeste/modalities/text/providers/openai/models.py @@ -252,6 +252,36 @@ TextParameter.IMAGE: ImagesConstraint(), }, ), + Model( + id="gpt-5.4-mini", + provider=Provider.OPENAI, + display_name="GPT-5.4 Mini", + operations={Modality.TEXT: {Operation.GENERATE, Operation.ANALYZE}}, + streaming=True, + parameter_constraints={ + Parameter.MAX_TOKENS: Range(min=1, max=128000), + TextParameter.THINKING_BUDGET: Choice( + options=["minimal", "low", "medium", "high", "xhigh"] + ), + TextParameter.OUTPUT_SCHEMA: Schema(), + TextParameter.IMAGE: ImagesConstraint(), + }, + ), + Model( + id="gpt-5.4-nano", + provider=Provider.OPENAI, + display_name="GPT-5.4 Nano", + operations={Modality.TEXT: {Operation.GENERATE, Operation.ANALYZE}}, + streaming=True, + parameter_constraints={ + Parameter.MAX_TOKENS: Range(min=1, max=128000), + TextParameter.THINKING_BUDGET: Choice( + options=["minimal", "low", "medium", "high", "xhigh"] + ), + TextParameter.OUTPUT_SCHEMA: Schema(), + TextParameter.IMAGE: ImagesConstraint(), + }, + ), Model( id="gpt-4.1", provider=Provider.OPENAI,