🙄

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

に公開

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

Dify とは

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

さっそくやってみる

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
画面右上で始めるをクリックします。

ログイン情報を登録してログインしてください。

ログインが成功すれば以下の画面へ遷移します。

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

画面右上のプロフィールから設定をクリックします。

モデルプロバイダーからOpenAIのAPIKeyセットアップをクリックします。

先ほど入手したOpenAIのAPIキーとOrgIDを入力して保存をクリックします。
API Baseは空欄でかまいません。
以下のように緑のライトがつけば設定完了です。

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

次に画面上部スタジオタブで最初から作成をクリックします。

チャットボットを選択し、適当な名前を付け作成するをクリックします。

簡単なテストを行ってレスポンスが戻ってきたら公開するをクリックします。


これで今作成したチャットボットに外部からのアクセスが可能となりました。

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

左ペインからAPIアクセスをクリックし、画面右のAPIキーをクリックします。

新しいキーを作成してコピーしておきます。

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

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モードに変更しています。)

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

ヘッダーで設定されている{api_key}を先ほど入手したものに {} 毎置き換えます。

レスポンスとして以下のような値が戻ってきます。

{
    "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