nemoguardrails.integrations.langchain.llm_adapter

View as Markdown

Module Contents

Classes

Functions

Data

_BASE_URL_ATTRIBUTES

_EXTRACTED_METADATA_KEYS

_FINISH_REASON_MAP

_REASONING_KEYS

log

API

class nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework()
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.create_model(
model_name: str,
provider_name: str,
model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None
) -> nemoguardrails.types.LLMModel
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_chat_provider_names() -> typing.List[str]
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_llm_provider_names() -> typing.List[str]
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_provider_names() -> typing.List[str]
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.register_llm_provider(
name: str,
provider_cls: typing.Any
) -> None
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.register_provider(
name: str,
provider_cls: typing.Any
) -> None
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.reset() -> None
async
class nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter(
llm
)
model_name
str
provider_name
Optional[str]
provider_url
Optional[str]
nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter._prepare_call_params(
stop: typing.Optional[typing.List[str]],
kwargs: typing.Dict[str, typing.Any]
) -> typing.Dict[str, typing.Any]
nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter._to_langchain_input(
prompt
)
nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter.generate_async(
prompt: typing.Union[str, typing.List[nemoguardrails.types.ChatMessage]],
stop: typing.Optional[typing.List[str]] = None,
kwargs = {}
) -> nemoguardrails.types.LLMResponse
async
nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter.stream_async(
prompt: typing.Union[str, typing.List[nemoguardrails.types.ChatMessage]],
stop: typing.Optional[typing.List[str]] = None,
kwargs = {}
) -> typing.AsyncIterator[nemoguardrails.types.LLMResponseChunk]
async
class nemoguardrails.integrations.langchain.llm_adapter._ModelInfo()

Bases: NamedTuple

finish_reason
Optional[FinishReason]
model
Optional[str]
request_id
Optional[str]
stop_sequence
Optional[str]
nemoguardrails.integrations.langchain.llm_adapter._build_provider_metadata(
response_metadata: typing.Dict[str, typing.Any],
additional_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None
) -> typing.Optional[typing.Dict[str, typing.Any]]
nemoguardrails.integrations.langchain.llm_adapter._build_usage_info(
raw: typing.Any
) -> typing.Optional[nemoguardrails.types.UsageInfo]
nemoguardrails.integrations.langchain.llm_adapter._extract_model_info(
response_metadata: typing.Dict[str, typing.Any]
) -> nemoguardrails.integrations.langchain.llm_adapter._ModelInfo
nemoguardrails.integrations.langchain.llm_adapter._extract_reasoning(
response: typing.Any
) -> typing.Optional[str]
nemoguardrails.integrations.langchain.llm_adapter._extract_tool_calls(
response: typing.Any
) -> typing.Optional[typing.List[nemoguardrails.types.ToolCall]]
nemoguardrails.integrations.langchain.llm_adapter._extract_usage(
response: typing.Any
) -> typing.Optional[nemoguardrails.types.UsageInfo]
nemoguardrails.integrations.langchain.llm_adapter._finalize_tool_call_acc(
acc: typing.Dict[int, typing.Dict[str, typing.Any]]
) -> typing.List[nemoguardrails.types.ToolCall]
nemoguardrails.integrations.langchain.llm_adapter._flatten_content(
raw: typing.Any
) -> typing.Optional[str]
nemoguardrails.integrations.langchain.llm_adapter._infer_model_name(
llm: typing.Any
)

Helper to infer the model name based from an LLM instance.

Because not all models implement correctly _identifying_params from LangChain, we have to try to do this manually.

nemoguardrails.integrations.langchain.llm_adapter._infer_provider_from_module(
llm: typing.Any
) -> typing.Optional[str]

Infer provider name from the LLM’s module path.

This function extracts the provider name from LangChain package naming conventions:

  • langchain_openai -> openai
  • langchain_anthropic -> anthropic
  • langchain_google_genai -> google_genai
  • langchain_nvidia_ai_endpoints -> nvidia_ai_endpoints
  • langchain_community.chat_models.ollama -> ollama

For patched/wrapped classes, checks base classes as well.

Parameters:

llm
Any

The LLM instance

Returns: Optional[str]

The inferred provider name, or None if it cannot be determined

nemoguardrails.integrations.langchain.llm_adapter._langchain_chunk_to_llm_response_chunk(
chunk: typing.Any
) -> nemoguardrails.types.LLMResponseChunk
nemoguardrails.integrations.langchain.llm_adapter._langchain_response_to_llm_response(
response: typing.Any
) -> nemoguardrails.types.LLMResponse
nemoguardrails.integrations.langchain.llm_adapter._map_finish_reason(
raw: typing.Optional[str]
) -> typing.Optional[nemoguardrails.types.FinishReason]
nemoguardrails.integrations.langchain.llm_adapter._BASE_URL_ATTRIBUTES = ['base_url', 'endpoint_url', 'server_url', 'azure_endpoint', 'openai_api_base', ...
nemoguardrails.integrations.langchain.llm_adapter._EXTRACTED_METADATA_KEYS = frozenset({'model_name', 'model', 'finish_reason', 'stop_reason', 'stop_sequence...
nemoguardrails.integrations.langchain.llm_adapter._FINISH_REASON_MAP: Dict[str, FinishReason] = {'stop': 'stop', 'end_turn': 'stop', 'length': 'length', 'max_tokens': 'length',...
nemoguardrails.integrations.langchain.llm_adapter._REASONING_KEYS = frozenset({'reasoning_content'})
nemoguardrails.integrations.langchain.llm_adapter.log = logging.getLogger(__name__)