🙄

Dify で作成したchatbotをPostman経由でテストする

2025/03/03に公開

最近注目を集めているDifyでOpenAIのチャットボットをノーコードで作成してそのAPIをPostmanからテストしてみます。

Dify とは

https://dify.ai/jp
AI開発ツールやプラットフォームで、特にAIアプリケーションや機械学習の開発を支援するサービスです。AIモデルやアプリケーションを簡単に作成、テスト、デプロイできる環境が提供されます。主に以下のような特徴がある可能性があります。
いわゆるローコードツールに分類され、複雑なコードを書かずにAIモデルの開発を行えるようにするため、ユーザーインターフェースで様々な設定が可能になっています。これにより、AIに関する専門的な知識がなくても、基本的なAIシステムの作成ができるようになります。
image.png

さっそくやってみる

1. 事前準備

まずは以下のものを準備しておきます。
・OpenAI API Key (sk-projから始まる文字列です。)
・OpenAI Organization ID (org-から始まる文字列です)
この記事ではその手順は割愛しますが、以下のサイトから入手可能です。
https://openai.com/index/openai-api/
OpenAIは通常のキーとAPI用キーは別々に定義されています。上のAPI専用サイトからAPIキーを入手します。

2. Dify のアカウント開設

https://dify.ai/jp
画面右上で始めるをクリックします。
image.png
ログイン情報を登録してログインしてください。
image.png
ログインが成功すれば以下の画面へ遷移します。
image.png

3. OpenAIを活用した簡単なAPIの設定

画面右上のプロフィールから設定をクリックします。
image.png
モデルプロバイダーからOpenAIのAPIKeyセットアップをクリックします。
image.png
先ほど入手したOpenAIのAPIキーとOrgIDを入力して保存をクリックします。
API Baseは空欄でかまいません。
以下のようにみどりのライトがつけば設定完了です。
image.png

4. シンプルなチャットボットの作成

次に画面上部スタジオタブで最初から作成をクリックします。
image.png
チャットボットを選択し、適当な名前を付け作成するをクリックします。
image.png
簡単なテストを行ってレスポンスが戻ってきたら公開するをクリックします。
image.png
image.png
これで今作成したチャットボットに外部からのアクセスが可能となりました。

5. APIキーの作成とPostmanからのテスト

左ペインからAPIアクセスをクリックし、画面右のAPIキーをクリックします。
image.png
新しいキーを作成してコピーしておきます。
image.png

次にPostmanの画面から新しいコレクションを作成します。
インポートをクリックします。
image.png

curl -X POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {},
    "query": "こんにちは。今日は何日ですが?",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "abc-123",
    "files": [
      {
        "type": "image",
        "transfer_method": "remote_url",
        "url": "https://cloud.dify.ai/logo/logo-site.png"
      }
    ]
}'

(Difyのマニュアルで提供されているサンプルはデフォルトではStremingモードになっています。Stremingモードとはチャットのレスポンスがストリームで戻ってきます。これをまとめた文字列としてレスポンスを入手できるよう上のサンプルではblockingモードに変更しています。)

コレクションにインポートをクリックします。

image.png
ヘッダーで設定されている{api_key}を先ほど入手したものに {} 毎置き換えます。
image.png
レスポンスとして以下のような値が戻ってきます。

{
    "event": "message",
    "task_id": "ee16565c-7206-46c2-86bd-2460ebba5531",
    "id": "ea8e0feb-77eb-47a6-b547-ecd805bebdd3",
    "message_id": "ea8e0feb-77eb-47a6-b547-ecd805bebdd3",
    "conversation_id": "6ee66200-b19f-4c8c-b21d-f2088025b78f",
    "mode": "chat",
    "answer": "こんにちは。申し訳ありませんが、リアルタイムの情報にはアクセスできないため、現在の日付をお伝えすることができません。お手元のデバイスでご確認ください。",
    "metadata": {
        "usage": {
            "prompt_tokens": 15,
            "prompt_unit_price": "3.00",
            "prompt_price_unit": "0.000001",
            "prompt_price": "0.0000450",
            "completion_tokens": 312,
            "completion_unit_price": "12.00",
            "completion_price_unit": "0.000001",
            "completion_price": "0.0037440",
            "total_tokens": 327,
            "total_price": "0.0037890",
            "currency": "USD",
            "latency": 2.3840113366022706
        }
    },
    "created_at": 1736570553
}

Discussion