Laravel10 Difyのチャットボットで過去の会話を考慮した会話方法

Dify APIキーの取得とAPIコール方法は以下の記事を参照。
Laravel10 DifyのチャットボットをAPIでコールする

「日本で1番高い山を教えて下さい」と質問をすると
「日本で1番高い山は富士山(ふじさん)です。標高は3,776メートルで、静岡県と山梨県の境にあります。日本の象徴的な山であり、多くの観光客や登山者が訪れます。」と回答してくれる。

array:9 [▼
  "event" => "message"
  "task_id" => "d9d63c0e-15ef-472d-a963-xxxxxxxxx"
  "id" => "df0d8c4a-ac92-47b1-af3d-xxxxxxxxx"
  "message_id" => "df0d8c4a-ac92-47b1-af3d-xxxxxxxxx"
  "conversation_id" => "a0272d76-bdc3-49be-852b-xxxxxxxxxxxxxx"
  "mode" => "chat"
  "answer" => "日本で1番高い山は富士山(ふじさん)です。標高は3,776メートルで、静岡県と山梨県の境に位置しています。富士山はその美しい形状と文化的な重要性から、世界的にも有名な山です。"
  "metadata" => array:1 [▼
    "usage" => array:12 [▶]
  ]
  "created_at" => 1725578296
]

続けて「2番目も教えて下さい」と質問すると
「もちろんです。何についての「2番目」を知りたいのか具体的に教えていただければ、その情報を提供いたします。例えば、2番目の国、2番目の数字、2番目の映画のシリーズなど、具体的にお聞かせください。」
と回答され前回の会話の記憶がない。

array:9 [▼
  "event" => "message"
  "task_id" => "c09c7f17-7b35-4b38-b23d-xxxxxxxx"
  "id" => "54782607-109a-487d-a255-xxxxxxxx"
  "message_id" => "54782607-109a-487d-a255-xxxxxxxxxx"
  "conversation_id" => "d45a4f55-9fd8-4057-b611-xxxxxxxxx"
  "mode" => "chat"
  "answer" => "もちろんです!2番目に知りたいことについて具体的に教えていただければ、それに応じた情報やアドバイスをお伝えします。何についての2番目を知りたいですか?"
  "metadata" => array:1 [▶]
  "created_at" => 1725578319
]

しかし、同じconversation_idをセットして
「2番目も教えて下さい」と質問をすると
「日本で2番目に高い山は北岳(きただけ)です。標高は3,193メートルで、南アルプス山脈に位置しています。北岳は登山愛好者に人気があり、美しい景観と自然環境が魅力です。」
と過去の会話を考慮して回答してくれる。

            CURLOPT_POSTFIELDS =>'{
                "inputs": {},
                "query": "2番目も教えて下さい",
                "conversation_id": "d45a4f55-9fd8-4057-b611-xxxxxxxxx",
                "user": "abc-123"
            }',
rray:9 [▼
  "event" => "message"
  "task_id" => "dd0f5d65-199a-462e-9deb-xxxxxxxxx"
  "id" => "5b10783a-d12b-471c-87ef-xxxxxxxx"
  "message_id" => "5b10783a-d12b-471c-87ef-xxxxxxxxxxxxxx"
  "conversation_id" => "d45a4f55-9fd8-4057-b611-xxxxxxxxx"
  "mode" => "chat"
  "answer" => "日本で2番目に高い山は北岳(きただけ)です。標高は3,193メートルで、南アルプス山脈に位置しています。北岳は登山愛好者に人気があり、美しい景観と自然環境が魅力です。"
  "metadata" => array:1 [▼
    "usage" => array:12 [▼
      "prompt_tokens" => 101
      "prompt_unit_price" => "0.15"
      "prompt_price_unit" => "0.000001"
      "prompt_price" => "0.0000152"
      "completion_tokens" => 66
      "completion_unit_price" => "0.60"
      "completion_price_unit" => "0.000001"
      "completion_price" => "0.0000396"
      "total_tokens" => 167
      "total_price" => "0.0000548"
      "currency" => "USD"
      "latency" => 0.90329883099184
    ]
  ]
  "created_at" => 1725584409
]

もちろんuserも同じにしなければ同じconversation_idを指定しても会話の継続はできない。

自前での過去の会話の管理より上手にやってくれるならDifyを使ったほうが良いかもしれない。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です