FreeLLMAPI / scripts /sync_bailian_models.py
lydgs's picture
Create sync_bailian_models.py
da55789 verified
Raw
History Blame
2.02 kB
#!/usr/bin/env python3
import os
import sys
import sqlite3
import requests
from datetime import datetime
# 设置数据库路径和百炼API端点
DB_PATH = "/app/server/data/freeapi.db"
BAILIAN_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/models"
def main():
# 获取百炼的API Key
api_key = os.getenv("BAILIAN_API_KEY")
if not api_key:
print("❌ 错误: 环境变量 BAILIAN_API_KEY 未设置")
return 1
# 调用百炼API获取模型列表
headers = {"Authorization": f"Bearer {api_key}"}
try:
response = requests.get(BAILIAN_URL, headers=headers, timeout=30)
response.raise_for_status()
models_data = response.json()
# 假设返回的JSON结构与 OpenAI 兼容模式一致,即包含一个 'data' 列表
models_list = [item["id"] for item in models_data.get("data", [])]
if not models_list:
print("⚠️ 警告: 未能从API获取到任何模型。")
return 1
except Exception as e:
print(f"❌ 请求百炼API失败: {e}")
return 1
# 连接数据库
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
except Exception as e:
print(f"❌ 无法连接数据库: {e}")
return 1
# 同步模型列表
added_count = 0
for model_id in models_list:
# 检查模型是否已存在
cursor.execute("SELECT 1 FROM models WHERE id = ?", (model_id,))
if not cursor.fetchone():
cursor.execute("INSERT INTO models (id, name, provider_id, enabled, created_at) VALUES (?, ?, ?, 1, ?)",
(model_id, model_id, 1, datetime.utcnow().isoformat()))
added_count += 1
print(f"➕ 添加模型: {model_id}")
else:
print(f"⏭️ 模型已存在: {model_id}")
conn.commit()
conn.close()
print(f"✅ 同步完成。新增模型数量: {added_count}")
return 0
if __name__ == "__main__":
sys.exit(main())