📘 **TELUS Agriculture & Consumer Goods** 如何通过 **Haystack Agents** 转变促销交易
由 deepset 维护

集成:Azure

通过 Azure 服务部署的 OpenAI 模型与 Haystack 一起使用

作者
deepset

目录

概述

Azure OpenAI 服务 提供对 OpenAI 强大的语言模型(包括 GPT-4、GPT-4 Turbo with Vision、GPT-3.5-Turbo 和 Embeddings 模型系列)的 REST API 访问。要获得 Azure OpenAI 端点的访问权限,请访问 Azure OpenAI 服务 REST API 参考

安装

安装 Haystack

pip install haystack-ai

使用

要使用 Azure 组件,您需要 Azure OpenAI API 密钥、Azure Active Directory 令牌以及 Azure OpenAI 端点。

组件

所有组件默认使用 AZURE_OPENAI_API_KEYAZURE_OPENAI_AD_TOKEN 环境变量。否则,您可以在初始化时使用 Secret 类传递 api_keyazure_ad_token。有关 Secret Handling 的更多信息。

Embedding 模型

您可以通过两个组件利用 Azure OpenAI 的嵌入模型:AzureOpenAITextEmbedderAzureOpenAIDocumentEmbedder

要为文档创建语义嵌入,请在索引管道中使用 AzureOpenAIDocumentEmbedder。要为查询生成嵌入,请使用 AzureOpenAITextEmbedder。选择适合您特定用例的组件后,请使用必需的参数初始化该组件。

以下是使用 InMemoryDocumentStoreAzureOpenAIDocumentEmbedderDocumentWriter 的示例索引管道

from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.embedders import AzureOpenAITextEmbedder, AzureOpenAIDocumentEmbedder
from haystack.components.writers import DocumentWriter

os.environ["AZURE_OPENAI_API_KEY"] = "Your Azure OpenAI API key"
os.environ["AZURE_OPENAI_AD_TOKEN"] = "Your Azure Active Directory Token"

document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")

documents = [Document(content="My name is Wolfgang and I live in Berlin"),
             Document(content="I saw a black horse running"),
             Document(content="Germany has many big cities")]

indexing_pipeline = Pipeline()
indexing_pipeline.add_component("embedder", AzureOpenAIDocumentEmbedder(azure_endpoint="https://example-resource.azure.openai.com/", azure_deployment="text-embedding-ada-002"))
indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store))
indexing_pipeline.connect("embedder", "writer")

indexing_pipeline.run({"embedder": {"documents": documents}})

生成模型(LLMs)

您可以通过两个组件利用 Azure OpenAI 模型:AzureOpenAIGeneratorAzureOpenAIChatGenerator

要使用通过 Azure 服务部署的 OpenAI 模型进行文本生成,请使用 azure_deploymentazure_endpoint 初始化 AzureOpenAIGenerator。然后,您可以在 PromptBuilder 之后的管道中使用 AzureOpenAIGenerator 实例。

以下是使用 RAG 和 PromptBuilder 以及 AzureOpenAIGenerator 的生成式问答管道示例

from haystack import Pipeline
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.generators import AzureOpenAIGenerator

os.environ["AZURE_OPENAI_API_KEY"] = "Your Azure OpenAI API key"
os.environ["AZURE_OPENAI_AD_TOKEN"] = "Your Azure Active Directory Token"

template = """
Given the following information, answer the question.

Context: 
{% for document in documents %}
    {{ document.content }}
{% endfor %}

Question: What's the official language of {{ country }}?
"""
pipe = Pipeline()

pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component("llm", AzureOpenAIGenerator(azure_endpoint="https://example-resource.azure.openai.com/", azure_deployment="gpt-35-turbo"))
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")

pipe.run({
    "prompt_builder": {
        "country": "France"
    }
})