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