| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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)
|