The app works much faster than the demo, I've optimized it since I've recorded the gif and video
There's a youtuber whose videos I quite like named japaneat. I'm going to visit Japan soon and I want to know what his reccomended (suchi, karage, ramen, udon, ...) restaurants are. However, its not like he has a nicely labelled and curated blog or Wiki. Everything he ever said is scrattered among YouTube shorts.
So why not download all of his videos, add it to a database and semantic search it, and hook that up to an LLM as well?
Using this tool, I've been able to actually add a bunch of places to my itenarary! Often gpt isn't the most helpful even with added context, but the semantic search nevertheless points me in the right direction.
Its really simple, just type in the name of the youtuber you want to talk to.
So that you can come back and continue talk to your youtubers of choice!
You don't need credentials!
I might probably have to refactor these to use the Youtube API in the future anyways to not have to depend on two different dependencies and make the code more extensible and legible. However, these are simple enough wrappers that don't need any credientials and abstract away the rough edges of Googles APIs which tend to be quite tedious to work with even for seemingly simple functionality.
This project is designed to be maximally portable and easy to run.
requirements.txt
this will install ALL of the dependencies. There will be a few additional ones that are a result of the tooling I used to develop, you might not need those. Else you can install the afforementioned YouTube API wrappers and chromaDB. .env
file in the /llm
directory and populate it with your OPENAI_API_KEY
. main.py
file. That's it really. clean_databases.ps1
script. Converting it to bash is trivial as well. Just delete the sqlite file and the chroma directory. You probably won't have to do this, unless your db gets currupted in some way. If you run into an error during the initial download (OpenAI timing out or Database connection closiing, rare but can happen), then nuke the databases. More instructions coming soon.
None ATM. Project is pretty stable, clean and optimized.
{"$includes":"tokyo"}
so I get context that has certain keywords. This will be a nice to have, but I will do this after I handle the major performance improvements.