MCPcopy Index your code
hub / github.com/TaskingAI/TaskingAI / sync_model_schema_data

Function sync_model_schema_data

backend/app/services/model/model_schema.py:35–112  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

33
34
35async def sync_model_schema_data():
36 global _provider_checksum, _model_schema_checksum, _i18n_checksum
37 async with aiohttp.ClientSession() as session:
38 response = await session.get(
39 f"{CONFIG.TASKINGAI_INFERENCE_URL}/v1/cache_checksums",
40 )
41 response_wrapper = ResponseWrapper(response.status, await response.json())
42 check_http_error(response_wrapper)
43 response_data = response_wrapper.json()["data"]
44 provider_checksum = response_data["provider_checksum"]
45 model_schema_checksum = response_data["model_schema_checksum"]
46 i18n_checksum = response_data["i18n_checksum"]
47 if (
48 provider_checksum == _provider_checksum
49 and model_schema_checksum == _model_schema_checksum
50 and i18n_checksum == _i18n_checksum
51 ):
52 logger.debug(f"Checksums are the same, no need to sync model schema data.")
53 return
54
55 async with aiohttp.ClientSession() as session:
56 response = await session.get(
57 f"{CONFIG.TASKINGAI_INFERENCE_URL}/v1/caches",
58 )
59 response_wrapper = ResponseWrapper(response.status, await response.json())
60 check_http_error(response_wrapper)
61 response_data = response_wrapper.json()["data"]
62
63 model_schemas = [ModelSchema.build(model_schema_data) for model_schema_data in response_data["model_schemas"]]
64 model_schemas.sort(key=lambda x: x.model_schema_id)
65
66 providers = []
67 for provider_data in response_data["providers"]:
68 num_model_schemas = len(
69 [
70 model_schema
71 for model_schema in model_schemas
72 if model_schema.provider_id == provider_data["provider_id"]
73 ]
74 )
75 model_types = list(
76 set(
77 [
78 model_schema.type
79 for model_schema in model_schemas
80 if model_schema.provider_id == provider_data["provider_id"]
81 # and model_schema.type != ModelType.WILDCARD
82 ]
83 )
84 )
85 provider = Provider.build(provider_data, num_model_schemas, model_types)
86 providers.append(provider)
87
88 # put pinned providers at the front and sort the rest by provider_id
89 providers.sort(key=sort_providers)
90
91 i18n_dict = response_data["i18n"]
92

Callers 1

sync_dataFunction · 0.90

Calls 5

jsonMethod · 0.95
ResponseWrapperClass · 0.90
check_http_errorFunction · 0.90
getMethod · 0.45
buildMethod · 0.45

Tested by

no test coverage detected