nemoguardrails.integrations.langchain.message_utils

View as Markdown

Utilities for converting between LangChain messages and dictionary format.

Module Contents

Functions

NameDescription
all_base_messagesCheck if all items in a list are BaseMessage instances.
chatmessage_to_langchain_message-
chatmessages_to_langchain_messages-
create_ai_messageCreate an AIMessage with optional fields.
create_ai_message_chunkCreate an AIMessageChunk with optional metadata.
create_human_messageCreate a HumanMessage with optional fields.
create_system_messageCreate a SystemMessage with optional fields.
create_tool_messageCreate a ToolMessage with optional fields.
dict_to_messageConvert a dictionary to the appropriate BaseMessage type.
dicts_to_messagesConvert a list of dictionaries to BaseMessage objects.
get_message_classGet the appropriate message class for a given type/role.
get_message_roleGet the role string for a BaseMessage.
is_ai_messageCheck if an object is an AIMessage.
is_base_messageCheck if an object is any type of BaseMessage.
is_human_messageCheck if an object is a HumanMessage.
is_message_typeCheck if an object is an instance of a specific message type.
is_system_messageCheck if an object is a SystemMessage.
is_tool_messageCheck if an object is a ToolMessage.
message_to_dictConvert a BaseMessage to dictionary format, preserving all model fields.
messages_to_dictsConvert a list of BaseMessage objects to dictionary format.
tool_calls_to_langchain_format-

Data

_ROLE_TO_LANGCHAIN

API

nemoguardrails.integrations.langchain.message_utils.all_base_messages(
items: typing.List[typing.Any]
) -> bool

Check if all items in a list are BaseMessage instances.

nemoguardrails.integrations.langchain.message_utils.chatmessage_to_langchain_message(
msg: nemoguardrails.types.ChatMessage
) -> langchain_core.messages.BaseMessage
nemoguardrails.integrations.langchain.message_utils.chatmessages_to_langchain_messages(
msgs: typing.List[nemoguardrails.types.ChatMessage]
) -> typing.List[langchain_core.messages.BaseMessage]
nemoguardrails.integrations.langchain.message_utils.create_ai_message(
content: str,
tool_calls: typing.Optional[list] = None,
additional_kwargs: typing.Optional[dict] = None,
response_metadata: typing.Optional[dict] = None,
id: typing.Optional[str] = None,
name: typing.Optional[str] = None,
usage_metadata: typing.Optional[dict] = None,
extra_kwargs = {}
) -> langchain_core.messages.AIMessage

Create an AIMessage with optional fields.

nemoguardrails.integrations.langchain.message_utils.create_ai_message_chunk(
content: str,
metadata = {}
) -> langchain_core.messages.AIMessageChunk

Create an AIMessageChunk with optional metadata.

nemoguardrails.integrations.langchain.message_utils.create_human_message(
content: str,
additional_kwargs: typing.Optional[dict] = None,
response_metadata: typing.Optional[dict] = None,
id: typing.Optional[str] = None,
name: typing.Optional[str] = None
) -> langchain_core.messages.HumanMessage

Create a HumanMessage with optional fields.

nemoguardrails.integrations.langchain.message_utils.create_system_message(
content: str,
additional_kwargs: typing.Optional[dict] = None,
response_metadata: typing.Optional[dict] = None,
id: typing.Optional[str] = None,
name: typing.Optional[str] = None
) -> langchain_core.messages.SystemMessage

Create a SystemMessage with optional fields.

nemoguardrails.integrations.langchain.message_utils.create_tool_message(
content: str,
tool_call_id: str,
name: typing.Optional[str] = None,
additional_kwargs: typing.Optional[dict] = None,
response_metadata: typing.Optional[dict] = None,
id: typing.Optional[str] = None,
artifact: typing.Optional[typing.Any] = None,
status: typing.Optional[str] = None
) -> langchain_core.messages.ToolMessage

Create a ToolMessage with optional fields.

nemoguardrails.integrations.langchain.message_utils.dict_to_message(
msg_dict: typing.Dict[str, typing.Any]
) -> langchain_core.messages.BaseMessage

Convert a dictionary to the appropriate BaseMessage type.

Parameters:

msg_dict
Dict[str, Any]

Dictionary with role/type, content, and optional fields

Returns: BaseMessage

The appropriate BaseMessage instance

nemoguardrails.integrations.langchain.message_utils.dicts_to_messages(
msg_dicts: typing.List[typing.Dict[str, typing.Any]]
) -> typing.List[langchain_core.messages.BaseMessage]

Convert a list of dictionaries to BaseMessage objects.

Parameters:

msg_dicts
List[Dict[str, Any]]

List of message dictionaries

Returns: List[BaseMessage]

List of appropriate BaseMessage instances

nemoguardrails.integrations.langchain.message_utils.get_message_class(
msg_type: str
) -> typing.Type[langchain_core.messages.BaseMessage]

Get the appropriate message class for a given type/role.

nemoguardrails.integrations.langchain.message_utils.get_message_role(
msg: langchain_core.messages.BaseMessage
) -> str

Get the role string for a BaseMessage.

nemoguardrails.integrations.langchain.message_utils.is_ai_message(
obj: typing.Any
) -> bool

Check if an object is an AIMessage.

nemoguardrails.integrations.langchain.message_utils.is_base_message(
obj: typing.Any
) -> bool

Check if an object is any type of BaseMessage.

nemoguardrails.integrations.langchain.message_utils.is_human_message(
obj: typing.Any
) -> bool

Check if an object is a HumanMessage.

nemoguardrails.integrations.langchain.message_utils.is_message_type(
obj: typing.Any,
message_type: typing.Type[langchain_core.messages.BaseMessage]
) -> bool

Check if an object is an instance of a specific message type.

nemoguardrails.integrations.langchain.message_utils.is_system_message(
obj: typing.Any
) -> bool

Check if an object is a SystemMessage.

nemoguardrails.integrations.langchain.message_utils.is_tool_message(
obj: typing.Any
) -> bool

Check if an object is a ToolMessage.

nemoguardrails.integrations.langchain.message_utils.message_to_dict(
msg: langchain_core.messages.BaseMessage
) -> typing.Dict[str, typing.Any]

Convert a BaseMessage to dictionary format, preserving all model fields.

Parameters:

msg
BaseMessage

The BaseMessage to convert

Returns: Dict[str, Any]

Dictionary representation with role, content, and all other fields

nemoguardrails.integrations.langchain.message_utils.messages_to_dicts(
messages: typing.List[langchain_core.messages.BaseMessage]
) -> typing.List[typing.Dict[str, typing.Any]]

Convert a list of BaseMessage objects to dictionary format.

Parameters:

messages
List[BaseMessage]

List of BaseMessage objects

Returns: List[Dict[str, Any]]

List of dictionary representations

nemoguardrails.integrations.langchain.message_utils.tool_calls_to_langchain_format(
tool_calls: typing.List[typing.Dict[str, typing.Any]]
) -> typing.List[typing.Dict[str, typing.Any]]
nemoguardrails.integrations.langchain.message_utils._ROLE_TO_LANGCHAIN = {Role.USER: HumanMessage, Role.ASSISTANT: AIMessage, Role.SYSTEM: SystemMessage,...