import os # 模拟前端提交或者数据库存储的逻辑 # 假设项目原本有一个保存 Key 的字典或数据库函数,比如叫做 save_provider_key(platform, api_key, label) def auto_load_hf_secrets(): """ 启动时自动从 Hugging Face Secrets 中读取 13 大主力军平台的 Key 并自动注入到 FreeLLMAPI 面板中 """ print("🔄 开始检查并自动载入 Hugging Face Secrets...") # 定义:环境变量名 与 FreeLLMAPI 面板内平台标识(Platform)的对应关系 secret_mapping = { "GOOGLE_API_KEY": "google", "GROQ_API_KEY": "groq", "GITHUB_TOKEN": "github", "OPENROUTER_API_KEY": "openrouter", "MISTRAL_API_KEY": "mistral", "TOGETHER_API_KEY": "together", "NVIDIA_API_KEY": "nvidia", "COHERE_API_KEY": "cohere", "HF_TOKEN": "huggingface", "CEREBRAS_API_KEY": "cerebras", "SAMBANOVA_API_KEY": "sambanova", "CLOUDFLARE_API_TOKEN": "cloudflare", "ZHIPU_API_KEY": "zhipu" # 智谱清言 } loaded_count = 0 for env_name, platform_id in secret_mapping.items(): # 1. 从系统环境(Secrets)中取值 api_key_from_secret = os.getenv(env_name) if api_key_from_secret: # 2. 核心对接:调用项目原有的保存逻辑 # 💡 注意:你需要将这里的 'save_provider_key_function' 替换为 # FreeLLMAPI 项目实际用来保存 Key 的函数或数据库操作(例如 db.insert 等) try: # 举例项目的原生保存逻辑: # save_provider_key_function(platform=platform_id, key=api_key_from_secret, label="HF_Secret_Auto") # 兼容性伪代码示范: # if platform_id not in current_keys: # add_to_system(platform_id, api_key_from_secret) print(f"✅ 成功从 Secrets 中拉取并激活平台: [{platform_id}]") loaded_count += 1 except Exception as e: print(f"❌ 自动注入平台 {platform_id} 失败: {str(e)}") print(f"🏁 Secrets 自动载入完成,共成功激活 {loaded_count} 个主力平台渠道!") # 在项目运行/启动的最开始调用此函数 # if __name__ == "__main__": # auto_load_hf_secrets()