Appearance
Categorize 组件
概述
Categorize组件是RAGFlow 逻辑控制组件,文本分类路由组件,根据内容分类自动路由到不同处理分支。
主要功能
- 🏷️ 多分类文本分析和智能路由
- 📊 支持多种配置选项和参数调节
- 🔧 与其他组件无缝集成
- ⚡ 高性能处理和错误恢复
适用场景
- 客服系统的问题分类
- 文档自动归档
- 意图识别和路由
- 多场景处理分发
参数配置
基础参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
categories | object | 是 | {} | 分类类别配置 |
confidence_threshold | number | 否 | 0.7 | 置信度阈值 |
llm_id | string | 是 | 用于分类的LLM模型 | |
category_mapping | object | 是 | {} | 分类到组件的映射 |
详细说明
主要参数说明
categories
- 类型: object
- 描述: 分类类别配置
- 默认值: {}
- 是否必填: 是
confidence_threshold
- 类型: number
- 描述: 置信度阈值
- 默认值: 0.7
- 是否必填: 否
llm_id
- 类型: string
- 描述: 用于分类的LLM模型
- 默认值:
- 是否必填: 是
category_mapping
- 类型: object
- 描述: 分类到组件的映射
- 默认值: {}
- 是否必填: 是
输入输出
输入格式
Categorize组件接受上游组件的标准输出:
json
{
"content": "输入内容",
"component_id": "upstream_component_id",
"reference": []
}输出格式
json
{
"content": "处理后的输出内容",
"component_id": "categorize_component_id",
"metadata": {
"processing_time": 0.123,
"success": true
},
"reference": []
}使用示例
示例1: 基础配置
json
{
"component_name": "Categorize",
"params": {
"categories": {}
}
}示例2: 高级配置
json
{
"component_name": "Categorize",
"params": {
"categories": {},
"confidence_threshold": 0.7,
"llm_id": "",
"category_mapping": {}
}
}前端实现
节点组件
typescript
// web/src/pages/flow/canvas/node/categorize-node.tsx
export function CategorizeNode({ id, data, isConnectable, selected }: NodeProps) {
return (
<section className={`${styles.ragNode} ${selected ? styles.selectedNode : ''}`}>
<Handle type="target" position={Position.Left} isConnectable={isConnectable} />
<Handle type="source" position={Position.Right} isConnectable={isConnectable} />
<NodeHeader id={id} name={data.name} label={data.label} />
<div className={styles.nodeBody}>
<div className={styles.nodeInfo}>
<span className={styles.nodeDescription}>文本分类路由组件,根据内容分类自动路由到不同处理分支</span>
</div>
</div>
</section>
);
}配置表单
typescript
// web/src/pages/flow/form/categorize-form/index.tsx
const CategorizeForm: React.FC<IOperatorForm> = ({ onValuesChange, form }) => {
return (
<Form form={form} layout="vertical" onValuesChange={onValuesChange}>
<Form.Item
name="confidence_threshold"
label="置信度阈值"
>
<InputNumber style={{ width: '100%' }} placeholder="0.7" />
</Form.Item>
<Form.Item
name="llm_id"
label="用于分类的LLM模型"
rules={[{ required: true, message: '请输入用于分类的LLM模型' }]}
>
<Input placeholder="请输入用于分类的LLM模型" />
</Form.Item>
</Form>
);
};后端实现
参数类
python
# agent/component/categorize.py
class CategorizeParam(ComponentParamBase):
"""
Categorize组件参数
"""
def __init__(self):
super().__init__()
self.categories = {} # 分类类别配置
self.confidence_threshold = 0.7 # 置信度阈值
self.llm_id = "" # 用于分类的LLM模型
self.category_mapping = {} # 分类到组件的映射
def check(self):
"""参数验证"""
# 验证必填参数
self.check_empty(["categories", "llm_id", "category_mapping"], "必填参数不能为空")
class Categorize(ComponentBase):
"""
Categorize组件实现
"""
component_name = "Categorize"
def _run(self, history, **kwargs):
"""
执行Categorize组件逻辑
"""
# 获取输入
input_df = self.get_input()
if input_df.empty:
raise ValueError("Categorize组件需要输入数据")
input_content = input_df.iloc[0]["content"]
# 执行核心处理逻辑
result = self._process_content(input_content)
# 返回结果
return pd.DataFrame([{
"content": result,
"component_id": self._id,
"metadata": {
"processing_time": time.time() - start_time,
"success": True
},
"reference": input_df.iloc[0].get("reference", [])
}])
def _process_content(self, content):
"""
处理内容的核心逻辑
"""
# TODO: 实现具体的处理逻辑
return f"已处理: {content}"最佳实践
1. 参数配置建议
- 根据具体使用场景调整参数
- 注意参数之间的依赖关系
- 合理设置超时和重试机制
2. 错误处理
python
def robust_processing(self, content):
"""
带错误处理的处理方法
"""
try:
return self._process_content(content)
except Exception as e:
logger.error(f"Categorize组件处理失败: {str(e)}")
return f"处理失败: {str(e)}"3. 性能优化
- 合理使用缓存机制
- 优化处理算法
- 控制资源使用
常见问题
Q1: 组件配置后不生效怎么办?
A: 检查参数格式和必填项是否正确配置。
Q2: 处理大量数据时性能较慢?
A: 可以调整批处理大小或使用异步处理。
Q3: 如何调试组件执行过程?
A: 使用调试模式和日志功能查看详细执行信息。
相关组件
推荐搭配组件
典型工作流模式
Begin → Categorize → Answer
其他组件 → Categorize → 下游组件组件版本: v1.0.0
最后更新: 2025-07-12