---
title: 条件
---

import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'

条件ブロックは、ブール式に基づいてワークフローの実行を分岐させます。以前のブロック出力を使用して条件を評価し、LLMを必要とせずに異なるパスにルーティングします。

<div className="flex justify-center">
  <Image
    src="/static/blocks/condition.png"
    alt="条件ブロック"
    width={500}
    height={400}
    className="my-6"
  />
</div>

## 設定オプション

### 条件

評価される1つ以上の条件を定義します。各条件には以下が含まれます：

- **式**: trueまたはfalseに評価されるJavaScript/TypeScript式
- **パス**: 条件がtrueの場合にルーティングする宛先ブロック
- **説明**: 条件が何をチェックするかの任意の説明

複数の条件を作成でき、順番に評価されます。最初にマッチした条件が実行パスを決定します。

### 条件式のフォーマット

条件はJavaScript構文を使用し、前のブロックからの入力値を参照できます。

<Tabs items={['スコアしきい値', 'テキスト分析', '複数条件']}>
  <Tab>

    ```javascript
    // Check if a score is above a threshold
    <agent.score> > 75
    ```

  </Tab>
  <Tab>

    ```javascript
    // Check if a text contains specific keywords
    <agent.text>.includes('urgent') || <agent.text>.includes('emergency')
    ```

  </Tab>
  <Tab>

    ```javascript
    // Check multiple conditions
    <agent.age> >= 18 && <agent.country> === 'US'
    ```

  </Tab>
</Tabs>

### 結果へのアクセス

条件が評価された後、以下の出力にアクセスできます：

- **condition.result**: 条件評価のブール結果
- **condition.matched_condition**: マッチした条件のID
- **condition.content**: 評価結果の説明
- **condition.path**: 選択されたルーティング先の詳細

## 高度な機能

### 複雑な式

条件内でJavaScriptの演算子や関数を使用できます：

```javascript
// String operations
<user.email>.endsWith('@company.com')

// Array operations
<api.tags>.includes('urgent')

// Mathematical operations
<agent.confidence> * 100 > 85

// Date comparisons
new Date(<api.created_at>) > new Date('2024-01-01')
```

### 複数条件の評価

条件は一致するものが見つかるまで順番に評価されます：

```javascript
// Condition 1: Check for high priority
<ticket.priority> === 'high'

// Condition 2: Check for urgent keywords
<ticket.subject>.toLowerCase().includes('urgent')

// Condition 3: Default fallback
true
```

### エラー処理

条件は以下を自動的に処理します：
- 未定義またはnull値の安全な評価
- 型の不一致に対する適切なフォールバック
- 無効な式のエラーログ記録
- 欠落した変数のデフォルト値処理

## 出力

- **`<condition.result>`**: 評価の真偽結果
- **`<condition.matched_condition>`**: マッチした条件のID
- **`<condition.content>`**: 評価結果の説明
- **`<condition.path>`**: 選択されたルーティング先の詳細

## 使用例

**カスタマーサポートのルーティング** - 優先度に基づいてチケットをルーティング

```
API (Ticket) → Condition (priority === 'high') → Agent (Escalation) or Agent (Standard)
```

**コンテンツモデレーション** - 分析に基づいてコンテンツをフィルタリング

```
Agent (Analyze) → Condition (toxicity > 0.7) → Moderation or Publish
```

**ユーザーオンボーディングフロー** - ユーザータイプに基づいてオンボーディングをパーソナライズ

```
Function (Process) → Condition (account_type === 'enterprise') → Advanced or Simple
```

## ベストプラクティス

- **条件を正しく順序付ける**: より具体的な条件を一般的な条件の前に配置して、特定のロジックがフォールバックよりも優先されるようにします
- **必要に応じてelse分岐を使用する**: 条件が一致せず、else分岐が接続されていない場合、ワークフロー分岐は正常に終了します。一致しないケースのフォールバックパスが必要な場合は、else分岐を接続してください
- **式をシンプルに保つ**: 読みやすさとデバッグのしやすさのために、明確で簡潔なブール式を使用します
- **条件を文書化する**: チームのコラボレーションとメンテナンスを向上させるために、各条件の目的を説明する説明を追加します
- **エッジケースをテストする**: 条件範囲の境界値でテストすることで、条件が境界値を正しく処理することを確認します
