Difyのチャットボットを作成しAPIキー取得までは以下の記事を参照。
Laravel10 Dify APIコール方法
ワークフローのAPIコールとパラメータの指定方法が微妙に違う点に注意。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.dify.ai/v1/chat-messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"inputs": {},
"query": "日本で1番高い山を教えて下さい", // 質問をセット
"user": "abc-123"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer app-xxxxxxxxxx', // Dify側で作成したAPIキーをセット
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
// JSONデコード
$decodedResponse = json_decode($response, true);
dd($decodedResponse);
以下のようなレスポンスが返ってくる。
array:9 [▼
"event" => "message"
"task_id" => "c7107231-ae49-4d97-9316-xxxxxxx"
"id" => "3e619c61-5f31-4ab0-978b-xxxxxxxxxxxx"
"message_id" => "3e619c61-5f31-4ab0-978b-xxxxxxxxxxxxx"
"conversation_id" => "a2ebf4b9-3e42-4ea8-8d5b-xxxxxxxxxx"
"mode" => "chat"
"answer" => "日本で最も高い山は富士山(ふじさん)です。高さは3,776メートルで、東京都と山梨県の境に位置しています。富士山は日本の象徴的な存在であり、美しい姿や文化的な意味合いから多くの人に親しまれています。"
"metadata" => array:1 [▼
"usage" => array:12 [▼
"prompt_tokens" => 18
"prompt_unit_price" => "0.15"
"prompt_price_unit" => "0.000001"
"prompt_price" => "0.0000027"
"completion_tokens" => 73
"completion_unit_price" => "0.60"
"completion_price_unit" => "0.000001"
"completion_price" => "0.0000438"
"total_tokens" => 91
"total_price" => "0.0000465"
"currency" => "USD"
"latency" => 0.80343801499112
]
]
"created_at" => 1725579067
単にChatGPTに回答をして欲しいだけなら直接ChatGPTのAPIをコールすれば良いけど、Difyの何かしらの機能、例えばナレッジ、RAGを経由、使いたい場合や、モデルの切り替えをDify側で手軽にしたい場合には有効そうである。
ナレッジのアップロードはAPIで出来るようになったけど、チャットボットのナレッジ(コンテキスト)の更新までAPIでやらせてもらえると、DifyをAIバックエンドとして使えて便利なんだけどなぁ。
1件のコメント