我正在尽力使用 Google Colab 在 Haystack 网站上运行本教程:
https://docs.haystack.deepset.ai/reference/integrations-google-ai
它一直有效,直到我到达此代码:
from haystack.utils import Secret
from haystack.dataclasses.chat_message import ChatMessage
from haystack_integrations.components.generators.google_ai import GoogleAIGeminiChatGenerator
gemini_chat = GoogleAIGeminiChatGenerator(model="gemini-pro", api_key=Secret.from_token("<MY_API_KEY>"))
messages = [ChatMessage.from_user("What is the most interesting thing you know?")]
res = gemini_chat.run(messages=messages)
for reply in res["replies"]:
print(reply.content)
messages += res["replies"] + [ChatMessage.from_user("Tell me more about it")]
res = gemini_chat.run(messages=messages)
for reply in res["replies"]:
print(reply.content)
然后我收到此错误:
TypeError Traceback (most recent call last)
<ipython-input-23-868854587ba9> in <cell line: 14>()
12
13 messages += res["replies"] + [ChatMessage.from_user("Tell me more about it")]
---> 14 res = gemini_chat.run(messages=messages)
15 for reply in res["replies"]:
16 print(reply.content)
7 frames
/usr/local/lib/python3.10/dist-packages/google/generativeai/types/content_types.py in to_blob(blob)
150 "Could not recognize the intended type of the `dict`\n" "A content should have "
151 )
--> 152 raise TypeError(
153 "Could not create `Blob`, expected `Blob`, `dict` or an `Image` type"
154 "(`PIL.Image.Image` or `IPython.display.Image`).\n"
TypeError: Could not create `Blob`, expected `Blob`, `dict` or an `Image` type(`PIL.Image.Image` or `IPython.display.Image`).
Got a: <class 'google.ai.generativelanguage_v1beta.types.content.Content'>
Value: parts {
text: "What is the most interesting thing you know?"
}
role: "user"
我们在 content_types.py 的 to_blob 函数中检查错误发生的位置。我们显然没有处理斑点,所以这很奇怪。
无论如何,我已经尝试了一切我能想到的方法来让它发挥作用。我尝试过明确调用:
messages.append(ChatMessage.from_system(content="Tell me more about it"))
我遇到了同样的错误。我还尝试将其放入双子座期望的格式的字典中(带有“角色”和“部分”),并且我之前收到了不同的错误。这里肯定需要一个 ChatMessage 对象。
这很奇怪,但是 Haystack 官方网站上有 3 个不同的类似教程,尽管它们尝试将其组合在一起的方式略有不同,但它们都遇到了此错误。
此外,如果您使用 ChatMessage.from_system 或使用 ChatMessage() 并明确将角色设置为系统,似乎只会出现问题。尝试助手会抛出一个错误,提示助手有效(即使它显然是 ChatRole 枚举中的有效选项之一)
所以我很困惑如何让 Haystack 与 Gemini 一起完成本教程。
这个问题原来是 Haystack 中的一个错误。
以下是两篇原版教程:
https://docs.haystack.deepset.ai/reference/integrations-google-ai
https://docs.haystack.deepset.ai/docs/googleaigeminigenerator
这些教程中仍然存在一些错误。但如果您想查看它们的工作版本,您可以在此 Google colab 中找到所有这些的固定版本:
https://colab.research.google.com/drive/1zwVm1r5T7jAO7QakBDvVrCbUxs4WLJMv?usp=sharing