Files
crewai/models/qwen_config.py
2026-03-13 18:12:31 +08:00

84 lines
1.9 KiB
Python

"""
Qwen3.5-flash 模型配置模块
通过 DashScope OpenAI 兼容 API 调用通义千问模型
"""
import os
from typing import Optional
from crewai import LLM
from pydantic_settings import BaseSettings
class QwenConfig(BaseSettings):
"""Qwen 模型配置类"""
api_key: str = "sk-616332b2afa94699b4572d0fe6ac370a"
base_url: str = "https://dashscope.aliyuncs.com/compatible-mode/v1"
model_name: str = "qwen3.5-flash"
temperature: float = 0.7
max_tokens: int = 4096
class Config:
env_file = ".env"
extra = "ignore"
def get_llm(self) -> LLM:
"""
获取 CrewAI LLM 实例
Returns:
LLM: CrewAI LLM 对象
"""
return LLM(
model=self.model_name,
base_url=self.base_url,
api_key=self.api_key,
temperature=self.temperature,
max_tokens=self.max_tokens
)
@classmethod
def load_from_env(cls) -> "QwenConfig":
"""
从环境变量加载配置
Returns:
QwenConfig: 配置实例
"""
config = cls()
if not config.api_key:
raise ValueError(
"DASHSCOPE_API_KEY 未设置,请在 .env 文件中配置或在 https://dashscope.console.aliyun.com/ 获取 API Key"
)
return config
# 全局配置实例(延迟初始化)
_qwen_config: Optional[QwenConfig] = None
def get_qwen_config() -> QwenConfig:
"""
获取全局 Qwen 配置实例
Returns:
QwenConfig: 配置实例
Raises:
ValueError: 如果 API Key 未设置
"""
global _qwen_config
if _qwen_config is None:
_qwen_config = QwenConfig.load_from_env()
return _qwen_config
def get_llm() -> LLM:
"""
获取全局 LLM 实例
Returns:
LLM: CrewAI LLM 对象
"""
return get_qwen_config().get_llm()