c56bef871b
Sync docs with Docusaurus / sync (push) Waiting to run
Tests / Check if changed (push) Waiting to run
Tests / format (push) Blocked by required conditions
Tests / check-imports (push) Blocked by required conditions
Tests / Unit / macos-latest (push) Blocked by required conditions
Tests / Unit / ubuntu-latest (push) Blocked by required conditions
Tests / Unit / windows-latest (push) Blocked by required conditions
Tests / mypy (push) Blocked by required conditions
Tests / Integration / ubuntu-latest (push) Blocked by required conditions
Tests / Integration / macos-latest (push) Blocked by required conditions
Tests / Integration / windows-latest (push) Blocked by required conditions
Tests / notify-slack-on-failure (push) Blocked by required conditions
Tests / Mark tests as completed (push) Blocked by required conditions
Docker image release / Build base image (push) Waiting to run
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
from haystack import component
|
|
from haystack.core.component.types import Variadic
|
|
|
|
|
|
@component
|
|
class StringJoiner:
|
|
"""
|
|
Component to join strings from different components to a list of strings.
|
|
|
|
### Usage example
|
|
|
|
```python
|
|
from haystack.components.joiners import StringJoiner
|
|
from haystack.components.builders import PromptBuilder
|
|
from haystack.core.pipeline import Pipeline
|
|
|
|
from haystack.components.generators.chat import OpenAIChatGenerator
|
|
from haystack.dataclasses import ChatMessage
|
|
|
|
string_1 = "What's Natural Language Processing?"
|
|
string_2 = "What is life?"
|
|
|
|
pipeline = Pipeline()
|
|
pipeline.add_component("prompt_builder_1", PromptBuilder("Builder 1: {{query}}"))
|
|
pipeline.add_component("prompt_builder_2", PromptBuilder("Builder 2: {{query}}"))
|
|
pipeline.add_component("string_joiner", StringJoiner())
|
|
|
|
pipeline.connect("prompt_builder_1.prompt", "string_joiner.strings")
|
|
pipeline.connect("prompt_builder_2.prompt", "string_joiner.strings")
|
|
|
|
print(pipeline.run(data={"prompt_builder_1": {"query": string_1}, "prompt_builder_2": {"query": string_2}}))
|
|
|
|
# >> {"string_joiner": {"strings": ["Builder 1: What's Natural Language Processing?", "Builder 2: What is life?"]}}
|
|
```
|
|
"""
|
|
|
|
@component.output_types(strings=list[str])
|
|
def run(self, strings: Variadic[str]) -> dict[str, list[str]]:
|
|
"""
|
|
Joins strings into a list of strings
|
|
|
|
:param strings:
|
|
strings from different components
|
|
|
|
:returns:
|
|
A dictionary with the following keys:
|
|
- `strings`: Merged list of strings
|
|
"""
|
|
|
|
out_strings = list(strings)
|
|
return {"strings": out_strings}
|