mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-28 22:14:18 +00:00
* Ensure access to local model during `ChatOllama` instantiation (#27720). This adds a new param `validate_model_on_init` (default: `true`) * Catch a few more errors from the Ollama client to assist users
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Utility functions for validating Ollama models."""
|
|
|
|
from httpx import ConnectError
|
|
from ollama import Client, ResponseError
|
|
|
|
|
|
def validate_model(client: Client, model_name: str) -> None:
|
|
"""Validate that a model exists in the Ollama instance.
|
|
|
|
Args:
|
|
client: The Ollama client.
|
|
model_name: The name of the model to validate.
|
|
|
|
Raises:
|
|
ValueError: If the model is not found or if there's a connection issue.
|
|
"""
|
|
try:
|
|
response = client.list()
|
|
model_names: list[str] = [model["name"] for model in response["models"]]
|
|
if not any(
|
|
model_name == m or m.startswith(f"{model_name}:") for m in model_names
|
|
):
|
|
raise ValueError(
|
|
f"Model `{model_name}` not found in Ollama. Please pull the "
|
|
f"model (using `ollama pull {model_name}`) or specify a valid "
|
|
f"model name. Available local models: {', '.join(model_names)}"
|
|
)
|
|
except ConnectError as e:
|
|
raise ValueError(
|
|
"Connection to Ollama failed. Please make sure Ollama is running "
|
|
f"and accessible at {client._client.base_url}. "
|
|
) from e
|
|
except ResponseError as e:
|
|
raise ValueError(
|
|
"Received an error from the Ollama API. "
|
|
"Please check your Ollama server logs."
|
|
) from e
|