```mdx
---
title: "10分でクイックスタート"
description: "Difyを使った簡単なアプリの作成"
icon: "forward"
---

Difyの本当の価値は、どんなに複雑なアイデアでも簡単に構築、展開、スケールできる点にあります。迅速なプロトタイピング、スムーズな反復、信頼性のある展開をあらゆるレベルで実現するために構築されています。

まずは、信頼できる大規模言語モデル（LLM）の統合を学びましょう。このガイドでは、ユーザーの質問を分類し、LLMを使用して直接応答し、国ごとの面白い事実で応答を強化するシンプルなチャットボットを構築します。

<iframe 
  className="w-full aspect-video rounded-xl" 
  src="https://www.youtube.com/embed/opKZRpfd80k?si=HEkyjRpiYheMyrZ0" 
  title="Dify Quick Start Video" 
  frameBorder="0" 
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
  allowFullScreen 
/>

## ステップ1: 新しいワークフローを作成する (2分)

1. **Studio** > **ワークフロー** > **空から作成** > **オーケストレート** > **新しい对话流** > **作成**に進みます。

## ステップ2: ワークフローノードを追加する (6分)

<Tip>
  変数を参照したい場合は、まず `{` または `/` を入力すると、ワークフロー内で使用可能なさまざまな変数が表示されます。
</Tip>

### 1. LLMノードと出力: 質問を理解して回答する

<Info>
  `LLM` ノードは、ユーザー入力に基づいて応答を生成するために言語モデルにプロンプトを送信します。API呼び出し、レート制限、インフラストラクチャの複雑さを抽象化し、ロジックの設計に集中できます。
</Info>

<Steps>
  <Step title="LLMノードを作成する">
    `ノードを追加` ボタンを使用してLLMノードを作成し、スタートノードに接続します。
  </Step>
  
  <Step title="モデルを構成する">
    デフォルトのモデルを選択します。
  </Step>
  
  <Step title="システムプロンプトを設定する">
    システムプロンプトフィールドに以下を貼り付けます:

    ```text
    ユーザーはある国について質問します。質問は {{sys.query}} です。
    タスク: 
    1. 言及された国を特定する。
    2. 質問を明確に言い換える。
    3. 一般的な知識を使用して質問に答える。
    
    以下のJSON形式で応答してください:
    {   
      "country": "<country name>",
      "question": "<rephrased question>",
      "answer": "<direct answer to the question>" 
    }
    ```
  </Step>
  
  <Step title="構造化出力を有効にする">
    **構造化出力を有効にする**ことで、LLMが返す内容を簡単に制御し、一貫性のある機械可読の出力を実現し、正確なデータ抽出や条件付きロジックに使用できます。
    
    - 出力変数構造のトグルをONにし、`JSONからインポート`をクリックします。
    - 以下を貼り付けます:
    
    ```json
    {   
      "country": "string",   
      "question": "string",   
      "answer": "string" 
    }
    ```
  </Step>
</Steps>

### 2. コードブロック: 面白い事実を取得する

<Info>
  `コード` ノードは、コードを使用してカスタムロジックを実行します。視覚的なワークフロー内で必要な場所にコードを挿入でき、バックエンド全体を配線する手間を省けます。
</Info>

<Steps>
  <Step title="コードノードを作成する">
    `ノードを追加` ボタンを使用して `コード` ノードを作成し、LLMブロックに接続します。
  </Step>
  
  <Step title="入力変数を構成する">
    1つの `入力変数` 名を "country" に変更し、変数を `structured_output` > `country` に設定します。
  </Step>
  
  <Step title="Pythonコードを追加する">
    以下のコードを `PYTHON3` に貼り付けます:

    ```python
    def main(country: str) -> dict:     
      country_name = country.lower()     
      fun_facts = {
        "japan": "日本には500万台以上の自動販売機があります。",
        "france": "フランスは世界で最も訪問されている国です。",
        "italy": "イタリアには他のどの国よりも多くのユネスコ世界遺産があります。"     
      }     
      fun_fact = fun_facts.get(country_name, f"{country.title()}についての面白い事実はありません。")
      return {"fun_fact": fun_fact}
    ```
  </Step>
  
  <Step title="出力変数名を変更する">
    出力変数 `result` を `fun_fact` に変更して、よりラベルが明確な変数にします。
  </Step>
</Steps>

### 3. アンサーノード: ユーザーへの最終回答

<Info>
  `アンサー` ノードは、返すためのクリーンな最終出力を作成します。
</Info>

<Steps>
  <Step title="アンサーノードを作成する">
    `ノードを追加` ボタンを使用して `アンサー` ノードを作成します。
  </Step>
  
  <Step title="回答フィールドを構成する">
    回答フィールドに以下を貼り付けます:

    ```text
    Q: {{ structured_output.question }} 

    A: {{ structured_output.answer }} 

    面白い事実: {{ fun_fact }}
    ```
  </Step>
</Steps>

ワークフローの終了:

<img
  src="/images/quick-start-workflow-overview.png"
  alt="LLM、コード、およびアンサーノードが接続された完全なワークフロー図"
  style={{ width: "100%" }}
/>

---

## ステップ3: ボットをテストする (3分)

`プレビュー` をクリックして、次のように質問します:

- "フランスの首都はどこですか？"
- "日本料理について教えて"
- "イタリアの文化を説明してください"
- その他の質問

ボットが予想通りに動作することを確認してください！

## ボットの完成！

このガイドでは、言語モデルを信頼性とスケーラビリティを持って統合する方法を示しました。Difyの視覚的なワークフローとモジュールノードを使用することで、ただ速く構築するだけでなく、LLMを活用したアプリのためのクリーンでプロダクション対応のアーキテクチャを採用しています。
```