OpenBMB/ChatDev · error · ConfigError
unsupported node type '{node_type}'
Error message
unsupported node type '{node_type}' What it means
NodeConfig.from_dict resolves the node's 'type' string through get_node_schema(); an unknown type raises SchemaLookupError wrapped into this ConfigError with path pointing at 'type'. It is also reached via add_successor which delegates to from_dict.
Source
Thrown at entity/configs/node/node.py:176
EnumOption(
value=name,
label=name,
description=schema.summary or "No description provided for this node type",
)
for name, schema in registrations.items()
],
)
return specs
@classmethod
def from_dict(cls, data: Mapping[str, Any], *, path: str) -> "Node":
mapping = require_mapping(data, path)
node_id = require_str(mapping, "id", path)
node_type = require_str(mapping, "type", path)
try:
schema = get_node_schema(node_type)
except SchemaLookupError as exc:
raise ConfigError(
f"unsupported node type '{node_type}'",
extend_path(path, "type"),
) from exc
description = optional_str(mapping, "description", path)
# keep_context = bool(mapping.get("keep_context", False))
log_output = bool(mapping.get("log_output", True))
context_window = int(mapping.get("context_window", 0))
input_value = ensure_list(mapping.get("input"))
output_value = ensure_list(mapping.get("output"))
input_messages: List[Message] = []
for value in input_value:
if isinstance(value, dict) and "role" in value:
input_messages.append(Message.from_dict(value))
elif isinstance(value, Message):
input_messages.append(value)
else:View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Correct the 'type' string to a registered node type name
- Import the module that registers the custom node type before parsing the graph config
- List registered node types from the node schema registry to see valid names
- Align docs/config with the installed library version
Example fix
# before - id: n1 type: llm_agent # after - id: n1 type: agent
Defensive patterns
Strategy: validation
Validate before calling
from entity.configs.node.node import get_node_schema
for n in graph_config['nodes']:
try:
get_node_schema(n['type'])
except SchemaLookupError:
raise ValueError(f"unknown node type {n['type']}") from None Try / catch
try:
node = NodeConfig.from_dict(data, path='nodes[0]')
except ConfigError as e:
if 'unsupported node type' in str(e):
# fallback: default type or report allowed types
... Prevention
- Import custom node registration modules before parsing
- Validate graph configs against the node registry in CI
When it happens
Trigger: Building a graph config with a node whose type is misspelled or unregistered, e.g. type: llm_agent vs the registered 'agent' type.
Common situations: Typos in node type names in YAML/JSON graph definitions; node types from a different library version; missing imports of modules that register custom node types; copy-pasted examples from incompatible docs.
Related errors
- unsupported memory store type '{store_type}'
- model.name must be a non-empty string
- model.input_mode must be 'prompt' or 'messages'
- tooling must be a list
- memories must be a list
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/1f83005d26c00e7e.
Report an issue: GitHub.