84 lines
1.9 KiB
Python
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()
|