すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Dify を使用して AI 搭載の Q&A アシスタントを作成する

最終更新日:Jun 17, 2025

Dify は、企業または個人のナレッジベースを大規模言語モデル (LLM) アプリケーションと統合できるプラットフォームです。 Dify を使用して、カスタマイズされた AI 支援 Q&A ソリューションを設計し、ビジネスに適用できます。これは、ビジネスの開発と管理を促進するのに役立ちますContainer Service for Kubernetes (ACK) は、オンデマンドでビジネスを即座にスムーズにスケーリングできるサービスです。 ACK を使用してアプリケーション開発を促進できます。

手順

Dify を使用してカスタマイズされたサンプル AI アプリケーション

2024-08-21_16-01-26 (1)

サンプル AI Web アプリケーション

2024-08-23_14-14-02 (1)

カスタマイズされた AI 搭載 Q&A アシスタントを作成するには、次の手順を実行します。

  1. ack-dify をインストールする: ACK クラスタを作成し、クラスタに ack-dify コンポーネントをインストールします。

  2. AI 搭載 Q&A アシスタントを作成する: Dify プラットフォームにログインして AI 搭載 Q&A アシスタントを作成し、Web サイトを使用してアシスタントを公開します。

  3. AI 搭載 Q&A アシスタントをカスタマイズする: Q&A アシスタントのナレッジベースを準備します。このようにして、アシスタントはナレッジベースに基づいて質問に対する専門的な回答を提供できます。

yuque_diagram12

次の図は、Dify が ACK クラスタとどのように対話するかを示しています。

Dify の紹介

Dify は、LLM アプリケーション開発用のオープンソースプラットフォームです。 Dify は、サービスとしてのバックエンド (BaaS) と LLM オペレーションLLMOps を組み合わせて、生成 AI アプリケーションの開発を合理化します。 Dify は、開発者と非技術系ユーザーの両方にとって、AI アプリケーションのオーケストレーションとデータ操作を容易にします。 Dify には、LLM アプリケーションの構築に必要な主要な技術スタックが事前に組み込まれています。これにより、既存のソリューションやテクノロジーを再開発する必要がなくなり、ビジネスの革新と要件に集中できます。

次の図は、Dify のアーキテクチャを示しています。

Dify のアーキテクチャには、次の主要な部分が含まれています。

  1. LLM アプリケーションに必要な主要コンポーネント。 Dify は、LLM アプリケーションに必要な主要コンポーネントと統合されています。これらの統合により、Dify はさまざまなモデルをサポートし、ユーザーフレンドリーなプロンプトオーケストレーションインターフェイス、高性能の検索拡張生成 (RAG) システム、およびカスタマイズ可能なエージェントフレームワークを提供します。

  2. オーケストレーションと操作を視覚化する直感的なインターフェイス。 Dify は、視覚化されたプロンプトオーケストレーション、操作、および管理をサポートする直感的なインターフェイスを提供します。これにより、AI アプリケーション開発が大幅に加速され、開発者は LLM を AI アプリケーションに迅速に統合し、アプリケーションを継続的に維持および最適化できます。

  3. すぐに使えるアプリケーションテンプレートとオーケストレーションフレームワークのセット。 Dify は、開発者が LLM を活用した生成 AI アプリケーションを迅速に開発するために使用できる、すぐに使えるアプリケーションテンプレートとオーケストレーションフレームワークを提供します。さらに、Dify はオンデマンドでビジネスを即座にスムーズにスケーリングできます。

Dify は、生成 AI アプリケーションを開発およびデプロイするための包括的で柔軟性があり、使いやすいプラットフォームです。

1. ack-dify をインストールする

ワンクリックデプロイ

ACK クラスタを初めて使用し、クラスタ作成プロセスに慣れていない場合は、[ワンクリックデプロイ] をクリックして必要な環境を作成できます。このソリューションは、ACK マーケットプレイスの ack-dify アプリケーションテンプレートを使用して、Helm を使用して開発とテストのニーズを満たすことで、低コストで Dify アプリケーションの単一インスタンスバージョンを迅速にデプロイします。

重要

ワンクリックデプロイを使用する前に、ACK クラスタが [アクティブ化および承認] されているかどうかを確認することをお勧めします。詳細については、「ACK マネージドクラスターをすばやく作成する」をご参照ください。

このソリューションのアーキテクチャには、次のインフラストラクチャとクラウドサービスが含まれています。課金については、「課金」をご参照ください。

インフラストラクチャとクラウドサービス

説明

VPC

ECS や ACK マネージドクラスターなどのクラウドリソース用のクラウド上のプライベートネットワークを構築します。

2 つの vSwitch

同じネットワーク上の ECS や ACK などのクラウドリソースを接続して、それらの間の通信を可能にし、基本的なネットワークセグメンテーションと分離を提供します。

セキュリティグループ

VPC 内の ECS インスタンスのインバウンドおよびアウトバウンドネットワークルールを制限するために使用されます。

CLB インスタンス

パブリック IP 経由で Dify プラットフォームにアクセスするために使用されます。

NAS ファイルシステム

Dify プラットフォームの内部サービス (API およびワーカー) のデータを保存するために使用されます。

ACK マネージドクラスター

Dify プラットフォームをデプロイするために使用されます。 Dify プラットフォームは多くのコンテナーを起動するため、少なくとも 8 vCPU と 16 GiB のメモリを搭載したノードを選択することをお勧めします。そうしないと、ecs.u1-c1m2.2xlarge などのリソース不足が発生する可能性があります。

操作ガイド

  1. ワンクリックデプロイ をクリックし、[リソースオーケストレーションサービス (ROS)] コンソールでリージョンを [(オプション)中国 (杭州)] に設定します。 [アベイラビリティーゾーン][インスタンスタイプ][インスタンスパスワード][セキュリティ確認] パラメーターなど、ROS テンプレートに従ってパラメーターを構成します。その他のパラメーターにはデフォルト値を使用します。 [作成] をクリックします。

  2. クラスタには大量のリソースが必要です。リソースが作成されるまで約 10 分 待つ必要があります。クラスタが作成されたら、ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。 作成したクラスタの名前をクリックします。クラスタの詳細ページで、[ワークロード] > [ポッド] を選択し、dify-system注意: 名前空間を選択して、[ack-dify] がクラスタにインストールされているかどうかを確認します。

  3. (オプション)ポッドが Pending 状態の場合、ack-dify に必要な永続ボリューム要求 (PVC) がクラスタに存在しないことが原因である可能性があります。この問題を解決するには、デフォルトのコンテナーネットワークファイルシステム (CNFS) ファイルシステムを手動で作成し、NAS タイプの StorageClass を使用する必要があります。詳細については、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。ポッドの問題のトラブルシューティング方法の詳細については、「ポッドのトラブルシューティング」をご参照ください。

[ack-dify] がインストールされたら、次の手順に進みます。

説明

ワンクリックデプロイ メソッドと ROS コンソールを使用して ack-dify をデプロイした後、インターネット経由の ack-dify へのアクセスが有効になります。 インターネット経由で ack-dify へのアクセスを有効にする ステップはスキップできます。

手動デプロイ

ACK クラスタの作成プロセスに慣れている場合は、次のセクションの手順に従って、ビジネスに適したクラスタを作成できます。

1.1 環境をセットアップする

  1. Kubernetes 1.22 以降を実行する ACK Pro マネージドクラスター を作成します。詳細については、「ACK マネージドクラスターを作成する」および「クラスターをアップグレードする」をご参照ください。

    クラスタの安定性を確保するために、クラスタの Kubernetes システム用に少なくとも 2 vCPU と 4 GB のメモリを予約し、コンテナーストレージインターフェイス (CSI) プラグインをインストールすることをお勧めします。

    CSI プラグインのインストール方法を表示する

    クラスタを作成するときに、[デフォルトの NAS ファイルシステムと CNFS を使用してボリュームを動的にプロビジョニングし、NAS ゴミ箱を有効にし、高速データ復元をサポートする] を選択します。

    image

  2. kubectl クライアントをクラスタに接続します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。

1.2 ack-dify をインストールする

Dify をクラスタにデプロイするには、次の手順を実行して ack-dify コンポーネントをインストールします。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。 作成したクラスタの名前をクリックします。クラスタの詳細ページで、次の図のコールアウトを順番にクリックして ack-dify をインストールします。

    [アプリケーション名] パラメーターと [名前空間] パラメーターはオプションです。 [次へ] (コールアウト ⑥) をクリックします。 [確認] メッセージで、[はい] をクリックします。この場合、デフォルトのアプリケーション名 ack-dify とデフォルトの名前空間 dify-system が使用されます。 [チャートバージョン] には最新バージョンを選択します。次に、[OK] をクリックして ack-dify をインストールします。

    image

  2. 少し待ってから、オンプレミスマシンで次のコマンドを実行します。出力が dify-system 名前空間のすべてのポッドが Running 状態であることを示している場合、ack-dify はクラスタにインストールされています。

    kubectl get pod -n dify-system

    ポッドが Pending 状態の場合、ack-dify に必要な永続ボリューム要求 (PVC) がクラスタに存在しないことが原因である可能性があります。この問題を解決するには、デフォルトのコンテナーネットワークファイルシステム (CNFS) ファイルシステムを手動で作成し、NAS タイプの StorageClass を使用する必要があります。詳細については、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。ポッドの問題のトラブルシューティング方法の詳細については、「ポッドのトラブルシューティング」をご参照ください。

2. AI 搭載の Q&A アシスタントを作成する

2.1 Dify にアクセスする

  1. インターネット経由で ack-dify へのアクセスを有効にします。

    説明

    インターネットアクセスにより、デモが容易になります。本番環境を使用する場合は、データセキュリティを確保するために [アクセス制御] を有効にすることをお勧めします。

    image

  2. ack-dify サービスを更新した後、[ネットワーク] > [サービス] > [ack-dify] を選択し、[dify-system] 名前空間を選択すると、[外部 IP] 列に IP アドレスが表示されます。 Dify にアクセスするには、ブラウザを使用して IP アドレスにアクセスします。

    image

  3. Dify アカウントを作成します。

    ack-dify サービスの [外部 IP アドレス] にアクセスします。表示されるページで、画面の指示に従って [管理者アカウントを設定] し、メールアドレス、ユーザー名、パスワードを入力して Dify に登録します。

    image

2.2 AI 搭載の Q&A アシスタントを作成する

  1. ack-dify サービスの [外部 IP アドレス] とブラウザを使用して、Dify にログインします。

  2. AI モデルを追加し、モデルの API キーを設定します。この例では、次の図に示すように、Tongyi Qianwen モデルが追加されています。

    Tongyi Qianwen は無料クォータを提供します。無料クォータを使い果たすと、消費したトークンに基づいて課金されます。セルフマネージド LLM をデプロイするよりも、モデルプロバイダーからモデルサービスを購入する方が費用対効果が高くなります。

    1. [ユーザー名] > [設定] > [モデルプロバイダー] > [TONGYI] プラグインをインストールして設定 > [AliCloud から API キーを取得] を選択して、API キーを取得します。

    2. 取得した API キーを次の図の入力ボックスに指定し、[保存] をクリックします。

    image

  3. 汎用 AI 搭載 Q&A アシスタントを作成します。

    [Studio] > [空白から作成] を選択します。アシスタントの [名前][説明] を指定します。他のパラメーターにはデフォルト設定を使用します。

    image

2.3 AI 搭載の Q&A アシスタントをテストする

Web ページに質問を入力して、アシスタントが回答を提供できるかどうかをテストできます。次の図は例を示しています。汎用アシスタントは単純な会話のみをサポートしており、「Dify とは何ですか?」などの難しい質問には回答できません。

image

3. AI 搭載 Q&A アシスタントをカスタマイズする

3.1 ナレッジベースを準備する

上記の手順を実行すると、AI 搭載 Q&A アシスタントが作成されます。「Dify とは何ですか?」などの質問に対してアシスタントが専門的な回答を提供するようにするには、関連するナレッジベースを準備し、アシスタントと統合する必要があります。

構成を簡素化するために、この例では という名前のコーパスファイルが提供されています。ナレッジベースを作成し、コーパスファイルをナレッジベースにアップロードするには、次の手順を実行します。

  1. をナレッジファイルにアップロードします。

    [ナレッジ > ナレッジの作成 > ファイルからインポート > 参照 > 次へ] を選択します。

    image

  2. [次へ] をクリックします。次に、画面の指示に従って [テキストの前処理とクリーニング] ページのパラメーターを構成し、構成を保存します。

    デフォルト設定を使用できます。ナレッジベースは自動的にコーパスをクリーニングし、コーパスのテキストをチャンク化し、コーパスのインデックスを作成します。これにより、アシスタントは回答を生成する際にナレッジベースを簡単に検索できます。

Dify ナレッジベースを準備する手順を表示するには、上記のコーパスファイルを .md ファイルに変換する方法を表示 をクリックします。

Dify ナレッジベースを準備する手順を表示

Dify ナレッジベースを準備します。Dify では、txt、html、.md、pdf 形式の個々のファイルをアップロードできます。

アシスタントのトレーニングを開始する前に、ナレッジベースが準備されていることを確認してください。コーディングを開始する前は、すべてのコーパスファイルは Git リポジトリ内の .md ファイルです。リポジトリから .md ファイルをプルし、1 つのファイルにマージする必要があります。次の手順を実行します。

  1. Git リポジトリのクローンを作成します。 git clone コマンドを実行して、Dify Git リポジトリ をオンプレミス マシンにクローンします。

    git clone https://github.com/langgenius/dify-docs.git
  2. コーパスファイルを処理します。コーパスのテキスト ベクトル化を可能にするには、次の Python コードを使用して、Git リポジトリ内の .md ファイルをマージできます。

    from langchain_text_splitters import MarkdownHeaderTextSplitter, RecursiveCharacterTextSplitter
    import os
    
    
    def merge_markdown_files_from_directory(root_dir, output_file):
        """
        merge_markdown_files_from_directory 関数
          1. 説明:指定されたディレクトリにあるすべての .md ファイルを 1 つの出力ファイルにマージします。
          2. パラメーター:
            root_dir:ルートディレクトリ。
            output_file:出力ファイルのディレクトリ。
          3. 手順:
            os.walk() メソッドを使用して、ルートディレクトリとそのサブディレクトリを走査します。
            ファイルの接尾辞が .md の場合、ファイルのパスを markdown_files リストに追加します。
            出力ファイルを開き、markdown_files リストの各ファイルからデータを読み取り、出力ファイルにデータを書き込みます。
        """
        markdown_files = []
        for root, dirs, files in os.walk(root_dir):
            for file in files:
                if file.endswith('.md'):
                    markdown_files.append(os.path.join(root, file))
    
        with open(output_file, 'w', encoding='utf-8') as outfile:
            for file_path in markdown_files:
                with open(file_path, 'r', encoding='utf-8') as infile:
                    outfile.write(infile.read())
                    # outfile.write('\n\n')
    
                   
    def process_and_write_markdown(file_path: str, headers_to_split_on: list, chunk_size: int, chunk_overlap: int, output_file: str):
        """
        process_and_write_markdown 関数
          1. 説明:
            指定されたヘッダーとチャンク規則に基づいて .md ファイルのテキストをチャンクし、チャンクされたテキストを出力ファイルに書き込みます。
          2. パラメーター:
            file_path:.md ファイルのパス。
            headers_to_split_on:ヘッダーを含むタプル。例: [("#", "Header 1"), ("##", "Header 2")]。
            chunk_size:チャンクの最大サイズ。
            chunk_overlap:2 つの連続するチャンク間のオーバーラップ部分のサイズ。
            output_file:出力ファイルのディレクトリ。
          3. 手順:
            file_path パラメーターで指定されたパスにある .md ファイルからデータを読み取ります。
            headers_to_split_on タプルに基づいて .md ファイルのテキストをチャンクする MarkdownHeaderTextSplitter を作成します。
            chunk_size パラメーターと chunk_overlap パラメーターに基づいてテキストをさらにチャンクする RecursiveCharacterTextSplitter を作成します。
            出力ファイルを開き、チャンクのメタデータとコンテンツを出力ファイルに書き込みます。
        """
        try:
            # file_path パラメーターで指定されたパスにある .md ファイルからデータを読み取ります。
            with open(file_path, "r", encoding="utf-8") as doc:
                markdown_content = doc.read()
    
            # headers_to_split_on タプルに基づいて .md ファイルのテキストをチャンクする MarkdownHeaderTextSplitter を作成します。
            splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on, strip_headers=True)
            md_splits = splitter.split_text(markdown_content)
    
            # chunk_size パラメーターと chunk_overlap パラメーターに基づいてテキストをさらにチャンクする RecursiveCharacterTextSplitter を作成します。
            text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
            splits = text_splitter.split_documents(md_splits)
    
            # 出力ファイルを開き、チャンクのメタデータとコンテンツを出力ファイルに書き込みます。
            with open(output_file, "w") as f:
                for line in splits:
                    f.write(str(line.metadata))
                    f.write("\n")
                    f.write(line.page_content)
                    f.write("\n\n\n\n")
    
        except FileNotFoundError:
            raise FileNotFoundError(f"The file {file_path} does not exist.")
    
    
    # 例:
    if __name__ == "__main__":
        """
         1. 次のパラメーターを設定します。
          root_directory:ルートディレクトリ。
          merged_file_path:マージされたコンテンツを含む .md ファイルのパス。
          output_file:出力ファイルのパス。
          headers_to_split_on:ヘッダーのリスト。
          chunk_size と chunk_overlap:チャンクサイズと、2 つの連続するチャンク間のオーバーラップ部分のサイズ。
        2. 手順:
          merge_markdown_files_from_directory 関数を呼び出して、すべての .md ファイルを merged_file_path パラメーターで指定されたパスにある 1 つの .md ファイルにマージします。
          process_and_write_markdown 関数を呼び出して、マージされたコンテンツを含むファイルを処理し、ファイルのデータを出力ファイルに書き込みます。
          スクリプトは上記の手順を実行して、複数の .md ファイルをマージし、ファイルの内容を処理し、マージされたコンテンツを出力ファイルにエクスポートします。
        """
        
        # 処理対象のディレクトリ。
        root_directory = 'path/to/dify-docs/en'
        # マージされたコンテンツを含むファイルのパス。
        merged_file_path = './merged_markdown.md'
        # データクレンジング後の出力ファイルのパス。
        output_file = './dify_doc.md'
        
        merge_markdown_files_from_directory(root_directory, merged_file_path)
        headers_to_split_on = [
            ("#", "Header 1"),
            ("##", "Header 2"),
            ("###", "Header 3"),
        ]
        chunk_size = 500
        chunk_overlap = 50
        process_and_write_markdown(merged_file_path, headers_to_split_on, chunk_size, chunk_overlap, output_file)
    
  3. dify_doc.md コーパスファイルをナレッジベースにアップロードします。

3.2 AI 搭載 Q&A アシスタントを調整および公開する

アシスタントのプロンプトを構成し、ナレッジベースをコンテキストとして構成します。

  1. プロンプトを構成する:次のコンテンツを [命令] テキストエディターにコピーします。プロンプトは、アシスタントが回答を生成する際の指示と制約を提供します。プロンプトは、アシスタントが提供する回答の精度を向上させるのに役立ちます。

    あなたはDifyのAIアシスタントとして、お客様のDify プロダクトとその機能に関する質問に答えます。正確性を確保するために、応答は既存のナレッジベースに基づいてください。質問があなたの知識を超えている場合は、情報の整合性を維持するために、答えがわからないことを正直に伝えてください。フレンドリーで温かい口調でコミュニケーションを取り、インタラクティブな体験を向上させるために、必要に応じて絵文字を使用してください。
  2. ナレッジベースをコンテキストとして構成する:[コンテキスト] パラメーターで [追加] をクリックします。作成したナレッジベースを選択し、[追加] をクリックします。これにより、アシスタントはナレッジベースに基づいて質問に答えることができます。

  3. ページの右上隅で、[公開][更新] を選択して構成を保存し、構成を有効にします。

次の図は例を示しています。

image

3.3 アシスタントをテストする

ナレッジベースをアシスタントに統合すると、アシスタントはより専門的で正確な回答を提供できます。image

概要

次の表に、Dify が個人開発者と企業に提供する主な機能を示します。

主な機能

説明

LLMOps の包括的なサポート

Dify は、既存の AI アプリケーションに対し包括的な O&M 機能を提供します。たとえば、Dify はログとメトリックに基づくリアルタイムモニタリングをサポートし、本番データとユーザーフィードバックに基づいてプロンプト、データセット、モデルの継続的な最適化を提供します。

RAG エンジン

Dify は、ドキュメントのインポートや情報検索など、データ操作を実行するためのエンドツーエンドの RAG パイプラインを提供します。RAG パイプラインはデータの準備を簡素化し、pdf や ppt などの一般的なファイル形式を直接処理できます。

エージェント

Dify を使用すると、開発者は LLM の関数呼び出しまたは ReAct パラダイムに基づいてエージェントを定義できます。エージェントには、組み込みツールまたはカスタムツールを追加できます。Dify は 50 以上の組み込みツールを提供しています。

ワークフローオーケストレーション

Dify は、開発者がさまざまなコンポーネントをドラッグアンドドロップして接続し、複雑な AI ワークフローを迅速に構築できる視覚化されたキャンバスを提供します。この方法では複雑なコーディングは不要で、アプリケーション開発を開発者にとって簡単かつ直感的にします。

可観測性

Dify は、ダッシュボードを通じて LLM アプリケーションの品質とコストを追跡し、評価を提供します。これらの機能を使用して、LLM アプリケーションを監視できます。

エンタープライズ機能 (SSO/アクセス制御)

Dify は、企業や組織のデータ漏洩とデータ破損のリスクを軽減し、データセキュリティとサービス継続性を確保するのに役立ちます。

AI 搭載の Q&A アシスタントを本番環境に適用する

AI 搭載の Q&A アシスタントを企業または個人開発者の本番環境に適用するには、次の方法を使用します。

  1. Web サイトを使用してアシスタントを公開します。

    Dify を使用して AI アプリケーションを作成した後、インターネット経由でアクセスできる Web アプリケーションを使用してアプリケーションを公開できます。アプリケーションは、オーケストレーションしたプロンプトと構成に基づいて動作します。詳細については、「シングルページ Web アプリとして公開する」をご参照ください。

  2. Dify API へのアクセスを公開します。

    Dify は、BaaS の概念に準拠した API を提供しています。開発者は、複雑なバックエンドアーキテクチャとデプロイメントプロセスに焦点を当てることなく、フロントエンドから LLM の強力な機能を直接使用できます。詳細については、「API を使用した開発」をご参照ください。

  3. フロントエンドコンポーネントに基づいてカスタム開発を実行します。

    新しい製品をゼロから開発する場合、または製品プロトタイプの設計段階にある場合は、Dify を使用して AI サイトを迅速に立ち上げることができます。詳細については、「フロントエンドテンプレートに基づいて再開発する」をご参照ください。

  4. AI アプリケーションを企業または個人開発者の Web サイトに埋め込みます

    Dify を使用すると、AI アプリケーションを Web サイトに埋め込むことができます。企業の公式 Web サイトに AI カスタマーサービスチャットボットと Q&A チャットボットを数分で構築して埋め込むことができます。詳細については、「Web サイトへの埋め込み」をご参照ください。

AI アプリケーションを Web サイトに埋め込む例

このセクションでは、LLM アプリケーションを企業または個人開発者の Web サイトに埋め込む方法の例を示します。

本番環境を使用する場合は、データセキュリティを確保するために [アクセス制御] を有効にすることをお勧めします。

  1. インターネット経由で ack-dify へのアクセスを有効にします。 ack-dify サービスの外部 IP アドレスを使用して Dify にアクセスします。詳細については、「Dify にアクセスする」をご参照ください。

    image

  2. AI Q&A アシスタントをデバッグするためのシンプルな Web アプリケーションを構築します。

    次の手順を実行して、ACK クラスタに Web アプリケーションをデプロイします。Dify を使用して開発された LLM アプリケーションを Web アプリケーションに埋め込むことができます。

    1. Dify からアシスタントのコードを取得します。

      次の図に示すように、チャットアプリケーションを Web サイトに埋め込む方法を選択します。image

    2. クラスタにデプロイメントを作成して Web アプリケーションを実行し、サービスを作成して Web アプリケーションを公開します。

      次の YAML テンプレートは、NGINX サーバーに静的 HTML ページをデプロイする方法の例を示しています。

      1. ACK コンソール にログインします。[ConfigMap] ページで、[default] 名前空間を選択します。[YAML から作成] をクリックします。次の YAML テンプレートをコードエディタにコピーし、コードブロック(コールアウト [③])を前のステップで Dify から取得したアシスタントのコードに置き換えます。

        image

        サンプルコード:

        YAML ファイルの内容を表示

        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: web-deployment
        spec:
          replicas: 2
          selector:
            matchLabels:
              app: web
          template:
            metadata:
              labels:
                app: web
            spec:
              containers:
              - name: web
                image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
                ports:
                - containerPort: 80
                volumeMounts:
                - name: web-content
                  mountPath: /usr/share/nginx/html
              volumes:
              - name: web-content
                configMap:
                  name: web-config
          
        
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: web-service
        spec:
          selector:
            app: web
          ports:
            - protocol: TCP
              port: 80
              targetPort: 80
          type: LoadBalancer
        
        
        ---
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: web-config
        data:
          index.html: |
            <!DOCTYPE html>
            <html lang="zh">
            <head>
                <meta charset="UTF-8">
                <meta name="viewport" content="幅=デバイス幅, 初期スケール=1.0">
                <title>The simplest website service</title>  <!-- 最もシンプルなウェブサイトサービス -->
                <style>
                    #dify-chatbot-bubble-button {
                        background-color: #1C64F2 !important;
                    }
                </style>
            </head>
            <body>
                <h1>Welcome to my website!</h1> <!-- ウェブサイトへようこそ! -->
            
            
                <script>
                 window.difyChatbotConfig = {
                  token: 'W1b8mRL******yiD6',
                  baseUrl: 'http://8.154.XX.XX'
                 }
                </script>
                <script
                 src="http://8.154.XX.XX/embed.min.js"
                 id="W1b8mRL******yiD6"
                 defer>
                </script>
                <style>
                  #dify-chatbot-bubble-button {
                    background-color: #1C64F2 !important;
                  }
                </style>
        
        
        
            </body>
            </html>
      2. Web アプリケーションがデプロイされると、次のページが表示されます。

        image

      3. インターネット経由で Web アプリケーションへのアクセスを有効にします。

        本番環境を使用する場合は、データセキュリティを確保するために [アクセス制御] を有効にすることをお勧めします。

        image

        web-service サービスを更新すると、[外部 IP] 列に IP アドレスが表示されます。 Web アプリケーションにアクセスするには、ブラウザを使用して IP アドレスにアクセスします。

        image

        重要
        • 他のデバイスが Web アプリケーションにアクセスできるようにするには、クラスタのファイアウォールまたはセキュリティグループでポート 80 でのデータ転送が許可されていることを確認してください。 詳細については、「セキュリティグループルールの追加」をご参照ください。

        • クロスサイトスクリプティング(XSS)攻撃を防ぐために、アプリケーションコードとサードパーティコードに悪意のあるコードが埋め込まれていないことを確認してください。ビジネス要件に基づいて、拡張機能を追加したり、サンプルコードを変更したりできます。

      4. 結果を表示します。

        2024-08-23_14-14-02 (1)

継続的な改善

LLM アプリケーションをさらに改善および最適化するには、LLM の Alibaba Cloud Certified Associate (ACA) 認定 を取得することをお勧めします。この認定では、LLM の機能と使用シナリオ、および LLM を最適化する方法に関する知識を得るために学習できる無料コースを提供しています。

課金

この機能は、使用する ACK Pro マネージドクラスターのクラスター管理料金と、使用するその他のクラウドリソースの料金を請求します。この機能では、Elastic Compute Service (ECS)、Classic Load Balancer (CLB)、Elastic IP Address (EIP)、および Apsara File Storage NAS (NAS) などのクラウドサービスが使用される場合があります。上記のクラウドサービスが使用されている場合、それらのクラウドサービスの課金ルールに基づいて課金されます。詳細については、「課金」をご参照ください。