Files
sim/apps/docs/content/docs/zh/blocks/parallel.mdx
cherkanov_art 6f595f6a2c feat(i18n): change lockfile (#3216)
* fix: update i18n.lock

* feat(docs): enhance documentation with new sections on file handling, form deployment, quick reference, agent skills, and A2A integration
2026-02-15 23:41:56 -08:00

244 lines
6.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 并行
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
并行块是一个容器,可以同时执行多个实例,从而加快工作流的处理速度。与其按顺序处理项目,不如同时处理它们。
<Callout type="info">
并行块是容器节点,可以同时多次执行其内容,而循环则是按顺序执行。
</Callout>
## 配置选项
### 并行类型
选择两种并行执行类型之一:
<Tabs items={['基于计数', '基于集合']}>
<Tab>
**基于计数的并行** - 执行固定数量的并行实例:
<div className="flex justify-center">
<Image
src="/static/blocks/parallel-1.png"
alt="基于计数的并行执行"
width={500}
height={400}
className="my-6"
/>
</div>
当您需要同时多次运行相同操作时使用此选项。
```
Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘
```
</Tab>
<Tab>
**基于集合的并行** - 将一个集合分配到并行实例中:
<div className="flex justify-center">
<Image
src="/static/blocks/parallel-2.png"
alt="基于集合的并行执行"
width={500}
height={400}
className="my-6"
/>
</div>
每个实例同时处理集合中的一个项目。
```
Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘
```
</Tab>
</Tabs>
## 如何使用并行块
### 创建并行块
1. 从工具栏中将一个并行块拖到画布上
2. 配置并行类型和参数
3. 在并行容器中拖入一个单独的块
4. 根据需要连接块
### 访问结果
并行块完成后,您可以访问聚合结果:
- **`<parallel.results>`**:来自所有并行实例的结果数组
## 示例用例
**批量 API 处理** - 同时处理多个 API 调用
```
Parallel (Collection) → API (Call Endpoint) → Function (Aggregate)
```
**多模型 AI 处理** - 同时从多个 AI 模型获取响应
```
Parallel (["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"]) → Agent → Evaluator (Select Best)
```
## 高级功能
### 结果聚合
来自所有并行实例的结果会自动收集:
```javascript
// In a Function block after the parallel
const allResults = input.parallel.results;
// Returns: [result1, result2, result3, ...]
```
### 实例隔离
每个并行实例独立运行:
- 独立的变量作用域
- 实例之间没有共享状态
- 一个实例的失败不会影响其他实例
### 限制
<Callout type="warning">
容器块(循环和并行)不能嵌套在彼此内部。这意味着:
- 您不能在并行块中放置循环块
- 您不能在并行块中放置另一个并行块
- 您不能在一个容器块中放置另一个容器块
</Callout>
<Callout type="info">
虽然并行执行速度更快,但请注意:
- 在进行并发请求时的 API 速率限制
- 使用大型数据集时的内存使用情况
- 最多 20 个并发实例,以防止资源耗尽
</Callout>
## 并行与循环
了解何时使用每种方式:
| 特性 | 并行 | 循环 |
|---------|----------|------|
| 执行方式 | 并发 | 顺序 |
| 速度 | 独立操作更快 | 较慢但有序 |
| 顺序 | 无保证顺序 | 保持顺序 |
| 使用场景 | 独立操作 | 依赖操作 |
| 资源使用 | 较高 | 较低 |
## 输入与输出
<Tabs items={['配置', '变量', '结果']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>并行类型</strong>:选择“计数”或“集合”
</li>
<li>
<strong>计数</strong>:要运行的实例数量(基于计数)
</li>
<li>
<strong>集合</strong>:要分配的数组或对象(基于集合)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>parallel.currentItem</strong>:此实例的项目
</li>
<li>
<strong>parallel.index</strong>:实例编号(从 0 开始)
</li>
<li>
<strong>parallel.items</strong>:完整集合(基于集合)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>parallel.results</strong>:所有实例结果的数组
</li>
<li>
<strong>访问</strong>:在并行之后的模块中可用
</li>
</ul>
</Tab>
</Tabs>
## 最佳实践
- **仅限独立操作**:确保操作之间没有依赖关系
- **处理速率限制**:为 API 密集型工作流添加延迟或节流
- **错误处理**:每个实例应优雅地处理自己的错误
## 输入与输出
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>并行类型</strong>:在 'count' 或 'collection' 之间选择
</li>
<li>
<strong>Count</strong>:要运行的实例数量(基于 count
</li>
<li>
<strong>Collection</strong>:要分发的数组或对象(基于 collection
</li>
</ul>
</Tab>
<Tab>
仅在并行内部可用:
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<parallel.index>"}</strong>:实例编号(从 0 开始)
</li>
<li>
<strong>{"<parallel.currentItem>"}</strong>:该实例对应的项(仅限 collection 模式)
</li>
<li>
<strong>{"<parallel.items>"}</strong>:完整集合(仅限 collection 模式)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<blockname.results>"}</strong>:所有实例结果的数组(通过区块名访问)
</li>
<li>
<strong>访问</strong>:并行执行完成后可在后续区块中访问
</li>
</ul>
</Tab>
</Tabs>
## 最佳实践
- **仅限独立操作**:确保各操作之间互不依赖
- **处理速率限制**:对于大量 API 操作的流程,添加延迟或限流
- **错误处理**:每个实例应能优雅地处理自身错误