refactor(ollama): model availability check

Moved model availability check logic into a dedicated
check_model_availability function.  Eliminated redundant code by reusing
the helper function in both embedding and non-embedding model
registration.

Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
Sébastien Han 2025-02-06 14:57:19 +01:00
parent d0d568c5ba
commit d9c460cb4b
No known key found for this signature in database

View file

@ -352,24 +352,20 @@ class OllamaInferenceAdapter(Inference, ModelsProtocolPrivate):
return EmbeddingsResponse(embeddings=embeddings) return EmbeddingsResponse(embeddings=embeddings)
async def register_model(self, model: Model) -> Model: async def register_model(self, model: Model) -> Model:
# ollama does not have embedding models running. Check if the model is in list of available models. async def check_model_availability(model_id: str):
if model.model_type == ModelType.embedding: response = await self.client.ps()
response = await self.client.list()
available_models = [m["model"] for m in response["models"]] available_models = [m["model"] for m in response["models"]]
if model.provider_resource_id not in available_models: if model_id not in available_models:
raise ValueError( raise ValueError(
f"Model '{model.provider_resource_id}' is not available in Ollama. " f"Model '{model_id}' is not available in Ollama. Available models: {', '.join(available_models)}"
f"Available models: {', '.join(available_models)}"
) )
if model.model_type == ModelType.embedding:
await check_model_availability(model.provider_resource_id)
return model return model
model = await self.register_helper.register_model(model) model = await self.register_helper.register_model(model)
models = await self.client.ps() await check_model_availability(model.provider_resource_id)
available_models = [m["model"] for m in models["models"]]
if model.provider_resource_id not in available_models:
raise ValueError(
f"Model '{model.provider_resource_id}' is not available in Ollama. "
f"Available models: {', '.join(available_models)}"
)
return model return model