#!/usr/bin/env python3 """ 新闻稿生成器配置管理脚本 用于设置和管理API密钥配置 """ import os import json from config import config def setup_api_keys(): """交互式设置API密钥""" print("=== 新闻稿生成器配置设置 ===\n") # 获取当前配置 current_config = config.validate_api_keys() print("当前API密钥状态:") for model_type, has_key in current_config.items(): status = "✓ 已配置" if has_key else "✗ 未配置" print(f" {config.MODELS[model_type]['name']}: {status}") print("\n请选择要配置的模型:") print("1. OpenAI GPT-4") print("2. 火山引擎豆包") print("3. 阿里通义千问") print("4. 退出") while True: choice = input("\n请输入选择 (1-4): ").strip() if choice == '1': setup_openai() elif choice == '2': setup_volcengine() elif choice == '3': setup_dashscope() elif choice == '4': break else: print("无效选择,请重新输入") print("\n配置完成!") def setup_openai(): """设置OpenAI API密钥""" print("\n=== 配置OpenAI API密钥 ===") print("请访问 https://platform.openai.com/api-keys 获取API密钥") api_key = input("请输入OpenAI API密钥: ").strip() if api_key: config.update_api_key('openai', api_key) print("✓ OpenAI API密钥已保存") else: print("✗ 未输入API密钥") def setup_volcengine(): """设置火山引擎API密钥""" print("\n=== 配置火山引擎API密钥 ===") print("请访问 https://console.volcengine.com/ 获取API密钥") api_key = input("请输入火山引擎API密钥: ").strip() if api_key: config.update_api_key('volcengine', api_key) print("✓ 火山引擎API密钥已保存") else: print("✗ 未输入API密钥") def setup_dashscope(): """设置阿里云DashScope API密钥""" print("\n=== 配置阿里云DashScope API密钥 ===") print("请访问 https://dashscope.console.aliyun.com/ 获取API密钥") api_key = input("请输入阿里云DashScope API密钥: ").strip() if api_key: config.update_api_key('dashscope', api_key) print("✓ 阿里云DashScope API密钥已保存") else: print("✗ 未输入API密钥") def export_env_file(): """导出环境变量文件""" print("\n=== 导出环境变量配置 ===") env_content = [] for model_type, model_config in config.MODELS.items(): env_var = f"{model_type.upper()}_API_KEY" env_content.append(f"{env_var}={model_config['api_key']}") env_content.append(f"FLASK_SECRET_KEY={config.FLASK_CONFIG['secret_key']}") env_file = ".env" with open(env_file, 'w', encoding='utf-8') as f: f.write("\n".join(env_content)) print(f"✓ 环境变量已导出到 {env_file}") print("请将此文件添加到 .gitignore 以避免泄露敏感信息") def show_config(): """显示当前配置""" print("\n=== 当前配置信息 ===") print("\n模型配置:") for model_type, model_config in config.MODELS.items(): has_key = "✓" if model_config['api_key'] else "✗" print(f" {has_key} {model_config['name']}: {model_config['model']}") print(f"\n文案风格: {', '.join(config.STYLES)}") print(f"Flask配置: {config.FLASK_CONFIG['host']}:{config.FLASK_CONFIG['port']}") def main(): """主函数""" print("新闻稿生成器配置管理工具") print("=" * 30) while True: print("\n请选择操作:") print("1. 设置API密钥") print("2. 显示当前配置") print("3. 导出环境变量文件") print("4. 退出") choice = input("\n请输入选择 (1-4): ").strip() if choice == '1': setup_api_keys() elif choice == '2': show_config() elif choice == '3': export_env_file() elif choice == '4': print("再见!") break else: print("无效选择,请重新输入") if __name__ == '__main__': main()