From b05fab14f769f8998f44b01e6967aa214e434fe4 Mon Sep 17 00:00:00 2001 From: lidp <43509927+guoyuhao2330@users.noreply.github.com> Date: Wed, 25 Sep 2024 18:44:31 +0800 Subject: [PATCH] Add component Concentrator (#2586) ### What problem does this PR solve? ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- agent/component/__init__.py | 1 + agent/component/concentrator.py | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 agent/component/concentrator.py diff --git a/agent/component/__init__.py b/agent/component/__init__.py index 2a24f2293..bc3a0c026 100644 --- a/agent/component/__init__.py +++ b/agent/component/__init__.py @@ -9,6 +9,7 @@ from .relevant import Relevant, RelevantParam from .message import Message, MessageParam from .rewrite import RewriteQuestion, RewriteQuestionParam from .keyword import KeywordExtract, KeywordExtractParam +from .concentrator import Concentrator, ConcentratorParam from .baidu import Baidu, BaiduParam from .duckduckgo import DuckDuckGo, DuckDuckGoParam from .wikipedia import Wikipedia, WikipediaParam diff --git a/agent/component/concentrator.py b/agent/component/concentrator.py new file mode 100644 index 000000000..62fd0dcea --- /dev/null +++ b/agent/component/concentrator.py @@ -0,0 +1,41 @@ +# +# Copyright 2024 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from abc import ABC +from agent.component.base import ComponentBase, ComponentParamBase + + +class ConcentratorParam(ComponentParamBase): + """ + Define the Concentrator component parameters. + """ + + def __init__(self): + super().__init__() + + def check(self): + super().check() + + +class Concentrator(ComponentBase, ABC): + component_name = "Concentrator" + + def _run(self, history, **kwargs): + input = self.get_input() + ans = " - ".join(input["content"]) if "content" in input else "" + if not ans: + return Concentrator.be_output("") + + return Concentrator.be_output(input)