From bffd82eda4f3ee880b63c513fb5094baa34f71dc Mon Sep 17 00:00:00 2001 From: Daniel McKnight Date: Wed, 26 Aug 2026 15:52:59 -0700 Subject: [PATCH 1/2] Add `tool_use` config to advertize citation generation and native tool use support --- neon_data_models/models/api/llm.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/neon_data_models/models/api/llm.py b/neon_data_models/models/api/llm.py index 6bb54e3..f1923fe 100644 --- a/neon_data_models/models/api/llm.py +++ b/neon_data_models/models/api/llm.py @@ -304,9 +304,22 @@ def validate_inputs(cls, values): return values +class ToolUseConfig(BaseModel): + native_support: bool = Field( + default=False, + description="True if the model has native tool use support", + ) + citations: bool = Field( + default=False, + description="True if the model supports citation generation", + ) + + class BrainForgeLLM(BaseModel): name: str = Field(description="LLM Name") version: str = Field(description="LLM Version") + tool_use: ToolUseConfig = Field(description="Tool use support", + default=ToolUseConfig()) personas: List[LLMPersona] = Field( default=[], description="List of personas defined in this model") From 22d78f29b456114837468f4568084d5f37bb27f9 Mon Sep 17 00:00:00 2001 From: Daniel McKnight Date: Wed, 26 Aug 2026 16:49:36 -0700 Subject: [PATCH 2/2] Add `DefaultRequestParams` to allow models to set default streaming, temperature, and repetition_penalty --- neon_data_models/models/api/llm.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/neon_data_models/models/api/llm.py b/neon_data_models/models/api/llm.py index f1923fe..57602df 100644 --- a/neon_data_models/models/api/llm.py +++ b/neon_data_models/models/api/llm.py @@ -88,8 +88,9 @@ class LLMRequest(BaseModel): description="Requested persona to respond to this message") model: str = Field(description="Model to request (@)") max_tokens: int = Field( - default=512, ge=64, le=2048, - description="Maximum number of tokens to include in the response") + default=512, ge=64, le=8192, + description="Maximum number of tokens to include in the response " + "(including reasoning tokens)") temperature: float = Field( default=0.0, ge=0.0, le=1.0, description="Temperature of response. 0 guarantees reproducibility, " @@ -315,11 +316,24 @@ class ToolUseConfig(BaseModel): ) +class DefaultRequestParams(BaseModel): + streaming: bool = Field( + default=True, description="Default streaming behavior" + ) + temperature: float = Field(default=0.0, description="Default temperature") + repetition_penalty: float = Field( + default=1.05, description="Default repetition penalty" + ) + + class BrainForgeLLM(BaseModel): name: str = Field(description="LLM Name") version: str = Field(description="LLM Version") tool_use: ToolUseConfig = Field(description="Tool use support", default=ToolUseConfig()) + default_request_params: DefaultRequestParams = Field( + description="Default request parameters", + default=DefaultRequestParams()) personas: List[LLMPersona] = Field( default=[], description="List of personas defined in this model")