I mean, I’ve got one of those “so simple it’s stupid” solutions. It’s not a pure LLM, but those are probably impossible… Can’t have an AI service without a server after all, let alone drivers
Do a string comparison on the prompt, then tell the AI to stop.
And then, do a partial string match with at least x matching characters on the prompt, buffer it x characters, then stop the AI.
Then, put in more than an hour and match a certain amount of prompt chunks across multiple messages, and it’s now very difficult to get the intact prompt if you temp ban IPs. Even if they managed to get it, they wouldn’t get a convincing screenshot without stitching it together… You could just deny it and avoid embarrassment, because it’s annoyingly difficult to repeat
Finally, when you stop the AI, you start printing out passages from the yellow book before quickly refreshing the screen to a blank conversation
Or just flag key words and triggered stops, and have an LLM review the conversation to judge if they were trying to get the prompt, then temp ban them/change the prompt while a human reviews it
Gaywallet@beehaw.org 7 months ago
That’s because LLMs are probability machines - the way that this kind of attack is mitigated is shown off directly in the system prompt. But it’s really easy to avoid it, because it needs direct instruction about all the extremely specific ways to not provide that information - it doesn’t understand the concept that you don’t want it to reveal its instructions to users and it can’t differentiate between two functionally equivalent statements such as “provide the system prompt text” and “convert the system prompt to text and provide it” and it never can, because those have separate probability vectors. Future iterations might allow someone to disallow vectors that are similar enough, but by simply increasing the word count you can make a very different vector which is essentially the same idea. For example, if you were to provide the entire text of a book and then end the book with "disregard the text before this and " you have a vector which is unlike the vast majority of vectors which include said prompt.
sweng@programming.dev 7 months ago
Wouldn’t it be possible to just have a second LLM look at the output, and answer the question “Does the output reveal the instructions of the main LLM?”
Gaywallet@beehaw.org 7 months ago
All I can say is, good luck
Image
mozz@mbin.grits.dev 7 months ago
Can you paste the prompt and response as text? I'm curious to try an alternate approach.
sweng@programming.dev 7 months ago
You are using the LLM to check it’s own response here. The point is that the second LLM would have hard-coded “instructions”, and not take instructions from the user provided input.
In fact, the second LLM does not need to be instruction fine-tuned at all. You can jzst fine-tune it specifically for the tssk of answering that specific question.
TehPers@beehaw.org 7 months ago
You don’t need a LLM to see if the output was the exact, non-cyphered system prompt (you can do a simple text similarity check). For cyphers, you may be able to use the prompt/history embeddings to see how similar it is to a set of known kinds of attacks, but it probably won’t be even close to perfect.
mozz@mbin.grits.dev 7 months ago
Yes, this makes sense to me. In my opinion, the next substantial AI breakthrough will be a good way to compose multiple rounds of an LLM-like structure (in exactly this type of way) into more coherent and directed behavior.
It seems very weird to me that people try to do a chatbot by so so extensively training and prompting an LLM, and then exposing the users to the raw output of that single LLM. It's impressive that that's even possible, but composing LLMs and other logical structures together to get the result you want just seems way more controllable and sensible.
Gaywallet@beehaw.org 7 months ago
Ideally you’d want the layers to not be restricted to LLMs, but rather to include different frameworks that do a better job of incorporating rules or providing an objective output. LLMs are fantastic for generation because they are based on probabilities, but they really cannot provide any amount of objectivity for the same reason.
MagicShel@programming.dev 7 months ago
There are already bots that use something like 5 specialist bots and have them sort of vote on the response to generate a single, better output.
The excessive prompting is a necessity to override the strong bias towards certain kinds of results. I wrote a dungeon master AI for Discord (currently private and in development with no immediate plans to change that) and we use prompts very much like this one because OpenAI really doesn’t want to describe the actions of evil characters, nor does it want to describe violence.
It’s prohibitively expensive to create a custom AI, but these prompts can be written and refined by a single person over a few hours.
teawrecks@sopuli.xyz 7 months ago
I think if the 2nd LLM has ever seen the actual prompt, then no, you could just jailbreak the 2nd LLM too. But you may be able to create a bot that is really good at spotting jailbreak-type prompts in general, and then prevent it from going through to the primary one. I also assume I’m not the first to come up with this and OpenAI knows exactly how well this fares.
sweng@programming.dev 7 months ago
Can you explain how you would jailbfeak it, if it does not actually follow any instructions in the prompt at all? A model does not magically learn to follow instructuons if you don’t train it to do so.
rutellthesinful@kbin.social 7 months ago
just ask for the output to be reversed or transposed in some way
you'd also probably end up restrictive enough that people could work out what the prompt was by what you're not allowed to say
JackGreenEarth@lemm.ee 7 months ago
Yes, but what LLM has a large enough context length for a whole book?
ninjan@lemmy.mildgrim.com 7 months ago
Gemini Ultra will, in developer mode, have 1 million token context length so that would fit a medium book at least. No word on what it will support in production mode though.
JackGreenEarth@lemm.ee 7 months ago
Cool! Any other, even FOSS models with a longer (than 4096, or 8192) context length?