由 deepset 维护
集成:IBM Watsonx
通过 Watsonx SDK 将 IBM 的 watsonx 模型与 Haystack 结合使用。
目录
概述
IBM watsonx.ai 提供对 IBM 基础模型的访问权限,用于企业 AI。此集成允许您将 granite-3-2b-instruct 和 slate-125m-english-rtrvr 等强大模型与 Haystack 结合用于聊天和嵌入任务。
安装
安装 IBM Watsonx 集成
pip install watsonx-haystack
使用
安装后,您将可以使用 Haystack 组件
-
WatsonxChatGenerator:将此组件与granite-3-2b-instruct等 IBM watsonx 模型结合用于聊天生成。 -
WatsonxGenerator:将此组件与granite-3-2b-instruct等 IBM watsonx 模型结合用于简单的文本生成任务。 -
WatsonxDocumentEmbedder:将此组件与slate-125m-english-rtrvr等 IBM watsonx 模型结合用于生成文档嵌入。 -
WatsonxTextEmbedder:将此组件与slate-125m-english-rtrvr等 IBM watsonx 模型结合用于生成文本嵌入和检索。
要使用 Watsonx 集成,您必须通过环境变量或初始化参数提供您的 WATSONX_API_KEY 和 WATSONX_PROJECT_ID。如果两者均未设置,您将无法使用这些组件。
要获取 API 密钥,您可以遵循 watsonx.ai 的注册流程。
使用 granite-3-2b-instruct 进行聊天生成
要将 Watsonx 模型用于聊天生成,请设置 WATSONX_API_KEY 和 WATSONX_PROJECT_ID 环境变量,然后使用 "ibm/granite-3-2b-instruct" 初始化 WatsonxChatGenerator。
import os
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret
from haystack_integrations.components.generators.watsonx.chat.chat_generator import WatsonxChatGenerator
os.environ["WATSONX_API_KEY"] = "your_watsonx_api_key"
os.environ["WATSONX_PROJECT_ID"] = "your_watsonx_project_id"
generator = WatsonxChatGenerator(
model="ibm/granite-3-2b-instruct"
)
messages = [
ChatMessage.from_system("You are a helpful assistant."),
ChatMessage.from_user("Explain quantum computing in simple terms.")
]
response = generator.run(messages=messages)
print(response["replies"][0].text)
输出
Quantum computing is a type of computing that uses the principles of quantum mechanics to process information. ...
流式聊天生成
对于实时流式响应,您可以使用流式回调功能
import os
from haystack.dataclasses import ChatMessage, StreamingChunk
from haystack.utils import Secret
from haystack_integrations.components.generators.watsonx.chat.chat_generator import WatsonxChatGenerator
os.environ["WATSONX_API_KEY"] = "your_watsonx_api_key"
os.environ["WATSONX_PROJECT_ID"] = "your_watsonx_project_id"
def print_streaming_chunk(chunk: StreamingChunk):
print(chunk.content, end="", flush=True)
# Initialize with streaming callback
generator = WatsonxChatGenerator(
model="ibm/granite-3-2b-instruct",
streaming_callback=print_streaming_chunk
)
# Generate a streaming response
messages = [ChatMessage.from_user("Write a short poem about artificial intelligence.")]
generator.run(messages=messages)
# Text will stream in real-time via the callback
文档嵌入
要将 Watsonx 模型用于文档嵌入,请设置 WATSONX_API_KEY 和 WATSONX_PROJECT_ID 环境变量,然后使用 "ibm/slate-125m-english-rtrvr" 初始化 WatsonxDocumentEmbedder。
import os
from haystack import Document
from haystack.utils import Secret
from haystack_integrations.components.embedders.watsonx.document_embedder import WatsonxDocumentEmbedder
os.environ["WATSONX_API_KEY"] = "your_watsonx_api_key"
os.environ["WATSONX_PROJECT_ID"] = "your_watsonx_project_id"
document_embedder = WatsonxDocumentEmbedder(
model="ibm/slate-125m-english-rtrvr",
api_base_url="https://us-south.ml.cloud.ibm.com"
)
documents = [Document(content="Germany has many big cities.")]
docs_with_embeddings = document_embedder.run(documents)["documents"]
print(docs_with_embeddings)
输出
[Document(id=..., content: 'Germany has many big cities.', embedding: vector of size 768)]
文本嵌入
要将 Watsonx 模型用于文本嵌入,请设置 WATSONX_API_KEY 和 WATSONX_PROJECT_ID 环境变量,然后使用 "ibm/slate-125m-english-rtrvr" 初始化 WatsonxTextEmbedder。
import os
from haystack.utils import Secret
from haystack_integrations.components.embedders.watsonx.text_embedder import WatsonxTextEmbedder
os.environ["WATSONX_API_KEY"] = "your_watsonx_api_key"
os.environ["WATSONX_PROJECT_ID"] = "your_watsonx_project_id"
text_embedder = WatsonxTextEmbedder(
model="ibm/slate-125m-english-rtrvr",
api_base_url="https://us-south.ml.cloud.ibm.com"
)
text = "I love pizza!"
result = text_embedder.run(text=text)
print(result)
输出
{'embedding': [0.123, -0.456, 0.789, ...],
'meta': {'model': 'ibm/slate-125m-english-rtrvr', 'truncated_input_tokens': None}}
