> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/guardrails/llms.txt.
> For full documentation content, see https://docs.nvidia.com/nemo/guardrails/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.integrations.langchain.llm_adapter

## Module Contents

### Classes

| Name                                                                                            | Description |
| ----------------------------------------------------------------------------------------------- | ----------- |
| [`LangChainFramework`](#nemoguardrails-integrations-langchain-llm_adapter-LangChainFramework)   | -           |
| [`LangChainLLMAdapter`](#nemoguardrails-integrations-langchain-llm_adapter-LangChainLLMAdapter) | -           |
| [`_ModelInfo`](#nemoguardrails-integrations-langchain-llm_adapter-_ModelInfo)                   | -           |

### Functions

| Name                                                                                                                                  | Description                                                |
| ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [`_build_provider_metadata`](#nemoguardrails-integrations-langchain-llm_adapter-_build_provider_metadata)                             | -                                                          |
| [`_build_usage_info`](#nemoguardrails-integrations-langchain-llm_adapter-_build_usage_info)                                           | -                                                          |
| [`_extract_model_info`](#nemoguardrails-integrations-langchain-llm_adapter-_extract_model_info)                                       | -                                                          |
| [`_extract_reasoning`](#nemoguardrails-integrations-langchain-llm_adapter-_extract_reasoning)                                         | -                                                          |
| [`_extract_tool_calls`](#nemoguardrails-integrations-langchain-llm_adapter-_extract_tool_calls)                                       | -                                                          |
| [`_extract_usage`](#nemoguardrails-integrations-langchain-llm_adapter-_extract_usage)                                                 | -                                                          |
| [`_finalize_tool_call_acc`](#nemoguardrails-integrations-langchain-llm_adapter-_finalize_tool_call_acc)                               | -                                                          |
| [`_flatten_content`](#nemoguardrails-integrations-langchain-llm_adapter-_flatten_content)                                             | -                                                          |
| [`_infer_model_name`](#nemoguardrails-integrations-langchain-llm_adapter-_infer_model_name)                                           | Helper to infer the model name based from an LLM instance. |
| [`_infer_provider_from_module`](#nemoguardrails-integrations-langchain-llm_adapter-_infer_provider_from_module)                       | Infer provider name from the LLM's module path.            |
| [`_langchain_chunk_to_llm_response_chunk`](#nemoguardrails-integrations-langchain-llm_adapter-_langchain_chunk_to_llm_response_chunk) | -                                                          |
| [`_langchain_response_to_llm_response`](#nemoguardrails-integrations-langchain-llm_adapter-_langchain_response_to_llm_response)       | -                                                          |
| [`_map_finish_reason`](#nemoguardrails-integrations-langchain-llm_adapter-_map_finish_reason)                                         | -                                                          |

### Data

[`_BASE_URL_ATTRIBUTES`](#nemoguardrails-integrations-langchain-llm_adapter-_BASE_URL_ATTRIBUTES)

[`_EXTRACTED_METADATA_KEYS`](#nemoguardrails-integrations-langchain-llm_adapter-_EXTRACTED_METADATA_KEYS)

[`_FINISH_REASON_MAP`](#nemoguardrails-integrations-langchain-llm_adapter-_FINISH_REASON_MAP)

[`_REASONING_KEYS`](#nemoguardrails-integrations-langchain-llm_adapter-_REASONING_KEYS)

[`log`](#nemoguardrails-integrations-langchain-llm_adapter-log)

### API

```python
class nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework()
```

```python
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
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_chat_provider_names() -> typing.List[str]
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_llm_provider_names() -> typing.List[str]
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.get_provider_names() -> typing.List[str]
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.register_llm_provider(
    name: str,
    provider_cls: typing.Any
) -> None
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.register_provider(
    name: str,
    provider_cls: typing.Any
) -> None
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainFramework.reset() -> None
```

async

```python
class nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter(
    llm
)
```

```python
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]
```

```python
nemoguardrails.integrations.langchain.llm_adapter.LangChainLLMAdapter._to_langchain_input(
    prompt
)
```

```python
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

```python
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

```python
class nemoguardrails.integrations.langchain.llm_adapter._ModelInfo()
```

**Bases:** `NamedTuple`

```python
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]]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._build_usage_info(
    raw: typing.Any
) -> typing.Optional[nemoguardrails.types.UsageInfo]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._extract_model_info(
    response_metadata: typing.Dict[str, typing.Any]
) -> nemoguardrails.integrations.langchain.llm_adapter._ModelInfo
```

```python
nemoguardrails.integrations.langchain.llm_adapter._extract_reasoning(
    response: typing.Any
) -> typing.Optional[str]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._extract_tool_calls(
    response: typing.Any
) -> typing.Optional[typing.List[nemoguardrails.types.ToolCall]]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._extract_usage(
    response: typing.Any
) -> typing.Optional[nemoguardrails.types.UsageInfo]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._finalize_tool_call_acc(
    acc: typing.Dict[int, typing.Dict[str, typing.Any]]
) -> typing.List[nemoguardrails.types.ToolCall]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._flatten_content(
    raw: typing.Any
) -> typing.Optional[str]
```

```python
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.

```python
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:**

The LLM instance

**Returns:** `Optional[str]`

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

```python
nemoguardrails.integrations.langchain.llm_adapter._langchain_chunk_to_llm_response_chunk(
    chunk: typing.Any
) -> nemoguardrails.types.LLMResponseChunk
```

```python
nemoguardrails.integrations.langchain.llm_adapter._langchain_response_to_llm_response(
    response: typing.Any
) -> nemoguardrails.types.LLMResponse
```

```python
nemoguardrails.integrations.langchain.llm_adapter._map_finish_reason(
    raw: typing.Optional[str]
) -> typing.Optional[nemoguardrails.types.FinishReason]
```

```python
nemoguardrails.integrations.langchain.llm_adapter._BASE_URL_ATTRIBUTES = ['base_url', 'endpoint_url', 'server_url', 'azure_endpoint', 'openai_api_base', ...
```

```python
nemoguardrails.integrations.langchain.llm_adapter._EXTRACTED_METADATA_KEYS = frozenset({'model_name', 'model', 'finish_reason', 'stop_reason', 'stop_sequence...
```

```python
nemoguardrails.integrations.langchain.llm_adapter._FINISH_REASON_MAP: Dict[str, FinishReason] = {'stop': 'stop', 'end_turn': 'stop', 'length': 'length', 'max_tokens': 'length',...
```

```python
nemoguardrails.integrations.langchain.llm_adapter._REASONING_KEYS = frozenset({'reasoning_content'})
```

```python
nemoguardrails.integrations.langchain.llm_adapter.log = logging.getLogger(__name__)
```