-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9105c19
commit 0770009
Showing
5 changed files
with
38 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
farm-haystack==1.18.1 | ||
safetensors==0.3.3.post1 | ||
farm-haystack==1.20.0 | ||
streamlit==1.21.0 | ||
markdown | ||
st-annotated-text | ||
python-dotenv | ||
python-dotenv | ||
mastodon-fetcher-haystack |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,55 +1,51 @@ | ||
import streamlit as st | ||
import requests | ||
from utils.config import TWITTER_BEARER | ||
|
||
from mastodon_fetcher_haystack.mastodon_fetcher import MastodonFetcher | ||
from haystack import Pipeline | ||
from haystack.nodes import PromptNode, PromptTemplate | ||
|
||
def start_haystack(openai_key): | ||
#Use this function to contruct a pipeline | ||
prompt_node = PromptNode(model_name_or_path="text-davinci-003", api_key=openai_key) | ||
|
||
fetcher = MastodonFetcher() | ||
|
||
twitter_template = PromptTemplate(prompt="""You will be given a twitter stream belonging to a specific profile. Answer with a summary of what they've lately been tweeting about and in what languages. | ||
You may go into some detail about what topics they tend to like tweeting about. Please also mention their overall tone, for example: positive, | ||
mastodon_template = PromptTemplate(prompt="""You will be given a post stream belonging to a specific Mastodon profile. Answer with a summary of what they've lately been posting about and in what languages. | ||
You may go into some detail about what topics they tend to like postint about. Please also mention their overall tone, for example: positive, | ||
negative, political, sarcastic or something else. | ||
Examples: | ||
Twitter stream: RT @deepset_ai: Come join our Haystack server for our first Discord event tomorrow, a deepset AMA session with @rusic_milos @malte_pietsch… | ||
RT @deepset_ai: Join us for a chat! On Thursday 25th we are hosting a 'deepset - Ask Me Anything' session on our brand new Discord. Come… | ||
RT @deepset_ai: Curious about how you can use @OpenAI GPT3 in a Haystack pipeline? This week we released Haystack 1.7 with which we introdu… | ||
RT @tuanacelik: So many updates from @deepset_ai today! | ||
Post stream: [@deepset_ai](https://mastodon.social/@deepset_ai): Come join our Haystack server for our first Discord event tomorrow, a deepset AMA session with @rusic_milos @malte_pietsch… | ||
[@deepset_ai](https://mastodon.social/@deepset_ai): Join us for a chat! On Thursday 25th we are hosting a 'deepset - Ask Me Anything' session on our brand new Discord. Come… | ||
[@deepset_ai](https://mastodon.social/@deepset_ai): Curious about how you can use @OpenAI GPT3 in a Haystack pipeline? This week we released Haystack 1.7 with which we introdu… | ||
[@deepset_ai](https://mastodon.social/@deepset_ai): So many updates from @deepset_ai today! | ||
Summary: This user has lately been retweeting tweets fomr @deepset_ai. The topics of the tweets have been around the Haystack community, NLP and GPT. They've | ||
Summary: This user has lately been reposting posts from @deepset_ai. The topics of the posts have been around the Haystack community, NLP and GPT. They've | ||
been posting in English, and have had a positive, informative tone. | ||
Twitter stream: I've directed my team to set sharper rules on how we deal with unidentified objects.\n\nWe will inventory, improve ca… | ||
Post stream: I've directed my team to set sharper rules on how we deal with unidentified objects.\n\nWe will inventory, improve ca… | ||
the incursion by China’s high-altitude balloon, we enhanced radar to pick up slower objects.\n \nBy doing so, w… | ||
I gave an update on the United States’ response to recent aerial objects. | ||
Summary: This user has lately been tweeting about having sharper rules to deal with unidentified objects and an incursuin by China's high-altitude | ||
baloon. Their tweets have mostly been neutral but determined in tone. They mostly post in English. | ||
Summary: This user has lately been posting about having sharper rules to deal with unidentified objects and an incursuin by China's high-altitude | ||
baloon. Their pots have mostly been neutral but determined in tone. They mostly post in English. | ||
Twitter stream: {tweets} | ||
Post stream: {join(documents)} | ||
Summary: | ||
""") | ||
prompt_node = PromptNode(model_name_or_path="gpt-4", default_prompt_template=mastodon_template, api_key=openai_key) | ||
|
||
st.session_state["haystack_started"] = True | ||
|
||
st.session_state["haystack_started"] = True | ||
return prompt_node, twitter_template | ||
mastodon_pipeline = Pipeline() | ||
mastodon_pipeline.add_node(component=fetcher, name="MastodonFetcher", inputs=["Query"]) | ||
mastodon_pipeline.add_node(component=prompt_node, name="PromptNode", inputs=["MastodonFetcher"]) | ||
return mastodon_pipeline | ||
|
||
|
||
@st.cache_data(show_spinner=True) | ||
def query(username, _prompter, _template): | ||
headers = {"Authorization": "Bearer {}".format(TWITTER_BEARER)} | ||
print(username) | ||
url = f"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name={username}&count={60}" | ||
def query(username, _pipeline): | ||
try: | ||
response = requests.request("GET", url, headers = headers) | ||
twitter_stream = "" | ||
for tweet in response.json(): | ||
twitter_stream += tweet["text"] | ||
result = _prompter.prompt(prompt_template=_template, tweets=twitter_stream) | ||
result = _pipeline.run(query=username, params={"MastodonFetcher": {"last_k_posts": 20}}) | ||
except Exception as e: | ||
result = ["Please make sure you are providing a correct, public twitter account"] | ||
result = ["Please make sure you are providing a correct, public Mastodon account"] | ||
return result |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,7 @@ def set_state_if_absent(key, value): | |
st.session_state[key] = value | ||
|
||
def set_initial_state(): | ||
set_state_if_absent("username", "Provide a Twitter username") | ||
set_state_if_absent("username", "Provide a Mastodon username (e.g. [email protected])") | ||
set_state_if_absent("result", None) | ||
set_state_if_absent("haystack_started", False) | ||
|
||
|
@@ -28,7 +28,7 @@ def sidebar(): | |
st.markdown( | ||
"## How to use\n" | ||
"1. Enter your [OpenAI API key](https://platform.openai.com/account/api-keys) below\n" | ||
"2. Enter a Twitter username in the searchbar\n" | ||
"2. Enter a Mastodon username in the searchbar\n" | ||
"3. Enjoy 🤗\n" | ||
) | ||
|
||
|