abo/news_agent/setup_config.py
2025-07-16 15:34:54 +08:00

138 lines
4.2 KiB
Python

#!/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()