Случай 1: str как выходные данные
Когда пользовательский запрос простой, например «Что такое банан», свойство content возвращает строковый тип:
Код: Выделить всё
response3 = agent.invoke(
{"messages": [{"role": "user", "content": "What is a banana?"}]},
{"configurable": {"thread_id": "2"}}
)
print(response3["messages"][-1].content)
Код: Выделить всё
A banana is an elongated, edible fruit botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.
Но если пользовательский запрос сбивает с толку, например «Как его зовут», свойство content возвращает тип списка:
Код: Выделить всё
response3 = agent.invoke(
{"messages": [{"role": "user", "content": "What's its name?"}]},
{"configurable": {"thread_id": "2"}}
)
print(response3["messages"][-1].content)
Код: Выделить всё
[{'type': 'text', 'text': 'I\'m sorry, I don\'t understand what "it" refers to. Could you please provide more context?', 'extras': {'signature': 'CscCAdHtim+SJIpPCDrUbhw9W'}}]
Эта несогласованность может привести к неожиданным ошибкам. Есть ли правильный способ справиться с этим, не выполняя проверки типов с условными выражениями?
Изменить: Кажется, это происходит только с Gemini-2.5-flash. Я попробовал Gemini-2.0-flash и получил согласованные типы строк.
Подробнее здесь: https://stackoverflow.com/questions/798 ... tput-types
Мобильная версия