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

Haystack 2.7.0

在 Github 上查看

发布说明

✨ 亮点

🚅 重构 Pipeline.run() 逻辑以更好地处理循环

Pipeline.run() 的内部逻辑已得到大量重构,使其比以前更强大、更可靠。此新实现使运行图中包含循环的 Pipeline 更加容易。它还修复了没有循环的 Pipeline 中的一些边界情况。

📝 引入 LoggingTracer

通过新的 LoggingTracer,用户可以实时检查日志,查看其 Pipeline 中发生的一切。此功能旨在改善用户在实验和原型制作过程中的体验。

import logging
from haystack import tracing
from haystack.tracing.logging_tracer import LoggingTracer

logging.basicConfig(format="%(levelname)s - %(name)s -  %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.DEBUG)
tracing.tracer.is_content_tracing_enabled = True # to enable tracing/logging content (inputs/outputs)
tracing.enable_tracing(LoggingTracer())

image

⬆️ 升级说明

  • 已移除 Pipeline init 参数 debug_path。我们不再支持此功能。

  • 已移除 Pipeline init 参数 max_loops_allowed。请使用 max_runs_per_component 代替。

  • 已移除 PipelineMaxLoops 异常。请使用 PipelineMaxComponentRuns 代替。

  • 已移除 PyPDFToDocument 使用的已弃用的默认转换器类 haystack.components.converters.pypdf.DefaultConverter

    来自 haystack<2.7.0 且使用默认转换器的 Pipeline YAML 必须按以下方式更新:

    # Old
    components:
        Comp1:
        init_parameters:
            converter:
            type: haystack.components.converters.pypdf.DefaultConverter
        type: haystack.components.converters.pypdf.PyPDFToDocument
    
    # New
    components:
        Comp1:
        init_parameters:
            converter: null
        type: haystack.components.converters.pdf.PDFToTextConverter
    

    来自 haystack<2.7.0 且使用自定义转换器类的 Pipeline YAML,可以通过简单地使用 haystack==2.6.x 加载它们,然后再次保存为 YAML 来进行升级。

  • 如果 senderreceiver 是同一个 Component,Pipeline.connect() 现在将引发 PipelineConnectError。我们不再支持此用例。

🚀 新功能

  • 已添加组件 StringJoiner,用于将不同组件的字符串连接成字符串列表。

  • 已改进序列化/反序列化错误,以便在可能时提供有关问题组件的额外上下文。

  • 增强了 DOCX 转换器,使其除了文本内容外,还支持表格提取。该转换器支持 CSV 和 Markdown 表格格式,为表示从 DOCX 文档提取的表格数据提供了灵活的选项。

  • FileTypeRouter 组件添加了一个新参数 additional_mimetypes。这允许用户指定其他 MIME 类型映射,从而确保在不同的运行时环境和 Python 版本中进行正确的文件分类。

  • 引入 LoggingTracer,它将所有跟踪发送到日志。

    可以通过以下方式启用它:

    import logging
    from haystack import tracing
    from haystack.tracing.logging_tracer import LoggingTracer
    
    logging.basicConfig(format="%(levelname)s - %(name)s -  %(message)s", level=logging.WARNING)
    logging.getLogger("haystack").setLevel(logging.DEBUG)
    tracing.tracer.is_content_tracing_enabled = True # to enable tracing/logging content (inputs/outputs)
    tracing.enable_tracing(LoggingTracer())
    
  • Pipeline.run() 的内部逻辑进行根本性重构。重构使其更可靠并涵盖更多用例。我们修复了一些问题,这些问题曾导致具有循环的 Pipeline 行为不可预测且组件执行顺序不明确。

  • 每个组件运行的跟踪 span 现在都附带 pipeline run span 对象。这使用户可以同时跟踪多个 pipeline 运行的执行。

⚡️ 增强说明

  • HuggingFaceAPIGeneratorHuggingFaceLocalGenerator 添加了 streaming_callback 运行参数,允许用户传递一个回调函数,该函数将在生成响应的每个块之后被调用。
  • SentenceWindowRetriever 现在在运行时支持 window_size 参数,可以覆盖在构造函数中设置的值。
  • ConditionalRouter 中添加了输出类型验证。将 validate_output_type 设置为 True 将启用一个检查,以验证路由的实际输出是否返回声明的类型。如果不匹配,将引发 ValueError
  • 减少了 numpy 的使用,以加快导入速度。
  • 改进了 FileTypeRouter 中的文件类型检测,特别是对于 Microsoft Office 文件格式,如 .docx 和 .pptx。此增强确保了在不同环境(包括 AWS Lambda 函数和没有预装 office 套件的系统)中的一致行为。
  • FiletypeRouter 现在支持在 run 方法中传递元数据 (meta)。提供元数据后,源将内部转换为 ByteStream 对象,并添加元数据。这个新参数简化了预处理/索引 pipeline 的工作。
  • SentenceTransformersDocumentEmbedder 现在支持 config_kwargs,用于在加载模型配置时提供附加参数。
  • SentenceTransformersTextEmbedder 现在支持 config_kwargs,用于在加载模型配置时提供附加参数。
  • 以前,numpy 被固定为 <2.0 以避免在多个核心集成中出现兼容性问题。此固定已被移除,haystack 可以与 numpy 1.x2.x 一起工作。如有必要,我们将在需要它的特定核心集成中固定 numpy 版本。

⚠️ 弃用说明

  • PyPDFToDocument 组件使用的 DefaultConverter 类已被弃用。其功能将在 2.7.0 版本中合并到该组件中。

🐛 Bug 修复

  • 组件的序列化数据现在被明确强制要求是以下基本 Python 数据类型之一:strintfloatboollistdictsettupleNone
  • 解决了在 MIME 类型定义受限的环境(例如 AWS Lambda 函数)中,某些文件类型(如 .docx、.pptx)被错误地归类为“未分类”的问题。
  • 修复了包含 JSON 数据的日志因字符串插值而丢失的问题。
  • HuggingFaceAPIGenerator 组件中使用了 Hugging Face Hub 类型的正向引用,以防止导入错误。
  • 修复了 PyPDFToDocument 组件的序列化,以防止默认转换器被不必要地序列化。
  • 撤销了对 PyPDFConverter 的更改,该更改破坏了 2.6.0 之前的 YAML 的反序列化。