--- layout: default title: "流程蓝图定义规范" parent: "Chinese (Beta)" --- <<<<<<< HEAD # 流程蓝图定义规范 > **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta. ## 概述 流程蓝图在 TrustGraph 系统中定义了一个完整的数据流模式模板。当实例化时,它会创建一个相互连接的处理单元网络,该网络处理数据摄取、处理、存储和查询,作为一个统一的系统。 ## 结构 流程蓝图定义由五个主要部分组成: ### 1. 类部分 定义共享服务处理器,这些处理器每个流程蓝图实例化一次。这些处理器处理来自此类的所有流程实例的请求。 ======= # 流工作蓝图定义规范 ## 概述 一个流工作蓝图定义了 TrustGraph 系统中完整的数据流模式模板。当实例化时,它会创建一个相互连接的处理单元网络,该网络处理数据摄取、处理、存储和查询,作为一个统一的系统。 ## 结构 一个流工作蓝图定义由五个主要部分组成: ### 1. 类部分 定义共享服务处理器,这些处理器每个流工作蓝图实例化一次。这些处理器处理来自此类的所有流实例的请求。 >>>>>>> 82edf2d (New md files from RunPod) ```json "class": { "service-name:{class}": { "request": "queue-pattern:{class}", "response": "queue-pattern:{class}", "settings": { "setting-name": "fixed-value", "parameterized-setting": "{parameter-name}" } } } ``` <<<<<<< HEAD **特性:** ======= **特点:** >>>>>>> 82edf2d (New md files from RunPod) 在同一类别的所有流程实例中共享。 通常是昂贵或无状态的服务(例如:大型语言模型、嵌入模型)。 使用 `{class}` 模板变量进行队列命名。 设置可以是固定值,也可以使用 `{parameter-name}` 语法进行参数化。 示例:`embeddings:{class}`, `text-completion:{class}`, `graph-rag:{class}` ### 2. 流程部分 定义与流程相关的处理器,这些处理器为每个独立的流程实例进行实例化。 每个流程都拥有自己的一组隔离的处理器。 ```json "flow": { "processor-name:{id}": { "input": "queue-pattern:{id}", "output": "queue-pattern:{id}", "settings": { "setting-name": "fixed-value", "parameterized-setting": "{parameter-name}" } } } ``` **特性:** 每个流程只有一个实例。 处理流程特定的数据和状态。 使用 `{id}` 模板变量进行队列命名。 设置可以是固定值,也可以使用 `{parameter-name}` 语法进行参数化。 示例:`chunker:{id}`, `pdf-decoder:{id}`, `kg-extract-relationships:{id}` ### 3. 接口部分 定义流程的入口点和交互协议。 这些构成了外部系统和内部组件通信的 API 表面。 <<<<<<< HEAD 接口可以有两种形式: **即发即弃模式**(单个队列): ======= 接口可以采用两种形式: **发布-订阅模式**(单个队列): >>>>>>> 82edf2d (New md files from RunPod) ```json "interfaces": { "document-load": "persistent://tg/flow/document-load:{id}", "triples-store": "persistent://tg/flow/triples-store:{id}" } ``` **请求/响应模式** (包含请求/响应字段的对象): ```json "interfaces": { "embeddings": { "request": "non-persistent://tg/request/embeddings:{class}", "response": "non-persistent://tg/response/embeddings:{class}" } } ``` **接口类型:** **入口点:** 外部系统注入数据的入口点 (`document-load`, `agent`) **服务接口:** 服务请求/响应模式 (`embeddings`, `text-completion`) **数据接口:** 触发/完成式数据流连接点 (`triples-store`, `entity-contexts-load`) ### 4. 参数部分 将流程特定的参数名称映射到集中存储的参数定义: ```json "parameters": { "model": "llm-model", "temp": "temperature", "chunk": "chunk-size" } ``` **特性:** 键是处理器设置中使用的参数名称(例如,`{model}`) 值引用存储在 schema/config 中的参数定义 允许在流程之间重用常见的参数定义 减少参数模式的重复 ### 5. 元数据 关于流程蓝图的附加信息: ```json "description": "Human-readable description", "tags": ["capability-1", "capability-2"] ``` ## 模板变量 ### 系统变量 #### {id} 被替换为唯一的流程实例标识符 为每个流程创建隔离的资源 示例:`flow-123`, `customer-A-flow` #### {class} 被替换为流程蓝图名称 为相同类别的流程创建共享资源 示例:`standard-rag`, `enterprise-rag` ### 参数变量 #### {parameter-name} 在流程启动时定义的自定义参数 参数名称与流程的 `parameters` 部分中的键匹配 用于在处理器设置中自定义行为 示例:`{model}`, `{temp}`, `{chunk}` 被替换为启动流程时提供的值 验证通过与集中存储的参数定义进行比较 ## 处理器设置 设置在实例化时向处理器提供配置值。 它们可以是: ### 静态设置 直接值,不会改变: ```json "settings": { "model": "gemma3:12b", "temperature": 0.7, "max_retries": 3 } ``` ### 参数化设置 使用在流程启动时提供的参数的值: ```json "settings": { "model": "{model}", "temperature": "{temp}", "endpoint": "https://{region}.api.example.com" } ``` 参数名称在设置中对应于流程的 `parameters` 部分中的键。 ### 设置示例 **带有参数的 LLM 处理器:** ```json // In parameters section: "parameters": { "model": "llm-model", "temp": "temperature", "tokens": "max-tokens", "key": "openai-api-key" } // In processor definition: "text-completion:{class}": { "request": "non-persistent://tg/request/text-completion:{class}", "response": "non-persistent://tg/response/text-completion:{class}", "settings": { "model": "{model}", "temperature": "{temp}", "max_tokens": "{tokens}", "api_key": "{key}" } } ``` **具有固定和参数化设置的分块器:** ```json // In parameters section: "parameters": { "chunk": "chunk-size" } // In processor definition: "chunker:{id}": { "input": "persistent://tg/flow/chunk:{id}", "output": "persistent://tg/flow/chunk-load:{id}", "settings": { "chunk_size": "{chunk}", "chunk_overlap": 100, "encoding": "utf-8" } } ``` ## 队列模式 (Pulsar) 流程蓝图使用 Apache Pulsar 进行消息传递。队列名称遵循 Pulsar 格式: ``` ://// ``` ### 组件: **持久性**: `persistent` 或 `non-persistent` (Pulsar 持久性模式) **租户**: `tg` 用于 TrustGraph 提供的流程蓝图定义 **命名空间**: 表示消息模式 `flow`: 适用于“发送即忘”服务 `request`: 适用于请求/响应服务的请求部分 `response`: 适用于请求/响应服务的响应部分 **主题**: 具有模板变量的特定队列/主题名称 ### 持久队列 模式: `persistent://tg/flow/:{id}` 用于“发送即忘”服务和持久数据流 数据在 Pulsar 存储中持久化,即使在重启后也保留 示例: `persistent://tg/flow/chunk-load:{id}` ### 非持久队列 模式: `non-persistent://tg/request/:{class}` 或 `non-persistent://tg/response/:{class}` 用于请求/响应消息模式 瞬态的,不由 Pulsar 持久化到磁盘 延迟较低,适用于 RPC 风格的通信 示例: `non-persistent://tg/request/embeddings:{class}` ## 数据流架构 流程蓝图创建统一的数据流,其中: <<<<<<< HEAD 1. **文档处理管道**: 从摄取到转换再到存储的流程 2. **查询服务**: 集成的处理器,查询相同的存储和服务 3. **共享服务**: 所有流程都可以使用的集中式处理器 4. **存储写入器**: 将处理后的数据持久化到适当的存储中 ======= 1. **文档处理管道**: 从摄取到转换再到存储 2. **查询服务**: 集成的处理器,查询相同的存储和服务 3. **共享服务**: 所有流程都可以使用的集中处理器 4. **存储写入器**: 将处理后的数据持久化到适当的存储 >>>>>>> 82edf2d (New md files from RunPod) 所有处理器(包括 `{id}` 和 `{class}`)协同工作,形成一个连贯的数据流图,而不是作为独立的系统。 ## 流程实例化示例 假设: 流程实例 ID: `customer-A-flow` 流程蓝图: `standard-rag` 流程参数映射: `"model": "llm-model"` `"temp": "temperature"` `"chunk": "chunk-size"` 用户提供的参数: `model`: `gpt-4` `temp`: `0.5` `chunk`: `512` 模板扩展: `persistent://tg/flow/chunk-load:{id}` → `persistent://tg/flow/chunk-load:customer-A-flow` `non-persistent://tg/request/embeddings:{class}` → `non-persistent://tg/request/embeddings:standard-rag` `"model": "{model}"` → `"model": "gpt-4"` `"temperature": "{temp}"` → `"temperature": "0.5"` `"chunk_size": "{chunk}"` → `"chunk_size": "512"` 这会创建: 用于 `customer-A-flow` 的隔离文档处理管道 用于所有 `standard-rag` 流程的共享嵌入服务 从文档摄取到查询的完整数据流 使用提供的参数值配置的处理器 ## 优点 1. **资源效率**: 昂贵的服务在流程之间共享 2. **流程隔离**: 每个流程都有自己的数据处理管道 3. **可扩展性**: 可以从相同的模板实例化多个流程 4. **模块化**: 共享组件和流程特定组件之间有明确的分离 5. **统一架构**: 查询和处理是相同的数据流的一部分