Я пытаюсь перенести свой проект Gemini с Google-generative-ai на Vertex AI.
Однако я столкнулся с этой ошибкой:
Ошибка типа: параметр MergeFrom() должен быть экземпляром того же класса: ожидаемый <класс 'Part'> получил <класс 'str'>.
Мой код по сути использует многоходовой диалог без сохранения состояния, как здесь в примере в их документации.
messages.append({'role':'model', 'parts':[response.text]})
messages.append({'role':'user',
'parts':["Okay, how about a more detailed explanation to a high school student?"]})
response = model.generate_content(messages)
to_markdown(response.text)
Однако при попытке использовать Vertex AI возникла вышеуказанная ошибка. Документация , предоставленная Google, не помогает, вместо этого используется функция чата вместо разговора без сохранения состояния.
Есть ли способ сохранить обработку сообщений без сохранения состояния для чата в Vertex AI, или мне нужно перейти к методу чата?
Помощь будет оценена по достоинству, спасибо!
Вот пример того, как выглядит мой код. Это работает под GenAI/Gemini.:
messages = [
{
"role": "user",
"parts": [get_system_prompt(bytes_data)]
},
{
"role": "model",
"parts": ["Hi, I'm Q, your SQL Query Building Helper. Let's get started."]
}
]
messages.append({"role": "user", "parts": [prompt]})
model.generate_content(messages)
Вот результат, когда я запускаю Vertex AI.
Ошибка типа: параметр MergeFrom() должен быть экземпляром того же класса: ожидаемый <класс 'Part'> получил <класс 'str'>.
Здравствуйте, вышлю всю историю чата по запросу. Моя история чата выглядит так, и я отправляю всю историю чата каждый раз, когда хочу создать контент. get_system_prompt возвращает строку, которая служит системным приглашением. У GenAI не было системного приглашения, поэтому сначала я отправляю его как сообщение пользователю.
У GenAI есть системная подсказка
Вы оба правы! 😀 Системные инструкции теперь доступны для новых моделей, выпущенных с апреля 2024 года. В старых моделях их нет.
Предполагается, что атрибут parts
содержит массив объектов Part
, которые могут содержать различные типы частей. Существуют текстовые части, части inlineData, содержащие изображения и т. д.
Однако для текстовых частей библиотека AI Studio позволяет использовать ярлык, при котором вы можете просто указать строку, и она преобразует ее в текстовую часть. Библиотека Vertex AI не сделает этого за вас.
Ответ, который подойдет для обоих случаев, — убедиться, что вы отправляете текстовую часть. Что-то вроде этого:
messages = [
{
"role": "user",
"parts": [
{
"text": get_system_prompt(bytes_data)
}
]
},
{
"role": "model",
"parts": [
{
"text": "Hi, I'm Q, your SQL Query Building Helper. Let's get started."
}
]
}
]
См. https://ai.google.dev/api/rest/v1beta/Content#Part для получения подробной информации о том, как должен выглядеть объект Part (на уровне REST).
Вам нужно отправлять историю чата по каждому запросу, как вы это делали с Google ai Gemini. Возможно, вы захотите полностью удалить google-generativeai из своего проекта, чтобы убедиться, что вы не передаете неправильные типы данных. что делает get_system_prompt(bytes_data)?