nemoguardrails.llm.frameworks.default

View as Markdown

Module Contents

Classes

NameDescription
DefaultFramework-

Functions

Data

_API_KEY_ENV_VARS

_DEFAULT_BASE_URLS

_UNSET

log

API

class nemoguardrails.llm.frameworks.default.DefaultFramework()
_clients
Dict[tuple, OpenAICompatibleClient] = {}
_providers
Dict[str, Any] = {}
nemoguardrails.llm.frameworks.default.DefaultFramework._get_or_create_client(
base_url: str,
api_key: typing.Optional[str],
timeout: typing.Optional[float],
connect_timeout: typing.Optional[float],
max_retries: typing.Optional[int],
default_headers: typing.Optional[typing.Dict[str, str]],
default_query: typing.Optional[typing.Dict[str, typing.Any]]
) -> nemoguardrails.llm.clients.openai_compatible.OpenAICompatibleClient
nemoguardrails.llm.frameworks.default.DefaultFramework._prepare_azure_kwargs(
provider_name: str,
kwargs: typing.Dict[str, typing.Any]
) -> None

Reshape kwargs in place for the Azure preset.

Validates Azure-specific inputs (azure_endpoint or base_url, azure_deployment, api_version, api_key). Composes the deployment URL, sets api-version in default_query, and writes the api-key header so the standard create_model path can build the client without an Azure-specific branch.

Sets kwargs["api_key"] = None so the standard path does not emit the Authorization: Bearer header. Azure authenticates via the api-key header carried in default_headers.

The resource endpoint can be supplied as azure_endpoint (preferred, matches the OpenAI Python SDK) or base_url (compatibility alias for v0.21 LangChain configs). Both accept the same value (a resource-only URL such as https://my-resource.openai.azure.com/); the deployment path is composed by this preset. Setting both raises an error.

nemoguardrails.llm.frameworks.default.DefaultFramework.aclose() -> None
async

Close all pooled HTTP clients and drop them from the pool.

Connection-pool teardown only. Registered providers are kept. Mirrors httpx.AsyncClient.aclose() semantics: an async resource cleanup hook that releases sockets and TLS sessions back to the OS.

Re-creating models after aclose works as expected: the next call to create_model for a given config rebuilds the client.

If any client.close() fails, all remaining closes are still attempted; the first error is re-raised after the pool is cleared.

nemoguardrails.llm.frameworks.default.DefaultFramework.clear_providers() -> None

Drop all providers registered via register_provider.

Registry teardown only. Pooled HTTP clients are not affected; if the registered provider classes constructed clients via the framework, those clients survive in the pool until aclose().

nemoguardrails.llm.frameworks.default.DefaultFramework.create_model(
model_name: str,
provider_name: str,
model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None
) -> nemoguardrails.types.LLMModel
nemoguardrails.llm.frameworks.default.DefaultFramework.get_provider_names() -> typing.List[str]
nemoguardrails.llm.frameworks.default.DefaultFramework.register_provider(
name: str,
provider_cls: typing.Any
) -> None
nemoguardrails.llm.frameworks.default.DefaultFramework.reset() -> None
async

Test-only convenience: tear down both pools and providers.

Equivalent to await fw.aclose(); fw.clear_providers(). In production code, prefer the granular methods so connection refresh doesn’t accidentally drop registered providers.

nemoguardrails.llm.frameworks.default._resolve_api_key(
provider_name: str
) -> typing.Optional[str]
nemoguardrails.llm.frameworks.default._resolve_base_url(
provider_name: str
) -> str
nemoguardrails.llm.frameworks.default._API_KEY_ENV_VARS: Dict[str, str] = {'openai': 'OPENAI_API_KEY', 'nim': 'NVIDIA_API_KEY', 'nvidia_ai_endpoints': 'NV...
nemoguardrails.llm.frameworks.default._DEFAULT_BASE_URLS: Dict[str, str] = {'openai': 'https://api.openai.com/v1', 'nim': 'https://integrate.api.nvidia.com...
nemoguardrails.llm.frameworks.default._UNSET: Any = object()
nemoguardrails.llm.frameworks.default.log = logging.getLogger(__name__)