in databao/configs/llm.py [0:0]
def new_chat_model(self) -> BaseChatModel:
"""Create a chat model from this config using init_chat_model for provider detection."""
provider, name = _parse_model_provider(self.name)
if provider == "openai" or self.api_base_url is not None:
from langchain_openai import ChatOpenAI
# Use the verbatim name if using an OAI server
model_name = self.name if self.api_base_url is not None else name
is_reasoning = _is_reasoning_model(model_name)
extra_kwargs: dict[str, Any] = {}
if self.use_responses_api:
extra_kwargs.update(
# Without "summary", no reasoning traces will be returned by the API
reasoning={"effort": self.reasoning_effort, "summary": "auto"} if is_reasoning else None,
temperature=self.temperature,
# TODO output_version="responses/v1"
)
else:
extra_kwargs.update(
reasoning_effort=self.reasoning_effort if is_reasoning else None,
# The old API errors out if you provide a temperature for reasoning models
temperature=self.temperature if not is_reasoning else None,
)
# Set a default API key for local models if the user didn't provide one
if (
self.api_base_url is not None
and "api_key" not in self.model_kwargs
and "OPENAI_API_KEY" not in os.environ
):
extra_kwargs["api_key"] = "local-api-key"
return ChatOpenAI(
model=model_name,
timeout=self._resolve_timeout(),
max_tokens=self.max_tokens,
base_url=self.api_base_url,
use_responses_api=self.use_responses_api,
**extra_kwargs,
**self.model_kwargs,
)
elif provider == "anthropic":
from langchain_anthropic import ChatAnthropic
return ChatAnthropic(
model_name=name,
timeout=self._resolve_timeout(),
temperature=self.temperature,
max_tokens_to_sample=self.max_tokens,
**self.model_kwargs,
)
if provider == "ollama" and self.ollama_pull_model:
import ollama
# Download with ollama. If the model already exists it will not be re-downloaded.
ollama.pull(name)
return init_chat_model(
self.name,
configurable_fields=None, # Ensures we match the BaseChatModel overload
temperature=self.temperature,
max_tokens=self.max_tokens,
timeout=self._resolve_timeout(),
**self.model_kwargs,
)