Hi, quite some interesting ideas, maybe I can share my two cents as well.
- Indeed, I have seen news of Samsung docs landing up in an LLM response which made me realize that having restrictions in place isn't going to stop people from using the tech, but its important to be safe (especially when dealing with black-boxes like LLMs). Over general sharing, I always thought redacting is a useful tool in that aspect over something like this.
- Indeed, but this adds another level of complexity of OCR (can't use some kind of vision LLM since that defeats the purpose).
- I'd say its always good to start with a blacklist; over time indeed nouns or objects can be semantically identified (in this day and age even with self-hosted LLMs). But I can already foresee a bit of effort and a lot of complexity. I also don't think touting a completely online tool is wise for security. That's why this is an Electron app that can be taken offline too (i.e. what I intended for).
Hi, thanks for the feedback. Indeed, "find-and-replace" didn't quite have the same zing to it, but now for clarity, I guess I stick to the find-and-replace semantics throughout Cypher-Note. I made an issue to pick this up later. Thanks again!
Suppose you'd like to understand how Java handles inheritance and contracts and say you'd like your LLM to explain the below Java class definition:
public SensitiveClassName extends SensitiveSubClassName implements SensitiveInterfaceName { // boilerplate }
If you don't want sensitive names to be injected into the LLM (for obvious reasons), you could paste it in Cypher Note's editor, hit Ctrl+Space on a selection like `SensitiveClassName` and hit Encrypt. This creates an in-memory mapping of a random noun with SensitiveClassName and allows you to map and unmap your query/response as many times as you'd like until you hit "End Session". There isn't any "encryption/decryption" happening per se but rather obfuscation and deobfuscation to names (that one would probably not prefer ending up in a training dataset).