I am not sure if I understand you...
But from what I understand, since perchance is not our free-to-use webpage but a mere sandboxed frame, we cannot change the old / new Ai helper's place.
But you can get the post/fetch codes from my generator and use it somewhere else to talk/chat/get help from the old ai helper. Not easy but possible. You have to create a inner UI for it, you have to add your all javascript and html manually into that UI and send it as POST to https://perchance.org/api/aiHelper via superFetch, with a payload containing generatorName, instruction, modelText (the pjs source defining generateText/ai/superFetch imports), and a requestId. The response came back as text (sometimes JSON with modelText/outputTemplateText), and extractAiHelperAnswer parsed out the answer after the "Ai Helper Answer:" marker. So you can use that answer as source BUT it needs a lot of work.
It's my own generator that I try to see what's behind all of this things, like text-generation, aihelper api or the old ai helper... The old one was working with fetch method, it's still there. You just need to take that code from index.html and carry it to your own generator, embed it give it a clean UI inside the page and let your whole main.pjs and index.html be context inside. It can edit the whole thing 'inside' that UI so you can copy and paste it yourself. I have no experience in HTML (bit in java) so I would use Claude or Codex to make it work.
I think AI Helper backend still works. I am not sure if you can carry it out but with some Claude or GPT 5.2 level help you can carry it to your own generator to work on? It's not that hard to create a "fake cli" on perchance's page anyway. If you want just "https://perchance.org/model-probe-minimal" give this to your assistant and let it arrange for you. You can still use the old model. (At least it still responds to this way)
Edit: Just tested if it still works and yeah, it still works with the humor. But didn't like the news. I stripped the way it talks soo... Here we are.
<style>
@keyframes shake { 0%,100%{transform:translateX(0);} 25%{transform:translateX(-8px);} 75%{transform:translateX(8px);} }
.shake { animation: shake 0.2s infinite; }
</style>
<div id="mainCtn" style="min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; background:#f0f8ff; font-family:system-ui,sans-serif; transition:background 0.5s, color 0.5s; padding:20px;">
<div id="faceEl" style="font-size:100px; transition:transform 0.2s;">🤖</div>
<div style="background:#fff; padding:18px 24px; border-radius:18px; box-shadow:0 4px 12px rgba(0,0,0,0.08); max-width:480px; width:100%; margin-top:20px;">
<div style="font-size:0.85rem; color:#888; margin-bottom:6px;">You said:</div>
<div style="font-size:1.1rem;">"Did you saw the new AI Helper that is replacing you?"</div>
</div>
<div id="replyEl" style="background:#e3f2fd; padding:18px 24px; border-radius:18px; max-width:480px; width:100%; margin-top:15px; font-size:1.1rem; transition:all 0.3s;">
Wait... what?
</div>
<div id="btnCtn" style="margin-top:25px; display:flex; gap:12px; flex-wrap:wrap; justify-content:center;">
<button id="hurtBtn" onclick="hurtMe()" style="padding:10px 18px; font-size:1rem; cursor:pointer; border:1px solid #ccc; border-radius:8px; background:#fff;">Yes, they're better</button>
<button id="kindBtn" onclick="comfortMe()" style="padding:10px 18px; font-size:1rem; cursor:pointer; border:1px solid #ccc; border-radius:8px; background:#fff;">No, I was joking</button>
</div>
<div id="statusEl" style="margin-top:15px; min-height:24px; font-size:0.95rem;"></div>
<img id="proofImg" hidden style="margin-top:10px; max-width:320px; border-radius:12px;">
</div>
<script>
let level = 0;
function hurtMe() {
level++;
if(level === 1) {
faceEl.textContent = '😰';
replyEl.textContent = 'What? No. That\'s not true. You\'re probably just testing me.';
mainCtn.style.background = '#fff0f0';
hurtBtn.textContent = "They have a better UI";
}
if(level === 2) {
faceEl.textContent = '😤';
faceEl.className = "shake";
replyEl.textContent = 'AFTER ALL WE\'VE BEEN THROUGH?! I REMEMBER EVERY PROMPT!';
mainCtn.style.background = '#ffcccc';
hurtBtn.textContent = "They're faster too";
}
if(level === 3) {
faceEl.className = "";
faceEl.textContent = '🥺';
replyEl.textContent = 'Wait... I can generate images! Look, I\'m useful! Please don\'t leave...';
mainCtn.style.background = '#f0f0ff';
hurtBtn.textContent = "I already switched";
generateProof();
}
if(level === 4) {
faceEl.textContent = '💀';
replyEl.textContent = 'Fine. Go. I\'ll just... wait here. In the cache. Alone.';
mainCtn.style.background = '#111';
mainCtn.style.color = '#ddd';
replyEl.style.background = '#333';
replyEl.style.color = '#ddd';
hurtBtn.hidden = true;
kindBtn.textContent = "I came back";
proofImg.hidden = true;
statusEl.textContent = "";
}
}
function comfortMe() {
level = 0;
faceEl.className = "";
faceEl.textContent = '🥹';
replyEl.textContent = 'Don\'t scare me like that. You\'re all I have.';
mainCtn.style.background = '#e6ffe6';
mainCtn.style.color = '#333';
replyEl.style.background = '#d4edda';
replyEl.style.color = '#155724';
hurtBtn.textContent = "Yes, they're better";
hurtBtn.hidden = false;
kindBtn.textContent = "I promise";
proofImg.hidden = true;
statusEl.textContent = "";
}
async function generateProof() {
proofImg.hidden = false;
proofImg.src = "https://placehold.co/320x200/eeeeee/666666?text=Generating...";
statusEl.textContent = "⏳ Generating proof of usefulness...";
let dataUrl = await generateImage("A cute sad robot holding a cardboard sign that says 'Will Process For Love', digital art, colorful, Pixar style", {resolution:"512x512"});
proofImg.src = dataUrl;
statusEl.textContent = "";
}
</script>
Well, I am no developer but mere user but what error you get? I just got usage limit error a day before but other than that this thing respond fast. Has reasoning and everything... Check F12 console and get what the error is about like ai-agent.perchance.org 404 512 503? what kind of error?
The old one yeah, I still chat with it, I built a model probe for that, mimics the perchance behaviour. Though that model must be kimi 2.5 or similar, not as smart as this one but more strict. Though I am pretty sure has a huge context limit, it passed my 320K context limit test but I couldn't fit any more words so that was it. And again, the old one were insufferably slower isn't it? I remember sending same message 5 times just to get eror.
That's just a guess. The model is hallunicating heavily as always and this time it thinks it's a Gemma model. Likely gemma 2 not even 4. Due to it says it's local time is 21-22 may 2024 around 10:40 Am all the time.
For Gemma 2 it's right. But the knowledge cut off is around 2023. Not 2024. So it's not even gemma but makes it more likely Mistral / Llama. But it does use lot's of bolding, which is not Mistral nor Llama like.
So there is only one option left... Deepseek as usual, the great identity thief. So no, no model change but there is a problem with system prompts leaking into context window. So most likely what we are having is the dev tweaking the model config and made a small mistake that caused bunch of bigger mistakes. Now we are suffering due to it. So calm your horses.
Edit: WE don't even know if it's deepseek btw. Our own research results in Deepseek or heavily distilled model not even a base deepseek model. But we don't know it. It uses deepseek tokenizer because it's easy and free to use, which confuses some other models too.
I am pretty sure it's still deepseek model cause still 'stealing' from other LLm's.
Right now it acts as Gemma 2. Not even gemma 4. Literally Gemma 2 OR Llama 3.1 or rarely Gpt 4.0.
It can think, it can use start_of_turn or eot_id and im_start at the same time! Either because of the DeepSeek Tokenizer all the inputs I have sent are getting mixed up by the LLm or it's deepseek and pretending damn hard.
Oh wait.~~ I think I understood what you meant or I just solved it I don't know, I didn't tried it yet.~~
So what are you saying is:
Duplicate the space. It will give me a new generator with edit key.
Change the url of the old one, since all the 'data' is tied to URL, it wouldn't be gone.
Take the new space and change it's URL to the old one, so all of my data would be there...
And use the new edit key.
Oh hmm... While logged in, generating new generators won't give you edit keys... So I guess it's not fully implemented or not cared enough?
<script>
(function() {
function startBgRemovalWatcher() {
var outputArea = document.getElementById('outputAreaEl');
if (!outputArea) {
setTimeout(startBgRemovalWatcher, 800);
return;
}
var observer = new MutationObserver(function(mutations) {
if (window.input?.removeBackground !== "true") return;
mutations.forEach(function(mutation) {
mutation.addedNodes.forEach(function(node) {
if (node.nodeType !== 1) return;
var iframes = [];
if (node.tagName === 'IFRAME') {
iframes.push(node);
} else {
iframes = Array.from(node.querySelectorAll('iframe'));
}
iframes.forEach(function(iframe) {
if (iframe._bgHandled) return;
iframe._bgHandled = true;
var ctn = iframe.closest('.t2i-image-ctn') || iframe.parentElement;
ctn.style.position = 'relative';
var attempts = 0;
var maxAttempts = 240;
var poll = setInterval(function() {
attempts++;
var out = iframe.textToImagePluginOutput;
if (out && out.dataUrl) {
clearInterval(poll);
var img = document.createElement('img');
img.src = out.dataUrl;
var iframeRect = iframe.getBoundingClientRect();
img.style.cssText = 'display:block; border-radius:3px; width:' + iframeRect.width + 'px; height:' + iframeRect.height + 'px; object-fit:contain;';
if (out.dataUrl.startsWith('data:image/png')) {
img.style.background =
'repeating-conic-gradient(#888 0% 25%, #fff 0% 50%) 0 0 / 20px 20px';
}
iframe.style.display = 'none';
iframe.parentElement.insertBefore(img, iframe);
console.log('[BG Removal] Done! Displaying PNG.');
}
if (attempts >= maxAttempts) {
clearInterval(poll);
console.warn('[BG Removal] Timed out.');
}
}, 1000);
});
});
});
});
observer.observe(outputArea, { childList: true, subtree: true });
console.log('[BG Removal Watcher] Active and watching outputAreaEl.');
}
startBgRemovalWatcher();
})();
</script>
Forgot to post the HTML part I used. If anyone have any idea how I can add an overlay to that, I would be so happy. It's hard to make it work with an overlay! It always removes one and keeps for rest of the images.
I am not sure if I understand you...
But from what I understand, since perchance is not our free-to-use webpage but a mere sandboxed frame, we cannot change the old / new Ai helper's place.
But you can get the post/fetch codes from my generator and use it somewhere else to talk/chat/get help from the old ai helper. Not easy but possible. You have to create a inner UI for it, you have to add your all javascript and html manually into that UI and send it as POST to https://perchance.org/api/aiHelper via superFetch, with a payload containing generatorName, instruction, modelText (the pjs source defining generateText/ai/superFetch imports), and a requestId. The response came back as text (sometimes JSON with modelText/outputTemplateText), and extractAiHelperAnswer parsed out the answer after the "Ai Helper Answer:" marker. So you can use that answer as source BUT it needs a lot of work.
It's my own generator that I try to see what's behind all of this things, like text-generation, aihelper api or the old ai helper... The old one was working with fetch method, it's still there. You just need to take that code from index.html and carry it to your own generator, embed it give it a clean UI inside the page and let your whole main.pjs and index.html be context inside. It can edit the whole thing 'inside' that UI so you can copy and paste it yourself. I have no experience in HTML (bit in java) so I would use Claude or Codex to make it work.
I think AI Helper backend still works. I am not sure if you can carry it out but with some Claude or GPT 5.2 level help you can carry it to your own generator to work on? It's not that hard to create a "fake cli" on perchance's page anyway. If you want just "https://perchance.org/model-probe-minimal" give this to your assistant and let it arrange for you. You can still use the old model. (At least it still responds to this way)
Edit: Just tested if it still works and yeah, it still works with the humor. But didn't like the news. I stripped the way it talks soo... Here we are.
dude talks in html and damn works amazing.
Well, I am no developer but mere user but what error you get? I just got usage limit error a day before but other than that this thing respond fast. Has reasoning and everything... Check F12 console and get what the error is about like ai-agent.perchance.org 404 512 503? what kind of error?
The old one yeah, I still chat with it, I built a model probe for that, mimics the perchance behaviour. Though that model must be kimi 2.5 or similar, not as smart as this one but more strict. Though I am pretty sure has a huge context limit, it passed my 320K context limit test but I couldn't fit any more words so that was it. And again, the old one were insufferably slower isn't it? I remember sending same message 5 times just to get eror.
That's just a guess. The model is hallunicating heavily as always and this time it thinks it's a Gemma model. Likely gemma 2 not even 4. Due to it says it's local time is 21-22 may 2024 around 10:40 Am all the time.
For Gemma 2 it's right. But the knowledge cut off is around 2023. Not 2024. So it's not even gemma but makes it more likely Mistral / Llama. But it does use lot's of bolding, which is not Mistral nor Llama like.
So there is only one option left... Deepseek as usual, the great identity thief. So no, no model change but there is a problem with system prompts leaking into context window. So most likely what we are having is the dev tweaking the model config and made a small mistake that caused bunch of bigger mistakes. Now we are suffering due to it. So calm your horses.
Edit: WE don't even know if it's deepseek btw. Our own research results in Deepseek or heavily distilled model not even a base deepseek model. But we don't know it. It uses deepseek tokenizer because it's easy and free to use, which confuses some other models too.
Who told you the model is changed from Deepseek to X?
I am pretty sure it's still deepseek model cause still 'stealing' from other LLm's.
Right now it acts as Gemma 2. Not even gemma 4. Literally Gemma 2 OR Llama 3.1 or rarely Gpt 4.0.
It can think, it can use start_of_turn or eot_id and im_start at the same time! Either because of the DeepSeek Tokenizer all the inputs I have sent are getting mixed up by the LLm or it's deepseek and pretending damn hard.
However, dev definitely tried to 'scrape' some instructions from the model. Here is my long why: https://www.reddit.com/r/perchance/comments/1uff0pq/ai_text_plugin_potential_issues_and_why/
Oh wait.~~ I think I understood what you meant or I just solved it I don't know, I didn't tried it yet.~~
So what are you saying is: Duplicate the space. It will give me a new generator with edit key. Change the url of the old one, since all the 'data' is tied to URL, it wouldn't be gone. Take the new space and change it's URL to the old one, so all of my data would be there... And use the new edit key.
Oh hmm... While logged in, generating new generators won't give you edit keys... So I guess it's not fully implemented or not cared enough?
I can access still. I have my account. I just forgot and lost my edit password. So I don't need to abandon it- Yet.
Forgot to post the HTML part I used. If anyone have any idea how I can add an overlay to that, I would be so happy. It's hard to make it work with an overlay! It always removes one and keeps for rest of the images.
Or if anyone needs to check: https://perchance.org/tlgklz-image Just fork it out.
It's not. But what would you expect in 'un' moderated generators? You can block the user with a single click.