yoshidashingo / langchain-book

MIT License
137 stars 38 forks source link

p.177 章7.12でエラー #3

Open DAKE-yasu opened 10 months ago

DAKE-yasu commented 10 months ago

エラーの説明 章7.12 [会話履歴を保持する]を実施時にエラーとなりました。 エラー内容は以下のとおりです。

Failed to run listener function (error: Got unexpected message type: AIMessageChunk)
Traceback (most recent call last):
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/slack_bolt/listener/thread_runner.py", line 65, in run
    returned_value = listener.run_ack_function(request=request, response=response)
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/slack_bolt/listener/custom_listener.py", line 50, in run_ack_function
    return self.ack_function(
  File "/home/ec2-user/environment/slackapp-chatgpt/app.py", line 72, in handle_mention
    messages.extend(history.messages)
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/langchain/memory/chat_message_histories/momento.py", line 141, in messages
    return messages_from_dict(items)
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/langchain/schema/messages.py", line 348, in messages_from_dict
    return [_message_from_dict(m) for m in messages]
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/langchain/schema/messages.py", line 348, in <listcomp>
    return [_message_from_dict(m) for m in messages]
  File "/home/ec2-user/environment/slackapp-chatgpt/.venv/lib/python3.10/site-packages/langchain/schema/messages.py", line 336, in _message_from_dict
    raise ValueError(f"Got unexpected message type: {_type}")
ValueError: Got unexpected message type: AIMessageChunk

書籍の該当箇所

p 180のアプリケーション実行時に、Slack Botに対してスレッド内で@で返答したところ当該エラーが発生しました。

書籍の内容以外で実施したこと

下記issueに記載のとおり、langchainのバージョンを下げたところエラーは解決しました。 https://github.com/AntonOsika/gpt-engineer/pull/833

当方の環境は2023/10/31時点で作成したCloud9環境に"pip install langchain"でlangchainをインストールしていました。 当該環境でlangchainのバージョンを確認したところ"0.0.327"でした。 そのため、書籍冒頭viiページ記載の0.0.292にバージョンを合わせたところ解決しました。(pip install langchain==0.0.292)

環境

AWS Cloud9

naoki85 commented 10 months ago

私も同様のエラーになり、試してみたことを共有します。

llm からの戻り値を確認したところ、 AIMessageChunk という型でした。 MomentoChatMessageHistory(Memory) には add_ai_message というメソッドが存在したため、こちらを使用して AiMessage として追加するようにしたところ、動くことが確認できました。

ai_message = llm(messages)
history.add_ai_message(ai_message.content)  # ここを変更

参考になれば幸いです。

yoshidashingo commented 10 months ago

ご報告ありがとうございます。

os1ma commented 10 months ago

ご報告ありがとうございます。

パッケージのバージョンに起因するエラーに遭遇しないよう、バージョンを指定してインストールする方法をまとめました。 具体的なコマンドは「こちら(パッケージのバージョン固定に関する変更)」を参照してください。