TransformersTextRouter
使用此组件根据模型定义的分类标签将文本输入路由到各种输出连接。
| pipeline 中的最常见位置 | 灵活 |
| 必需的初始化变量 | "model": 用于文本分类的 Hugging Face 模型名称或路径 "token": Hugging Face API 令牌。可以通过 HF_API_TOKEN 或HF_TOKEN 环境变量设置。 |
| 强制运行变量 | “text”: 要根据其分类标签路由到指定输出之一的文本 |
| 输出变量 | “documents”: 一个字典,其中键是标签,值是文本 |
| API 参考 | Routers (路由器) |
| GitHub 链接 | https://github.com/deepset-ai/haystack/blob/main/haystack/components/routers/transformers_text_router.py |
概述
TransformersTextRouter 根据其分类标签将文本输入路由到各种输出连接。这对于根据分类将查询路由到管道中的不同模型很有用。
首先,您需要在初始化组件时使用model 参数来设置选定的模型。选定的模型然后提供用于分类的标签集。
您可以另外提供labels 参数——一个字符串列表,包含要分类的每个序列的可能类别标签。如果未提供,组件将使用transformers.AutoConfig.from_pretrained.
从 HuggingFace Hub 托管的模型配置文件中获取标签。要查看参数的完整列表,请查看我们的API 参考。
用法
单独使用
该TransformersTextRouter 单独使用时效果不佳,因为它的主要优势在于在管道中工作。当该组件集成到管道中时,其真正的潜力才能得到释放,它可以高效地将文本路由到最合适的组件。请参阅以下部分以获取完整的用法示例。
在 pipeline 中
下面是一个简单的管道示例,该管道将英语查询路由到针对英语文本优化的文本生成器,并将德语查询路由到针对德语文本优化的文本生成器。
from haystack import Pipeline
from haystack.components.routers import TransformersTextRouter
from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder
from haystack.components.generators.huggingface import HuggingFaceLocalGenerator
from haystack.dataclasses import ChatMessage
p = Pipeline()
p.add_component(
instance=TransformersTextRouter(model="papluca/xlm-roberta-base-language-detection"),
name="text_router"
)
p.add_component(
instance=ChatPromptBuilder(
template=[ChatMessage.from_user("Answer the question: {{query}}\nAnswer:")],
required_variables={"query"}
),
name="english_prompt_builder"
)
p.add_component(
instance=ChatPromptBuilder(
template=[ChatMessage.from_user("Beantworte die Frage: {{query}}\nAntwort:")],
required_variables={"query"}
),
name="german_prompt_builder"
)
p.add_component(
instance=HuggingFaceLocalGenerator(model="DiscoResearch/Llama3-DiscoLeo-Instruct-8B-v0.1"),
name="german_llm"
)
p.add_component(
instance=HuggingFaceLocalGenerator(model="microsoft/Phi-3-mini-4k-instruct"),
name="english_llm"
)
p.connect("text_router.en", "english_prompt_builder.query")
p.connect("text_router.de", "german_prompt_builder.query")
p.connect("english_prompt_builder.messages", "english_llm.messages")
p.connect("german_prompt_builder.messages", "german_llm.messages")
# English Example
print(p.run({"text_router": {"text": "What is the capital of Germany?"}}))
# German Example
print(p.run({"text_router": {"text": "Was ist die Hauptstadt von Deutschland?"}}))
其他参考资料
📓 教程:使用 TransformersTextRouter 和 TransformersZeroShotTextRouter 进行查询分类
更新于 7 个月前
