Files
2024-07-04 11:34:32 +08:00

2.5 KiB

Documentation

  • Class name: LLMPostProcessDocuments
  • Category: SALT/Language Toolkit/Tools
  • Output node: False

LLMPostProcessDocuments节点旨在根据指定的关键词精炼和过滤文档集合。它允许包含含有特定必需关键词的文档,同时排除那些含有指定不需要关键词的文档,从而有效地根据用户定义的标准调整文档集。

Input types

Required

  • document
    • 表示要处理的文档集合。它是节点操作的主要数据,根据指定关键词的存在与否来决定保留哪些文档。
    • Comfy dtype: DOCUMENT
    • Python dtype: List[Document]

Optional

  • required_keywords
    • 以逗号分隔的关键词列表,文档必须包含这些关键词才能被纳入输出。此参数能够将文档过滤为符合特定标准的相关文档。
    • Comfy dtype: STRING
    • Python dtype: str
  • exclude_keywords
    • 以逗号分隔的关键词列表,如果文档中包含这些关键词,将被排除在输出之外。此参数有助于删除包含不需要内容的文档。
    • Comfy dtype: STRING
    • Python dtype: str

Output types

  • documents
    • 经过处理的文档集合,只包含匹配所需关键词且不包含任何排除关键词的文档。
    • Comfy dtype: DOCUMENT
    • Python dtype: List[Document]

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class LLMPostProcessDocuments:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "document": ("DOCUMENT",),
            },
            "optional": {
                "required_keywords": ("STRING", {}),
                "exclude_keywords": ("STRING", {}),
            },
        }

    RETURN_TYPES = ("DOCUMENT",)
    RETURN_NAMES = ("documents",)

    FUNCTION = "process_documents"
    CATEGORY = f"{MENU_NAME}/{SUB_MENU_NAME}/Tools"

    def process_documents(self, document, required_keywords=[], exclude_keywords=[]):

        if required_keywords.strip():
            required = [ext.strip() for ext in required_keywords.split(",") if ext.strip()]
        else:
            required = None

        if exclude_keywords.strip():
            excluded = [pattern.strip() for pattern in exclude_keywords.split(",") if pattern.strip()]
        else:
            excluded = None

        if required or excluded:
            document = [doc for doc in document if not set(required).isdisjoint(doc.keywords) and set(excluded).isdisjoint(doc.keywords)]

        return (document,)