This is a hacky way to integrate GPT4 Vision into the Meta Rayban Smart Glasses using voice commands.
Requirements:
c) Alternative Facebook/Messenger account
d) bun
-
Add a .env file with your OpenAi API key (example via
env.example
) -
Run
bun install
-
Run
bun run dev
-
Server should be up and running on PORT 3103
WARNING: bookmarklets are a slightly obscure and very hacky way to execute arbitrary javascript in your browser, before running MAKE SURE to check the code you're executing. The bookmarklet code is documented below in the section titled: Bookmarklet Code Breakdown
-
Login to messenger.com with an alternative messenger/facebook account (make sure you are friends with your main account that's logged into your meta view app)
-
Copy and paste the code from
bookmarklet.js
and create a new bookmark in your browser with the URL as the code (alternatively import it as a bookmark) -
Click the newly created bookmark
-
Upon success a dialog should appear with Added Messenger Chat Observer
-
Make sure within the Meta View app that the messenger connection is connected to the appropriate main account
-
Say
You: Hey Meta, send a photo to *name of alternative account*
-
Meta: Send a photo to *name of alternative account*
-
You: Yes
-
Upon receiving the new photo and sending it to GPT4 Vision the server should display the following logs:
GPT4 Vision Request
Sending request to GPT4 Vision
Request Successful
Saving data
Reading stored data
Creating new data file.
Writing new data
- Open up
./public/data.json
to check the successful added data
ENJOY!
javascript: (function (s) {
//This a bookmarklet that you can either import as a bookmark
//OR you can copy all the code and paste into the URL when making a new bookmark
//OR post in dev console
// This is designed to observe for any new photo messages that are sent in messenger and then to forward the image url to this projects REST api
const messages = document.getElementsByClassName("x78zum5 xdt5ytf x1iyjqo2 xs83m0k x1xzczws x6ikm8r x1rife3k x1n2onr6 xh8yej3")[1].childNodes[2];
// This is to find the messages container within messenger.com for the selected chat
// However, these obfuscated classes are subject to change and so this is likely to break in the near future
messages.removeEventListener("DOMNodeInserted", null);
// The utilization of DOMNodeInserted is very bad practice and will be deprecated in all browsers in the future
// Mutation observer should replace DOMNodeInserted
messages.addEventListener("DOMNodeInserted", async (event) => {
const imgSrc = event?.target?.getElementsByTagName("img")[1]?.src;
if (imgSrc) {
const res = await fetch("http://localhost:3103/api/gpt-4-vision", {
method: "POST",
//Facebook's image urls contains lots of properties that need to be perfectly preserved in order to view the image
body: JSON.stringify({ imageUrl: imgSrc }),
mode: "no-cors",
headers: {
"Content-Type": "application/json",
},
});
const data = res.json();
console.log(data);
}
});
alert("Added Messenger Chat Observer");
})();
Please reach out if there are any issues or feature requests :)
Hopefully the Meta Reality Labs team will provide an SDK in the future so these types of integrations can be ✨productionised✨