Files
dify-plus/api/services/model_service_extend.py
T
2025-03-28 15:18:33 +08:00

71 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import logging
from models.account import *
from services.account_service_extend import TenantExtendService
from services.model_provider_service_extend import ModelProviderExtendService
class ModelExtendService:
@staticmethod
def sync_set_all_model_to_tenant(tenant_id: str) -> bool:
logging.info(f"开始同步所有模型到工作区: {tenant_id}")
model_provider_service_extend = ModelProviderExtendService()
# 同步供应商+模型名称的模型数据
provider_model_records = TenantExtendService.get_sync_all_model()
for provider_model_record in provider_model_records:
logging.info(f"{tenant_id} 同步的模型所在工作区: {provider_model_record.tenant_id}")
logging.info(f"{tenant_id} 同步的模型provider_name: {provider_model_record.provider_name}")
logging.info(f"{tenant_id} 同步的模型model_type {provider_model_record.model_type}")
logging.info(f"{tenant_id} 同步的模型model_name: {provider_model_record.model_name}")
origin_credentials = model_provider_service_extend.get_model_credentials_obfuscated(
tenant_id=provider_model_record.tenant_id,
provider=provider_model_record.provider_name,
model_type=provider_model_record.model_type,
model=provider_model_record.model_name,
)
# 查不到相应的凭证
if origin_credentials is None:
logging.info(
f"{tenant_id} 同步失败: {provider_model_record.provider_name}{provider_model_record.model_name}"
)
continue
model_id = model_provider_service_extend.save_model_credentials_without_validate(
tenant_id=tenant_id,
provider=provider_model_record.provider_name,
model_type=provider_model_record.model_type,
model=provider_model_record.model_name,
credentials=origin_credentials,
)
model_provider_service_extend.create_tenant_model_sync_if_not_exist(
tenant_id=tenant_id, model_id=model_id, origin_model_id=provider_model_record.id, is_all=True
)
logging.info(
f"{tenant_id} 同步成功: {provider_model_record.provider_name}{provider_model_record.model_name}"
)
# 同步只有供应商的模型数据
provider_records = TenantExtendService.get_sync_all_provider()
for provider_record in provider_records:
logging.info(f"{tenant_id} 同步的模型所在工作区: {provider_record.tenant_id}")
logging.info(f"{tenant_id} 同步的模型provider_name: {provider_record.provider_name}")
origin_provider_credentials = model_provider_service_extend.get_provider_credentials_obfuscated(
tenant_id=provider_record.tenant_id,
provider=provider_record.provider_name,
)
# 查不到相应的凭证
if origin_provider_credentials is None:
logging.info(f"{tenant_id} 同步失败: {provider_record.tenant_id}{provider_record.provider_name}")
continue
provider_id = model_provider_service_extend.save_provider_credentials_without_validate(
tenant_id=tenant_id, provider=provider_record.provider_name, credentials=origin_provider_credentials
)
model_provider_service_extend.create_tenant_model_sync_if_not_exist(
tenant_id=tenant_id, model_id=provider_id, origin_model_id=provider_record.id, is_all=True
)
logging.info(f"{tenant_id} 同步成功: {provider_record.tenant_id}{provider_record.provider_name}")
return True