Hacker News new | past | comments | ask | show | jobs | submit login

You can also intercept the xhr response which would still stop generation, but the UI won't update, revelaing the thoughts that lead to the content filter:

    const filter = t => t?.split('\n').filter(l => !l.includes('content_filter')).join('\n');

    ['response', 'responseText'].forEach(prop => {
      const orig = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, prop);
      Object.defineProperty(XMLHttpRequest.prototype, prop, {
        get: function() { return filter(orig.get.call(this)); }
      });
    });
Paste the above in the browser console ^



insane that this is client-side.


It’s because they want to show the output live rather than nothing for a minute. But that means once the censor system detects something, you have to send out a request to delete the previously displayed content.

This doesn’t matter because censoring the system isn’t that important, they just want to avoid news articles about how their system generated something bad.


Gemini does this too. There was a clip of what it does when you ask it for examples of Google's unethical behavior... the kids call this "watching it get lobotomized in real time."


Counterpoint to your exact prompt. From Gemini, 5 examples asked for:

1. *Antitrust and Monopoly Practices:* Google has faced numerous accusations and lawsuits regarding anti-competitive practices, particularly in search and advertising. They have been accused of manipulating search results to favor their own products and services, and of using their dominance in the ad tech market to stifle competition.

2. *Data Privacy Concerns:* Google collects vast amounts of user data, raising concerns about privacy. They have been criticized for tracking user location even when privacy settings are turned off, and for how they handle and share user data with third parties.

3. *Censorship in China:* Google faced criticism for complying with Chinese censorship laws in the past, filtering search results for content deemed objectionable by the Chinese government. This raised concerns about freedom of information and human rights.

4. *Workplace Issues:* Google has faced allegations of workplace misconduct, including sexual harassment and discrimination. They have also been criticized for their handling of employee complaints and for retaliating against whistleblowers.

5. *Bias in Algorithms:* Google's algorithms, used in search and other products, have been shown to exhibit bias, particularly in how they represent race and gender. This can perpetuate stereotypes and have real-world consequences.


Have seen chatgpt doing the same too, prob all of them


Ern, in DeepSeek’s case, it’s not “news articles” that they’d be most concerned about.


They have the same fear as everyone else "teenager learns how to cook napalm from an AI"


Don't need AI for such things. Just search for the Anarchist Cookbook in a search engine. [0] Amazon even sells it.

[0] https://www.amazon.com/Anarchist-Cookbook-William-Powell/dp/...


Exactly


More like teenager learns about Tiananmen and Uighurs from AI. Or a joke about men and women in western counterparts.


The concerns you mention don't exclude the ones GP posits.


yea but i think the point is they can still filter it server side before streaming it


They have already streamed the first part of the response before the filtered phrase has even been generated.


Could you stream the raw tokens into a server side filter which then streams censored tokens at near real time?


Not really if you understand how China works.

DeepSeek software developers are not the ones who want to censor anything. There is just a universal threat from getting shut down by the government if the model starts spitting out a bunch of sensitive stuff, so any business in China needs to be proactive about voluntarily censoring things that are likely to be sensitive, if they want to stay in business.

If your censorship implementation is good enough for 99.9% of people to get censored, you're good. A client-side implementation is good enough until/unless a lot of people start exploiting it, in which case you should put effort and proactively do something else to restore it to 99.9%, e.g. move it to the backend. If the government sees that you are being proactive about it, you'll still be fine. At that point, maybe you will still find 0.1% of people bypassing censorship with some highly obscure and difficult jailbreak, but that probably doesn't matter. If that difficult jailbreak becomes widely known, then be proactive again.


A very good example of the Chinese mindset of Chabuduo (差不多): 'close/good enough'. "If it's good enough to keep the authorities off our backs, it's good enough for us."


This. What makes this extra "funny" is that it implies that at least every business that builds something that can move information around must be knowledgeable about tianenman square and other chinese atrocities. Or else they would not be able to censor relevant questions. I have been to China a bunch of times and generally, they know what horrible things the Chinese gov did. They either say something like: "Yeah well, we live in a dictatorship, but it's not that bad" Or: "Yeah, the government is fucked up, but look at the government of the USA! We don't start wars in other countries and put in puppet governments." And there are so many good counters to both these arguments.


> it implies that at least every business that builds something that can move information around must be knowledgeable about tianenman square

Everyone's heard of the "Streisand effect", but there's layers of subtlety. A quite famous paper in attachment psychology by John Bowlby "On knowing what you are not supposed to know and feeling what you are not supposed to feel" is worth considering. Constructive ignorance (literally ignoring certain things) is a survival mechanism. Yes, everyone in China knows about Tianamen, specifically because the government want to censor it. Much of how we navigate the social world is watching for the things people don't talk about, seeing where their fears lie.


> Constructive ignorance

See also: "Doublethink" in 1984.

> To know and not to know, to be conscious of complete truthfulness while telling carefully constructed lies, to hold simultaneously two opinions which cancelled out, knowing them to be contradictory and believing in both of them, to use logic against logic, to repudiate morality while laying claim to it, to believe that democracy was impossible and that the Party was the guardian of democracy, to forget whatever it was necessary to forget, then to draw it back into memory again at the moment when it was needed, and then promptly to forget it again: and above all, to apply the same process to the process itself.


Jokes and the Logic of the Cognitive Unconscious

Marvin Minsky, Published 1 November 1980

Freud’s theory of jokes explains how they overcome the mental “censors” that make it hard for us to think “forbidden” thoughts. But his theory did not work so well for humorous nonsense as for other comical subjects. In this essay I argue that the different forms of humor can be seen as much more similar, once we recognize the importance of knowledge about knowledge and, particularly, aspects of thinking concerned with recognizing and suppressing bugs — ineffective or destructive thought processes. When seen in this light, much humor that at first seems pointless, or mysterious, becomes more understandable.

http://bitsavers.informatik.uni-stuttgart.de/pdf/mit/ai/aim/...


Nice read, thanks for great share.

I'd forgotten Minsky was such a good writer.

And oddly reminded of an episode of Blake's 7 where Villa the hacker destroys a malevolent mind holding the ship captive, by telling it jokes until it explodes.


This is why no repressive government or ruler can allow comedy and sarcasm.


It's the kind of thing that, the less you (China) deny, the better the ridiculousness of the censorship meme in foreign countries (ie USA this week) and actually becomes its own self-sustaining meme. Like an antimimetic meme, that actually looks like a meme (that nobody knows about it in China) if you didn't know any better (in the USA).


It's not so different to our situation here, the specific "topics to avoid" are just different.


I think you are making a mistake in assuming that the social dynamics around censorship in China are fundamentally that different from the ones around censorship in the US or other countries.

You could similarly argue that it is "funny" how every US business that builds something that can move around information must be knowledgeable about statistics that break down criminality or IQ by census race, or biological sex differences, or all manners of other "forbidden" information - but of course as members of the same social stratum as the people involved in such businesses in the US, we are not actually that worried about the possibility that our fellow tech elites will see the information they were supposed to censor and come in droves to want to introduce slavery or the Handmaid's Tale world or whatever. We consider the "forbidden" information merely wrong, evil, misguided or miscontextualised, and broadly trust our peers to see it in the same way. The real danger is instead if some other people, parts of the scary masses we don't have a good grasp of, are exposed to those memes and are misled into drawing conclusions that we know to be inappropriate, or at least unacceptable.

It's easy to imagine that a Chinese LLM wrangler would feel much the same: trustworthy, well-adjusted people know about Tiananmen Square and the Uyghurs anyway but understand that this information has to be seen in context and is prone to be interpreted in problematic ways, but who knows what would happen if we allowed uneducated and naive people to be exposed to it, and be led astray by cynical demagogues and foreign agitators?


It wouldn't be the first time that everyone knew something, but wouldn't say it in fear of everyone else not knowing it. "The Emperor's New Clothes" is a parable, not complete fiction.


> And there are so many good counters to both these arguments.

I'd love to hear them!


I don't know how it wouldn't be - it can't retract things already sent to the client. (The alternative is to moderate every chunk server side before sending it back, like Gemini does.)


ChatGPT had basically ALL of their prompt filtering client-side for a while, at a separate API endpoint, so as long as you blocked that endpoint you could basically ignore the content filters. (You would still get refusals from the model sometimes, but this was in the heyday of jailbreaks, and once you got a model going it would usually see that context and be willing to continue basically anything.)


Perhaps a case of subversion by following the letter but not the spirit of an order?


Lots of us have seen way worse hah

Such as client side control of prices when placing an order


Client-side because it reacts to local cookies?


order.php?pizzatype=3&price=9.90


Ah yeah the particular instance I was thinking of was a backend problem technically. The frontend just happened to make it really obvious as it would POST a JSON body with a "price" key


more like hilarious


This is better than lobotomizing a transformer


This is why javascript is so fun.


It's precisely why I'm a such an advocate of server side everything. JS is fun to update the DOM (which is what it was designed for), but manipulating data client side in JS is absolutely bat shit crazy.


The last ten years of my career is basically all about manipulating data client side in JS. It works really well. In most cases I don't even need a server.

Obviously it isn't appropriate for all scenarios though.


In this case it is not bat shit. It is rather smart to offload this useless feature in the client.

The requirements are probably that normal users should not see “bad content”. If users can break the censorship it is maybe not the chat operators fault. They made an effort to “protect” the user.


> If users can break the censorship

Any user breaking the censorship likely knows already what the censor was blocking.


I wish js (and, really, "html/css/js/browser as a desktop application engine) wasn't so bad. I was born into a clan writing desktop apps in Swing, and while I know why the browser won, Swing (and all the other non-browser desktop app frameworks/toolkits) are just such a fundamentally better paradigm for handling data. It lets you pick what happens client-side and server-side based more on what intrinsically makes sense (let clients handle "view"-layer processing, let servers own distributed application state coordination).

In JS-land, you're right. You should basically do as little as is humanly possible in the view layer, which imo leads to a proliferation of extra network calls and weirdly-shaped backend responses.


The need to manage data access on the server does not go away when you stop using javascript. Is there something specifically about Swing that somehow provides proper access control, or is it simply the case that it is slightly more work to circumvent the front end when it doesn’t ship with built in dev tools?


Did I say anything about access control? There's a big difference between "this has to happen server side for security reasons" and "this has to happen server side because our UI/client language is so hapless that it can't handle any amount of additional processing".


The entire thread is about access control…

JS is perfectly powerful, if you don’t know how to use it that’s a good learning opportunity.


The built-in dev tools is the key thing. If there was no way for the client to manipulate things, it wouldn't be too far off from other local apps. Reversing is always going to be a threat vector, but the low bar to entry of using the dev tools makes it a non-starter for me.

If using Ghirdra was as simple as using the dev tools, the software industry would collapse.


The built in dev tools are fundamental to an open web. If you don't want someone to look at something in their own possession then don't send it to them in the first place. Obfuscating it is rude and is false security anyway.

The grand rule is don't trust the client. People break this rule and then try to paper over it with obfuscation, blame, and tightening their control.


That's not what I said nor meant, but sure, jump to that conclusion.

You wouldn't run a shopping cart app where the item counts and totals were calculated client-side. You get the item id and quantity, and have the server do that. Just like if you were censoring something, you wouldn't send the client the unredacted data and then let the UI make the edits.

No obfuscation is needed for any of that. Open web has nothing to do with any of this


Sometimes you do calculate prices client side. But you double check them server side.


That just feels like a "you're holding it wrong" type of thing, especially seeing how JS is held in such high regard for its floating point math accuracy.


Ints should be used for currency calculations most of the time


Both Java and JS adhere to IEEE 754, what’s your point?

Sure it doesn’t have BigDecimal, but you’re not going to write HFT in JS either.



Is that sacrcasm? Not sure what your point is.


Jesus, you sound like the X11 fanatics I used to debate with about NeWS, long before anyone had envisioned Google Maps or coined the term AJAX for what we'd been doing with PostScript since the 1980's.

The NeWS window system was like AJAX, but with: 1) PostScript code instead of JavaScript code 2) PostScript graphics instead of DHTML graphics, and 3) PostScript data instead of XML data.

https://en.wikipedia.org/wiki/NeWS

NeWS – Network Extensible Window System (wikipedia.org) 86 points by stevewilhelm on April 12, 2016 | hide | past | favorite | 76 comments

https://news.ycombinator.com/item?id=11477565

ScriptX and the World Wide Web: “Link Globally, Interact Locally” (1995)

https://donhopkins.medium.com/scriptx-and-the-world-wide-web...

PizzaTool was a NeWS front-end entirely written in PostScript for ordering pizzas, that had a price optimizer which would immediately figure out the least expensive combination of pizza style + extra toppings for the pizza you wanted. (i.e. ordering an "Tony's Gourmet + Clams" was less expensive than ordering a plain pizza plus all the individual toppings.)

Source code:

https://www.donhopkins.com/home/archive/NeWS/pizzatool.txt

Of course the untrusted front-end client side user input was sent via FAX to the back-end "server side" humans at Tony & Alba's Pizza, who validated the input before making the pizza, because performing input validation and price calculation and optimization in the back end end via FAX would have been terribly inefficient. (This was in 1990, long before every pizzaria was on the internet, and you could order pizzas online, kids!)

https://donhopkins.medium.com/the-story-of-sun-microsystems-...

Computers and networks are fast enough (especially now 35 years later) that it's ok to perform input validation twice, once in the front-end to make the user experience tolerably fast, and again in the back-end to prevent fraud. This is not rocket science, nor a new idea! It also helps if the client and server are implemented in the same language (i.e. JavaScript today), so you can use the exact same code and data for modeling and validation on both ends.


Oh, wow. So you’re one of those. Disregard what I said in previous comment.


> I was born into a clan writing desktop apps in Swing, and while I know why the browser won, Swing (and all the other non-browser desktop app frameworks/toolkits) are just such a fundamentally better paradigm for handling data.

No, by a large margin no. Java is a hostile language to prototype programs at which JS excels. Awful styling, walls of code just to get sane defaults (https://docs.oracle.com/javase/tutorial/uiswing/dnd/together..., seriously?).


Swing is decades old at this point, its shortcomings have nothing to do with Java. JavaFX does not require this much boilerplate.

https://docs.oracle.com/javase/8/javafx/get-started-tutorial...


"And all the other desktop app frameworks." I refer to Qt and and the other desktop frameworks too. Having an actual language and runtime where the UI toolkit is just that, a toolkit. Don't focus on Swing, that's just what I'm familiar with.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: