Add base_url to ModelConfig and EmbeddingModelConfig. Deprecate vllm and lm_studio configs, now through open ai
This commit is contained in:
parent
271c50e225
commit
3141c91023
2 changed files with 17 additions and 50 deletions
|
|
@ -12,6 +12,7 @@ class ModelConfig(BaseModel):
|
|||
Attributes:
|
||||
provider: Model provider (ollama, openai, anthropic, etc.)
|
||||
name: Model name/identifier
|
||||
base_url: Optional base URL for OpenAI-compatible servers (vLLM, LM Studio, etc.)
|
||||
enable_thinking: Control reasoning behavior (true/false/None for default)
|
||||
temperature: Sampling temperature (0.0 to 1.0+)
|
||||
max_tokens: Maximum tokens to generate
|
||||
|
|
@ -19,6 +20,7 @@ class ModelConfig(BaseModel):
|
|||
|
||||
provider: str = "ollama"
|
||||
name: str = "gpt-oss"
|
||||
base_url: str | None = None
|
||||
|
||||
enable_thinking: bool | None = None
|
||||
temperature: float | None = None
|
||||
|
|
@ -29,14 +31,16 @@ class EmbeddingModelConfig(BaseModel):
|
|||
"""Configuration for an embedding model.
|
||||
|
||||
Attributes:
|
||||
provider: Model provider (ollama, openai, voyageai, vllm, lm_studio)
|
||||
provider: Model provider (ollama, openai, voyageai, cohere, sentence-transformers)
|
||||
name: Model name/identifier
|
||||
vector_dim: Vector dimensions produced by the model
|
||||
base_url: Optional base URL for OpenAI-compatible servers (vLLM, LM Studio, etc.)
|
||||
"""
|
||||
|
||||
provider: str = "ollama"
|
||||
name: str = "qwen3-embedding:4b"
|
||||
vector_dim: int = 2560
|
||||
base_url: str | None = None
|
||||
|
||||
|
||||
class StorageConfig(BaseModel):
|
||||
|
|
|
|||
|
|
@ -135,11 +135,12 @@ def get_model(
|
|||
model_settings, OpenAIChatModelSettings, model_config
|
||||
)
|
||||
|
||||
# Use model-level base_url if set, otherwise fall back to providers config
|
||||
base_url = model_config.base_url or f"{app_config.providers.ollama.base_url}/v1"
|
||||
|
||||
return OpenAIChatModel(
|
||||
model_name=model,
|
||||
provider=OllamaProvider(
|
||||
base_url=f"{app_config.providers.ollama.base_url}/v1"
|
||||
),
|
||||
provider=OllamaProvider(base_url=base_url),
|
||||
settings=model_settings,
|
||||
)
|
||||
|
||||
|
|
@ -159,6 +160,14 @@ def get_model(
|
|||
openai_settings, OpenAIChatModelSettings, model_config
|
||||
)
|
||||
|
||||
# Use model-level base_url if set (for vLLM, LM Studio, etc.)
|
||||
if model_config.base_url:
|
||||
return OpenAIChatModel(
|
||||
model_name=model,
|
||||
provider=OpenAIProvider(base_url=model_config.base_url),
|
||||
settings=openai_settings,
|
||||
)
|
||||
|
||||
return OpenAIChatModel(model_name=model, settings=openai_settings)
|
||||
|
||||
elif provider == "anthropic":
|
||||
|
|
@ -264,52 +273,6 @@ def get_model(
|
|||
|
||||
return BedrockConverseModel(model_name=model, settings=bedrock_settings)
|
||||
|
||||
elif provider == "vllm":
|
||||
vllm_settings = None
|
||||
|
||||
# Apply thinking control for gpt-oss
|
||||
if model == "gpt-oss" and model_config.enable_thinking is not None:
|
||||
if model_config.enable_thinking is False:
|
||||
vllm_settings = OpenAIChatModelSettings(openai_reasoning_effort="low")
|
||||
else:
|
||||
vllm_settings = OpenAIChatModelSettings(openai_reasoning_effort="high")
|
||||
|
||||
vllm_settings = apply_common_settings(
|
||||
vllm_settings, OpenAIChatModelSettings, model_config
|
||||
)
|
||||
|
||||
return OpenAIChatModel(
|
||||
model_name=model,
|
||||
provider=OpenAIProvider(
|
||||
base_url=f"{app_config.providers.vllm.research_base_url or app_config.providers.vllm.qa_base_url}/v1",
|
||||
api_key="none",
|
||||
),
|
||||
settings=vllm_settings,
|
||||
)
|
||||
|
||||
elif provider == "lm_studio":
|
||||
model_settings = None
|
||||
|
||||
# Apply thinking control for gpt-oss
|
||||
if model == "gpt-oss" and model_config.enable_thinking is not None:
|
||||
if model_config.enable_thinking is False:
|
||||
model_settings = OpenAIChatModelSettings(openai_reasoning_effort="low")
|
||||
else:
|
||||
model_settings = OpenAIChatModelSettings(openai_reasoning_effort="high")
|
||||
|
||||
model_settings = apply_common_settings(
|
||||
model_settings, OpenAIChatModelSettings, model_config
|
||||
)
|
||||
|
||||
return OpenAIChatModel(
|
||||
model_name=model,
|
||||
provider=OpenAIProvider(
|
||||
base_url=f"{app_config.providers.lm_studio.base_url}/v1",
|
||||
api_key="dummy",
|
||||
),
|
||||
settings=model_settings,
|
||||
)
|
||||
|
||||
else:
|
||||
# For any other provider, use string format and let Pydantic AI handle it
|
||||
return f"{provider}:{model}"
|
||||
|
|
|
|||
Loading…
Reference in a new issue