如何将 GoogleAIGeminiChatGenerator for Haystack 与 Google 的 Gemini 一起使用

问题描述 投票:0回答:1

我正在尽力使用 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 一起完成本教程。

python-3.x google-colaboratory google-gemini haystack
1个回答
0
投票

这个问题原来是 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

© www.soinside.com 2019 - 2024. All rights reserved.