nemoguardrails.types.ChatMessage#

class nemoguardrails.types.ChatMessage[source]#

Bases: object

ChatMessage(role: nemoguardrails.types.Role, content: Union[str, List[Dict[str, Any]], NoneType] = None, tool_calls: Optional[List[nemoguardrails.types.ToolCall]] = None, tool_call_id: Optional[str] = None, name: Optional[str] = None, provider_metadata: Dict[str, Any] = <factory>)

role: Role#
content: Union[str, List[Dict[str, Any]], None] = None#
tool_calls: Optional[List[ToolCall]] = None#
tool_call_id: Optional[str] = None#
name: Optional[str] = None#
provider_metadata: Dict[str, Any]#
classmethod from_user(content, **kwargs)[source]#
Return type:

ChatMessage

Parameters:

content (str)

classmethod from_assistant(content, **kwargs)[source]#
Return type:

ChatMessage

Parameters:

content (str)

classmethod from_system(content, **kwargs)[source]#
Return type:

ChatMessage

Parameters:

content (str)

classmethod from_tool(content, tool_call_id, **kwargs)[source]#
Return type:

ChatMessage

Parameters:
  • content (str)

  • tool_call_id (str)

to_dict()[source]#
Return type:

Dict[str, Any]

classmethod from_dict(d)[source]#

Create a ChatMessage from a dict.

Accepts both the canonical nested tool call format ({"function": {"name": ..., "arguments": ...}}) and the legacy flat format ({"name": ..., "args": ...}). JSON string arguments are parsed automatically. Role aliases like “bot”, “human”, and “developer” are mapped to canonical Role values. Unknown keys are captured into provider_metadata.

Return type:

ChatMessage

Parameters:

d (Dict[str, Any])

__init__(
role,
content=None,
tool_calls=None,
tool_call_id=None,
name=None,
provider_metadata=<factory>,
)#
Parameters:
  • role (Role)

  • content (str | List[Dict[str, Any]] | None)

  • tool_calls (List[ToolCall] | None)

  • tool_call_id (str | None)

  • name (str | None)

  • provider_metadata (Dict[str, Any])

Return type:

None