Metadata-Version: 2.1
Name: mastodon-fetcher-haystack
Version: 0.1.0
Project-URL: Documentation, https://github.com/unknown/mastodon-fetcher-haystack#readme
Project-URL: Issues, https://github.com/unknown/mastodon-fetcher-haystack/issues
Project-URL: Source, https://github.com/unknown/mastodon-fetcher-haystack
Author-email: Tuana Celik <tuana.celik@deepset.ai>
License-Expression: MIT
License-File: LICENSE.txt
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.7
Requires-Dist: haystack-ai
Requires-Dist: html2text
Description-Content-Type: text/markdown

![PyPI](https://img.shields.io/pypi/v/mastodon-fetcher-haystack)

# 🎾 MastodonFetcher Node for Haystack

This custom component for Haystack is designed to fetch the latest posts from a given Mastodon username and return the contents as a list of Haystack Documents.
This way, it can be used as a replacement for a retriever node in a pipeline.

## Instllation

### For Haystack 2.0-Beta onwards:
```bash
pip install mastodon-fetcher-haystack
```
### For Haystack 1.x
```bash
pip install mastodon-fetcher-haystack==0.0.1
```

## Usage in Haystack 2.0-Beta onwards

1. The node expects a full Mastodon username as the `username` input. E.g. 'tuana@sigmoid.social'.
2. You can set the number of posts you want to retrieve by setting the `last_k_posts` parameter while initializing the MastodonFetcher, or in the `run` method. This can be a maximum of 40.

```python
from mastodon_fetcher_haystack.mastodon_fetcher import MastodonFetcher

mastodon_fetcher = MastodonFetcher()
mastodon_fetcher.run(username="tuana@sigmoid.social")
```
### In a pipeline

```python
from haystack import Pipeline
from mastodon_fetcher_haystack.mastodon_fetcher import MastodonFetcher
from haystack.components.generators import OpenAIGenerator
from haystack.components.builders import PromptBuilder

prompt_builder = PromptBuilder(template='YOUR_PROMPT_TEMPLATE')
llm = OpenAIGenerator(api_key'YOUR_OPENAI_API_KEY')

pipe = Pipeline()
pipe.add_component("fetcher", mastodon_fetcher)
pipe.add_component("prompt_builder", prompt_builder)
pipe.add_component("llm", llm)

pipe.connect("fetcher.documents", "prompt_builder.documents")
pipe.connect("prompt_builder.prompt", "llm.prompt")
pipe.run(data={"fetcher": {"username": "tuana@sigmoid.social"}})
```

## Usage in Haystack 1.x

1. The node expects a full Mastodon username as the `query` input. E.g. 'tuana@sigmoid.social'.
2. You can set the number of posts you want to retrieve by setting the `last_k_posts` parameter while initializing the MastodonFetcher, or in the `run` method. This can be a maximum of 40.

```python
from mastodon_fetcher_haystack.mastodon_fetcher import MastodonFetcher

mastodon_fetcher = MastodonFetcher()
mastodon_fetcher.run(query="tuana@sigmoid.social")
```
### In a pipeline

```python
from haystack import Pipeline
from mastodon_fetcher_haystack.mastodon_fetcher import MastodonFetcher

mastodon_fetcher = MastodonFetcher(last_k_posts=15)
prompt_node = PromptNode(default_prompt_template="YOUR_PROMPT_TEMPLATE", model_name_or_path="text-davinci-003", api_key="YOUR_API_KEY")

pipeline = Pipeline()
pipeline.add_node(component=mastodon_fetcher, name="MastodonFetcher", inputs=["Query"])
pipeline.add_nide(component=prompt_node, name="PromptNode", inputs=["MastodonFetcher"])
pipeline.run(query="tuana@sigmoid.social")
```
