85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
import os
|
||
from typing import Dict, Any
|
||
|
||
class Config:
|
||
"""新闻稿生成器配置文件"""
|
||
|
||
# 模型配置
|
||
MODELS = {
|
||
'openai': {
|
||
'name': 'OpenAI GPT-4',
|
||
'api_key': os.getenv('OPENAI_API_KEY', ''),
|
||
'model': 'gpt-4',
|
||
'base_url': 'https://api.openai.com/v1',
|
||
'max_tokens': 800,
|
||
'temperature': 0.7
|
||
},
|
||
'volcengine': {
|
||
'name': '火山引擎豆包',
|
||
'api_key': os.getenv('VOLCENGINE_API_KEY', '6840c164-3b7e-4ddc-9d51-20624defc205'),
|
||
'model': 'doubao-pro-4k',
|
||
'base_url': 'maas-api.ml-platform-cn-beijing.volces.com',
|
||
'max_tokens': 800,
|
||
'temperature': 0.7
|
||
},
|
||
'dashscope': {
|
||
'name': '阿里通义千问',
|
||
'api_key': os.getenv('DASHSCOPE_API_KEY', 'sk-29a937c25bff4752af88514525c329b3'),
|
||
'model': 'qwen-plus',
|
||
'base_url': 'https://dashscope.aliyuncs.com',
|
||
'max_tokens': 800,
|
||
'temperature': 0.7
|
||
}
|
||
}
|
||
|
||
# 文案风格配置
|
||
STYLES = ['正式', '简洁', '感性', '科技']
|
||
|
||
# Flask应用配置
|
||
FLASK_CONFIG = {
|
||
'debug': True,
|
||
'host': '127.0.0.1',
|
||
'port': 50001,
|
||
'secret_key': os.getenv('FLASK_SECRET_KEY', 'your-secret-key-here')
|
||
}
|
||
|
||
# 文档配置
|
||
DOCUMENT_CONFIG = {
|
||
'default_filename': 'news.docx',
|
||
'image_width': 4, # 图片宽度(英寸)
|
||
'title': '新闻稿'
|
||
}
|
||
|
||
@classmethod
|
||
def get_model_config(cls, model_type: str) -> Dict[str, Any]:
|
||
"""获取指定模型的配置"""
|
||
if model_type not in cls.MODELS:
|
||
raise ValueError(f"不支持的模型类型: {model_type}")
|
||
return cls.MODELS[model_type]
|
||
|
||
@classmethod
|
||
def validate_api_keys(cls) -> Dict[str, bool]:
|
||
"""验证所有API密钥是否已设置"""
|
||
validation_result = {}
|
||
for model_type, config in cls.MODELS.items():
|
||
validation_result[model_type] = bool(config['api_key'])
|
||
return validation_result
|
||
|
||
@classmethod
|
||
def get_available_models(cls) -> Dict[str, str]:
|
||
"""获取可用的模型列表(已配置API密钥的模型)"""
|
||
available = {}
|
||
for model_type, config in cls.MODELS.items():
|
||
if config['api_key']:
|
||
available[model_type] = config['name']
|
||
return available
|
||
|
||
@classmethod
|
||
def update_api_key(cls, model_type: str, api_key: str) -> None:
|
||
"""更新指定模型的API密钥"""
|
||
if model_type not in cls.MODELS:
|
||
raise ValueError(f"不支持的模型类型: {model_type}")
|
||
cls.MODELS[model_type]['api_key'] = api_key
|
||
|
||
# 创建配置实例
|
||
config = Config() |