[HN Gopher] Using GPT-3 to explain how code works ___________________________________________________________________ Using GPT-3 to explain how code works Author : simonw Score : 100 points Date : 2022-07-09 15:53 UTC (7 hours ago) (HTM) web link (simonwillison.net) (TXT) w3m dump (simonwillison.net) | layer8 wrote: | Tangential question: Is GPT-3 (and similar tools) being kept up | to date with new information? Or would it basically have to be | retrained from scratch to properly incorporate new data? | simonw wrote: | There's a mechanism you can use to add your own training data | on top of GPT-3. This tutorial talks about using that to | generate song lyrics (about half way through): | https://wingedsheep.com/songwriting-with-gpt-3/ | | I don't know how often OpenAI build new versions of the core | GPT-3 language model. | abirch wrote: | What would be highly beneficial is for the AI to understand | changes so when it spots an old pattern in my code, it could | suggest the new pattern. I'd pay for a Copilot that did that. | pornel wrote: | This as an assistant/teacher could be incredibly empowering for | people learning to program. | | I'm sceptical of AI writing programs for people, but I can easily | imagine such AI guiding/unblocking non-programmers enough for | them to actually program. | layer8 wrote: | It's a double-edged sword. From the article: | | _GPT-3 doesn't actually know anything about anything at all. | It's a huge pattern generator. You can't trust anything it | says, because all it does is group words together into | convincing looking shapes based on text that it's seen before. | | Once again, I'm reminded that tools like GPT-3 should be | classified in the "bicycles for the mind" category. You still | have to know how to pedal! | | They're fantastic tools for thinking, but to actually use their | output effectively requires VERY deep knowledge--both of the | subject matter in question, and of the way that the AI tools | themselves work._ | l33t2328 wrote: | What is thinking if not pattern generating? | trention wrote: | It's not enough to state that the human mind is a pattern | matcher as pretty much everyone of the "scale is all you | need" crowd does. You have to prove it too. | | Otherwise it's just a variant of Russell's teapot. | abrax3141 wrote: | Even if you prove it, it's not useful. | abrax3141 wrote: | You aren't actually serious, are you? | Swenrekcah wrote: | We use far more variety of inputs than GPT-3. | | GPT-3 has more textual training data than any human could | read in a thousand lifetimes, but we base our judgment on | much more than that. | layer8 wrote: | I agree that in a sense it's probably only a matter of | degree. However, take for example its explanation of the | _xm_ modifiers, where it only explains the _x_ , but | remains silent one the fact that it only explains the _x_. | It's unclear whether it has any awareness that it provides | an incomplete and potentially misleading explanation. It | would be interesting to see how it reacts to "what you | explained is only the _x_ , what about the _m_?". | duskwuff wrote: | And, in particular, GPT-3 will be _very_ easily misled by | plausible-but-incorrect inputs -- like programs written by | amateur developers. I definitely wouldn 't trust it to find | subtle logical errors in a student's computer program, for | example. | Transfinity wrote: | The types of error made by the model in the article are | exactly the sort of error that I (senior engineer / decade of | experience) would make if asked to describe how something | works and I didn't want to spend too much time on the | details. The difference is, I can usually give a decent | estimate of how sure I am of something, and know how to zero | in on the truth when it's important. | | Maybe a confidence level for a given explanation, along with | some sort of "here's where you can go to learn more" would be | useful? No idea if language models would be good at that kind | of meta reasoning. | loufe wrote: | This is fantastic, I've been enjoying myself thoroughly with | Dall-E 2 recently and similar to this love trying to imagine how | the training method / training data must have led to the output. | It's truly amazing times we live in, but it will take a lot more | work than people 70 years ago thought to get to a level of | polish. | booleandilemma wrote: | Could they do this for legal documents too? | | I'd hate to see just the programmers put out of work by GPT-3. | Transfinity wrote: | A buddy of mine works at a startup doing exactly this: | https://www.advocat.ai/ | | Unsure if they use GPT-3 specifically, but the core idea is the | same. | akamoonknight wrote: | This is a fascinating use case that wouldn't have occurred to me | at all, quite cool, even if it "doesn't know anything about | anything at all". | | It even does pretty good with Verilog, which I assumed it would | have issues with, admittedly some of this is just "google-able", | but even so. It can even create a reasonable attempt at a | testbench (even though it doesn't quite get it right), which is | crazy to me. | | *Explain this code: | | module my_module(a,c,y); input a,c; output y; assign y= c ? a : | 1'bz; endmodule* | | This code is a Verilog module that defines three inputs (a, c, y) | and one output (y). The output y is assigned to the value of a if | c is true, otherwise it is assigned to 1'bz. | | *What is 1'bz ?* | | 1'bz is a Verilog constant that represents a bit value of 'z', | which is used to indicate a high impedance state. | | *Why is high impedance used ?* | | High impedance is used in digital circuits to allow multiple | drivers to share a single bus without contention. When two or | more drivers attempt to drive the same bus at the same time, a | contention can occur and the bus voltage can become undefined. By | using high impedance, drivers can avoid contention and allow the | bus to remain stable. | | *Give me a testbench for this module* | | module testbench; reg a; reg c; wire y; my_module | dut(a, c, y); initial begin a = 1'b0; | c = 1'b0; #1; a = 1'b1; c = 1'b1; | #1; a = 1'bz; c = 1'b1; #1; a = | 1'bx; c = 1'b1; #1; $stop; end | | endmodule | | *Create the same testbench but add validation of the output.* | | module testbench; reg a; reg c; wire y; my_module | dut(a, c, y); initial begin a = 1'b0; | c = 1'b0; #1; a = 1'b1; c = 1'b1; | #1; a = 1'bz; c = 1'b1; #1; a = | 1'bx; c = 1'b1; #1; $stop; end | always @(*) begin if (c == 1'b0) assert(y == | 1'b0); else if (c == 1'b1) assert(y == a); | else if (c == 1'bz) assert(y == 1'bz); else if | (c == 1'bx) assert(y == 1'bx); end | | endmodule | punnerud wrote: | This would be great for blind people, or you could program while | biking. | ctoth wrote: | As a blind programmer I'm trying to understand how I should | find this more useful than anyone else? | netsec_burn wrote: | I think what they're saying is, you can quickly understand | the contents of a file by having it summarized for you | audibly. Versus having each token read out to you. Then you | can locate the part that you're trying to program faster. | f38zf5vdt wrote: | > As with everything GPT-3, this answer sounds very convincing! | But is this actually true? I would expect the SQL query optimizer | to be smart enough to optimize the LEFT JOIN to the point where | it would run efficiently. I think GPT-3's answer to that question | is actually very misleading. | | I really enjoy how well it gives wrong answers. The internet | being polluted with GPT3-like text models is going to send us | back to the time when verifying anything online as truthful is | difficult, if it hasn't already. | mwint wrote: | Maybe my next move should be to start a consulting shop: "We | Fix GPT-3 Code". | abrax3141 wrote: | Good luck with that. I don't think that these things are | fixable. They're basically giant grammatical confabulation | engines. When you want grammatically-correct random noise, | great. Don't fly a plane with them, please...or at least not | one I'm on! | trention wrote: | He meant fixing the output(s) not the model that produced | them. | jwilk wrote: | > The (?xm) notation is a modifier that allows the regular | expression to span multiple lines and to use comments. | | This is incorrect. | | (?xm) enables the VERBOSE (X) and MULTILINE (M) flags. | | From the docstring: M MULTILINE "^" matches | the beginning of lines (after a newline) as | well as the string. "$" matches the end of | lines (before a newline) as well as the end | of the string. X VERBOSE Ignore whitespace and | comments for nicer looking RE's. | xdfgh1112 wrote: | The X flag also allows the written regex to span multiple | lines, i.e. it counts newlines as whitespace. Interesting | confusion there. | simonw wrote: | Hah yeah, good catch - I'd missed that incorrect "allows it to | span multiple lines" statement. ___________________________________________________________________ (page generated 2022-07-09 23:00 UTC)