from __future__ import annotations """大模型工厂:统一创建项目共用的ChatOpenAI实例,兼容OpenAI及其兼容服务(DeepSeek等),支持独立超时配置。""" from typing import Any from langchain_openai import ChatOpenAI from app.config import get_settings def get_chat_model( timeout: float | None = None, ) -> ChatOpenAI: """创建项目统一使用的大模型。 支持OpenAI以及兼容OpenAI协议的模型服务。 timeout: 可选的自定义超时时间(秒)。 """ settings = get_settings() model_kwargs: dict[str, Any] = { "model": settings.require("model"), "api_key": settings.require("openai_api_key"), "temperature": 0, "max_retries": 2, "timeout": ( timeout if timeout is not None else settings.request_timeout_seconds ), } base_url = settings.base_url.strip() if base_url: model_kwargs["base_url"] = base_url return ChatOpenAI(**model_kwargs)