138 lines
4.2 KiB
Python
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()
|