URL
https://python.langchain.com/v0.2/docs/tutorials/chatbot/
待办事项清单:
- 为这个问题添加了一个非常描述性的标题。
- 如果适用,我包含了一个指向我参考的文档页面的链接。
当前文档的问题:
在 https://python.langchain.com/v0.2/docs/tutorials/chatbot/ 中,按照教程“在Gemini中构建聊天机器人”进行操作时,在 https://python.langchain.com/v0.2/docs/tutorials/chatbot/#managing-conversation-history 的部分遇到了问题。
from langchain_core.runnables import RunnablePassthrough
def filter_messages(messages, k=10):
return messages[-k:]
chain = (
RunnablePassthrough.assign(messages=lambda x: filter_messages(x["messages"]))
| prompt
| model
)
messages = [
HumanMessage(content="hi! I'm bob"),
AIMessage(content="hi!"),
HumanMessage(content="I like vanilla ice cream"),
AIMessage(content="nice"),
HumanMessage(content="whats 2 + 2"),
AIMessage(content="4"),
HumanMessage(content="thanks"),
AIMessage(content="no problem!"),
HumanMessage(content="having fun?"),
AIMessage(content="yes!"),
]
response = chain.invoke(
{
"messages": messages + [HumanMessage(content="what's my name?")],
"language": "English",
}
)
response.content
它会抛出一个错误 Retrying langchain_google_vertexai.chat_models._completion_with_retry.<locals>._completion_with_retry_inner in 4.0 seconds as it raised InvalidArgument: 400 Please ensure that multiturn requests alternate between user and model..
。
这里的解决方案似乎是将 def filter_messages(messages, k=10)
更改为 def filter_messages(messages, k=9)
,原因在 #16288 中有描述。
Gemini 不支持从 AIMessage 开始的历史记录,将值从 10 更改为 9,确保第一个消息列表始终是 HumanMessage。
关于内容的想法或请求:
- 无响应*
1条答案
按热度按时间llycmphe1#
我已经通过更改filter_messages解决了这个问题:
始终以HumanMessage开头。