Spaces:
Paused
Paused
| 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() |