Implementation:Infiniflow Ragflow Component Class Registry
| Knowledge Sources | |
|---|---|
| Domains | RAG, Agent_Systems |
| Last Updated | 2026-02-12 06:00 GMT |
Overview
Concrete tool for resolving component type names to executable classes provided by RAGFlow's agent component registry.
Description
The component_class function in agent/component/__init__.py dynamically imports component modules and resolves string names to classes. It supports components from three packages: agent.component (LLM, Agent, Categorize, etc.), agent.tools (Tavily, Wikipedia, SQL, etc.), and rag.flow (parser modules). Each component extends ComponentBase with an associated ComponentParamBase for configuration validation.
Usage
Called during Canvas initialization when parsing the DSL to instantiate component objects.
Code Reference
Source Location
- Repository: ragflow
- File: agent/component/__init__.py (L51-58), agent/component/base.py (L40-600)
Signature
def component_class(class_name: str) -> Type:
"""Resolve a component class by name.
Searches agent.component, agent.tools, and rag.flow packages.
Args:
class_name: str - Component class name (e.g., "LLM", "Retrieval", "Categorize").
Returns:
Type - The component class.
Raises:
ValueError - If class not found in any package.
"""
class ComponentParamBase:
"""Base class for component parameters.
Attributes:
message_history_window_size: int
inputs: list
outputs: list
description: str
max_retries: int
delay_after_error: int
"""
def check(self): ...
class ComponentBase(ABC):
"""Base class for all agent components.
Args:
canvas: Graph - Parent canvas/graph.
id: str - Component ID.
param: ComponentParamBase - Validated parameters.
"""
def __init__(self, canvas, id, param: ComponentParamBase): ...
Import
from agent.component import component_class
from agent.component.base import ComponentBase, ComponentParamBase
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| class_name | str | Yes | Component type name |
Outputs
| Name | Type | Description |
|---|---|---|
| component_class | Type | Resolved component class |
Usage Examples
from agent.component import component_class
# Resolve an LLM component
LLMClass = component_class("LLM")
# LLMClass is now agent.component.llm.LLM
# Resolve a retrieval component
RetrievalClass = component_class("Retrieval")