7 ms·
Someone please enlighten me - Human describes the problem specs in vague English - LLMs generate some solution based on the texts it has seen (LLMs may gen
by ducktective 4y ago
Someone please enlighten me
- Human describes the problem specs in vague English
- LLMs generate some solution based on the texts it has seen
(LLMs may generate non-factual information here but assume the output is factual)
- Human refines the prompt to get closer to "the thing he has in mind"
- LLMs still tries _to the best of its effort_ generate a "close" solution
- and we loop here
Assume the specs of the problem is fixed. Why LLMs couldn't generate the output the Human "had in mind"?
Because English description of the problem was not deterministic?
What can we do? Invent a language for automation specification. Then LLMs can accurately churn up a solution in one shot.
But..that "deterministic language" is what programming languages are. So LLMs at this current state are basically a transpiler from rough-English to a deterministic-English.
But, can LLMs be thought only the specs of a programming language (like C) then generate assembly code from a valid C code? In effect, can LLMs be exact compilers not English transpilers?
- mkehrt 4y agoI think > (LLMs may generate non-factual information here but assume the output is factual) is doing essentially all of the work here.
- jasfi 4y agoEvery new generation of LLMs can write code better than the previous ones. It's really just a matter of time as the models keep improving. They can already generate basic solutions in one shot if simple enough and if enough examples were present during training. Complexity is the problem. This is what humans, and now LLMs, struggle with when it comes to designing and coding solutions. Managing complexity is why we've attempted to invent paradigms such as OOP, which some claim only makes things worse.
- adhesive_wombat 4y agoLLMs aren't really exact anythings. I have no idea if an LLM specifically is the tool for the job or not, but presumably with the input of the source code of millions of compiled executables and the compiled output, "an" AI system can learn to be a compiler. If it can then analyse the generated programs for things like performance, size or other metrics of compiler goodness, it can compile "better". Hopefully it won't make any mistakes when you come to use it because that will be the devil's own job to track down: compiler bugs are bad enough as it is! But then we can conceive of a compiler bug-finding AI...
- ramraj07 4y agoYou are absolutely right that using natural language to specify problem means LLM has to guess a bunch of things. And obviously the guesses are not fully accurate. So we go back and forth. But guess what, it gets 80/100 (if not more) assumptions right in a typical code problem. Majority of them boilerplate code assumptions. Thus you end up focusing on just the most important decisions and the LLM acts as a companion to you in a way a pair programmer does. Thus the ambiguity of the language is what benefits the system here. The power of LLMs is the fact that they use natural language. It’s like bashing on pipe based string processing that enabled all the Unix applications in the beginning. The simplicity of the system is what powers the entire thing. You cant take it away.
- CapsAdmin 4y agoTraditional computing is good at being precise at the cost of being rigid, ml computing is good at being flexible at the cost of being ambiguous. I don't trust ml computing to be precise in the same way I don't trust humans to be precise (we can all potentially write code with bugs) because the process is fundamentally non deterministic. The way we solve this with humans is to create tools that test verify what we make, backed by some sort of proof. I guess once ml computing can get feedback from these tools, the situation will improve?
- mistrial9 4y agooh this is a great line! you are so close with the rest but.. > fundamentally non deterministic thats not quite it.. it is non-deterministic plus the way the parts are re-ordered is flexible in ways that are not obvious, and do result in nonsense sometimes. More specifics are according to the engine(s) in use..
- larsonnn 4y agoYou are enlightened. ML is a tool for results that are just good enough. But people think they can program with it. LLMs are a good way to get a glimpse of the right answer you still need to get deeper look in topics for: A: validate the result of the LLM B: get a better understanding of your topic
- thrown123098 4y agohttps://www.researchgate.net/figure/Then-a-Miracle-Occurs-Copyrighted-artwork-by-Sydney-Harris-Inc-All-materials-used-with_fig2_302632920 https://www.researchgate.net/figure/Then-a-Miracle-Occurs-Co... That is more or less the state of all plans on putting llms into anything useful. I think the lack of and education of language parsing ambiguity is the main reason why so many people are buying the hype here. >Siri call me an ambulance. Is not a solved problem and will never be if you're using English as your input language.
- passwordoops 4y agoIn a recent conversation with a buddy after I tried ChatGPT4: -ME: It took my requirements for a simple webapp, gave me the front-end and back-end code. Then it tweaked the code appropriately based on my comments and bug reports, without arguing back or asking why I'm so dumb. In 10 minutes I went from idea to prod potential. -HIM: Effing thing is going to put me out of a job... -Me: PMs who jump on the bandwagon and train people in how to write good, detailed and precise specs will be fine. -Him: Hahahaha. No one writes good specs. I’m safe for now.
- circuit10 4y agoIt can write the specs too Here’s something I posted earlier: I asked ChatGPT “Let’s say I want a program to delete unused files. Can you write a detailed specification that a developer could use?”. I was as vague as possible on purpose. Here’s what it gave me: “Program Name: FileCleaner Overview: The FileCleaner program is designed to identify and delete unused files from a specified folder or directory. The program scans the directory for files that have not been accessed for a specified period of time and prompts the user to delete them. The program is intended to free up disk space and improve system performance. Requirements: The program must be able to scan a specified folder or directory for files that have not been accessed for a specified period of time. The user should be able to specify the time period after which a file will be considered unused. The program should prompt the user to delete the identified unused files. The user should have the option to select which files they want to delete. The program should permanently delete the selected files from the system. The program should log all deleted files, including their location and name, in a separate file for future reference. The program should have a user-friendly interface that is easy to navigate and understand. Functional Specification: The user launches the FileCleaner program. The user is prompted to select the folder or directory they want to scan for unused files. The user is prompted to enter the time period after which a file will be considered unused (e.g., 30 days). The program scans the specified folder or directory for files that have not been accessed for the specified time period. The program displays a list of unused files, including their location and name. The user is prompted to select which files they want to delete. The program permanently deletes the selected files from the system. The program logs all deleted files, including their location and name, in a separate file for future reference. The program displays a message indicating that the selected files have been successfully deleted. The user can choose to exit the program or scan another folder or directory. Non-Functional Specification: The program must be designed and implemented using a high-level programming language, such as Python or Java. The program should be able to handle large files and directories without crashing. The program should have a user-friendly interface that is easy to navigate and understand. The program should be able to run on multiple operating systems, including Windows, MacOS, and Linux. The program should be secure and not pose a risk to the system or user data. The program should be well-documented, with clear and concise instructions for use and troubleshooting. By following these specifications, a developer can create a FileCleaner program that efficiently identifies and deletes unused files from a specified folder or directory.” This could be improved even more by having it ask questions to narrow down exactly what is needed
- syntheweave 4y agoWhat LLMs solve for programming are a class of low-hanging-fruit problems: things that in many respects could be done by hand, but are too expensive to bother with relative to the problem's size. If you have a one-shot problem, you may be able to avoid making the actual program and just jump from problem to solution. A lot of the systems that programmers design are potentially representable instead as new iterations of that one shot problem, and therefore something no code need be written for. This does run a risk of getting a wrong answer infinitely fast, but that has never not been the case with computers, it's just a case of now having a kind of "level 3 autonomy" where you may need to abruptly grab the wheel and get the answer yourself.
- roel_v 4y agoWell... yes? I don't know about this 'flow based programming' per se, but what you describe is indeed how one uses ChatGPT for programming. I don't understand the pushback on every article like this. How aren't there obvious major productivity gains when a computer can generate 80% or more of your solution, and you just have to fine tune it? Let me give you an example of what I did just this morning. In fact, ChatGPT is generating code in another tab as I'm typing this - GPT4 is quite slow (well, at least it takes longer than my attention span which has been reduced to that of a sea urchin by years of social media and usage of internet in general), especially when you let it create 50 to 100 lines at a time. I'm working on a specialized ETL tool for geospatial data. In fact, I've had several iterations of this tool over 5 or more years, but for the last few months I've been working on a new version that incorporates everything I've learned about the domain in that time. This conceptualization, the learning of what the tool should do and how all components fit together, is not something a computer can do. I would have to be able to describe it to get a computer to generate it, of course, but I couldn't a few years ago because I was still finding out what it should do to provide the most value. The reason I had several versions is because I kept learning more about what I need it to do. But many of the boring machinations I absolutely can have a computer do. For example, a part of this tool is a tiny DSL which is basically a way of specifying combinations of parameters with some dress-up. I'd been dreading making a proper parser for weeks, since a) the 'design' of this DSL has fluctuated quite a bit, and b) I'd have to dreg up my knowledge of parsers from the last time I wrote one 10 years ago. So I've been getting by using a combination of regex, split() and some hand massaging of strings. But this morning, I had ChatGPT write me the biggest part of a parser using three questions: - "Write a parser in python for the following format: [optional identifier] [open square braces] [either a list of values, separated by commas; or a list of key-value pairs, separated by commas, the keys and values are separAted by equals signs] [close square braces]. The identifier is optionally followed by an 'at' sign, and a qualifier after that. Show me the EBNF and a parser in python that implements this grammar." - "The qualifier should come before the square brackets, it's part of the identifier." - "Write some unit tests for this grammar. Include corner cases for all varieties of the allowed input, so with or without identifier, with or without qualifier, with plain lists and with lists of key/value pairs. Include cases for 0, 1 and 3 values in all places where more than one element can appear." (try it, I used GPT4 but you'll probably get similar results if you use the free version) The result I got from this has 2 mistakes: in one case I had to swap two tokens in the EBNF. This one I found by reading the docs while waiting for the output of whatever ChatGPT suggested as a fix after me copy and pasting the error message I got. So this was fixed, by me, in a few minutes (ChatGPT's suggestion for a fix made no sense). The second one, ChatGPT suggested a correct fix after I copy and pasted the error message also. So, ChatGPT gave me a skeleton grammar, complete with the syntax of the library which I had never heard about 2 hours ago. The second of my first three questions was because I gave it ambiguous input, I only thought of that part while I was writing the question and didn't bother to go back and edit it in in the right place where it would have been more obvious. Then I copy/pasted the raw output from ChatGPT in a new file, ran it, I got the issues fixed (in collab with ChatGPT) in 20 minutes or so. This would have taken me all morning and probably all day if I include all unit tests and all other details just a few months ago. How is this not a massive game changer? Now, I would not have been able to do any of this hadn't I already known what an 'EBNF grammar' was, and hadn't known how to read and implement one. This tool will not replace programmers. It will however eliminate the need for the very low skill ones, and make the rest (much) more productive.
- qazpot 4y agoI think you are taking a very major assumption that LLMs are deterministic infact they are exactly opposite. They are probabilistic systems. - They do not transpile Rough English to Deterministic English. Infact they do not do any transpiling at all. - LLMs learn the probabilities of words in the dataset for all contexts from that dataset (context is a ordered set of words). This is called training. - Once training is done, LLMs can generate text given a prompt and the probabilities that it has learned. The analogy of LLMs being auto-complete on steroids is very apt. - Whether the text generated by LLMs is factual or not is purely coincidental. I would highly recommend watching and working though the code (if possible) of NanoGPT by Andrej Karpathy. https://www.youtube.com/watch?v=kCc8FmEb1nY https://www.youtube.com/watch?v=kCc8FmEb1nY A lot of things which seem like magic about LLMs will get demystified. Now one can argue that LLMs are showing human like reasoning/intelligence/sentience as an emergent behavior. This is hard to argue against because all these terms are extremely hard to define. IMO, the only emergent behavior that LLMs are showing is the output they generate looks like it might have been generated by a human which should not be surprising given that LLMs like ChatGPT has trained on a large amount of human written text available on internet.
- ethanwillis 4y agoOn your first point you couldn't be more wrong. LLMs are deterministic. They are run on a deterministic machine and the entailment of that forces them to be so. Also probabilistic does not mean the absence of determinism. For example, for every non-deterministic/probabilistic finite automata there is an equivalent deterministic one.
- xyzzy123 4y agoLLMs can be implemented to be formally deterministic but if you ask them to solve a specific problem instance you have not seen before, you cannot generally guarantee they will do so reliably. So you're correct in a pedantic sense but I think GP's perspective is more useful if you are problem solving.
- ethanwillis 4y ago
- raincole 4y ago- Human, named ProductDesigner, describes the problem specs in vague English - Another human, named Programmer, generate some solution based on his expirence. - ProductDesigner, refines the spec to get closer to "the thing he has in mind" - Programmer, while annoyed, tries to his best effort to write a close solution - And we call it iteration of development Is it really that different from your experience? Ok, maybe not your experience, but in the world of outsourcing works it's really kinda like that. The solution to the above is never "ProductDesigner should learn to speak a deterministic language." It's "when Programmer feels the spec is too ambiguous, he should give feedback to ProductDesigner." You can't eliminate the "vagueness of natural languages" from the equation. The only differences are, to me, 1) AI is really not that smart yet. 2) AI doesn't admit it doesn't know something. Humans are reluctant to admit it as well, but as least we do it when it's necessary.
- lucubratory 4y agoI haven't had this from ChatGPT and haven't used paid ChatGPT to test GPT 4.0 there, but with Bing (Creative) specifically I've had it regularly tell me it doesn't know something. It still hallucinates other things, but it's no longer just a lying yes man. If you ask it for information it can't find or a task it can't do, there's a very good chance it says "Sorry, I can't do that." The other day I was trying to find out what percentage of Konstantin Tsiolkovsky's works were published before the age of 60 vs after the age of 60, something that's almost impossible to find on the internet (I don't speak Russian). I spent a lot of time trying to get Bing to answer it for me (didn't succeed), and one of the times I asked it to look up all the bibliographic information it could on Tsiolkovsky, go through each file and count the dates of publication, then tell me how many were after his 60th year. It said "Sorry, that would require me to download and analyse a large number of PDFs, which is outside my current capabilities. I'm sorry I couldn't be of more assistance this time. " They've improved a lot on the Yes Man aspect of it.
- nerdponx 4y agoI wonder how much of this was just hours and hours of manual Q&A training.
- csomar 4y agoThe problem is that the "human" cannot accurately express himself in English, or cannot define the whole problem scope. Mastery of the English (or whatever) language that the Enterprise is using is more important than technical expertise. This cannot be stressed enough. Correct and extensive technical specifications are as hard as the code/stack itself. The human here is acting as a compiler for the real world. In each iteration, it's raising exceptions and errors for the AI. The iterations will continue until the AI compiles the correct output.
- ChatGTP 4y agoIf we could describe architectures and features clearly in English, we'd have code generation solved years ago.
- specialist 4y ago> Correct and extensive technical specifications are as hard as the code/stack itself. Yup. Maybe even harder. Ditto requirements gathering, analysis, acceptance testing, adoption (evangelism), etc. All that squishy organizational psychology stuff. Coding is the easy part.
- Yoric 4y agoNote that there is a deterministic subset of English that has been specified formally. I can't find its name at the moment, but it might help here?
- jimbokun 4y agoOh! Oh! (Raises hand…) A programming language!
- omnicognate 4y agoCOBOL?
- jimbokun 4y agoEven giving instructions to a human programmer, a few iterations will be needed to refine the requirements, clarify ambiguities, and get the desired system.
- tomrod 4y agoPrompting is like playing basketball. Being able to do it right, consistently, is like performing a jump shot. [0] https://causalinf.substack.com/p/prompts-are-the-wands-of-gpt https://causalinf.substack.com/p/prompts-are-the-wands-of-gp...
- hgsgm 4y agoWhat is a jump shot like?
- ambicapter 4y agoThe article GP linked shows a picture of one. It's when you jump, before taking a shot in basketball.
- nonethewiser 4y agoThis was not the experience see not the experience described in the article whatsoever.
- cacois 4y agoI believe this framing is a bit over-simplified.This description presumes that the Human does indeed have the entire solution in their head, and the only problem is expressing it in a language. In reality, Human only understand a fraction of the necessary solution (maybe even a fraction of the full problem!) when they begin to program the solution. A big part of the iteration is discovering things the Human did not know about the problem or the necessary solution. Eventually we converge on A solution, which may not look very much like the originally envisioned solution at all. So no, I do not think the LLM is functioning as a transpiler for english. I think its a tool providing feedback in a necessary iterative cycle or discovery and development. The iteration itself is the "transpiler for english", in a crude way.
- jstx1 4y agoYou don't need to loop with the LLM multiple times - after a couple of prompts and adjustments you can accept the suggested code and make any modifications you want yourself because at that point editing the code by hand would be faster and more precise that expressing every detail to the LLM in English. That way you're gaining productivity from the all the code generation the LLM does for you and you have final say on all the committed code, it seems like a win-win.
- awb 4y ago> Invent a language for automation specification We already have, they’re called programming languages
- nickpinkston 4y agoI think it can be easier to give a napkin sketch / whiteboard image / wireframe to get to the right UI faster, than having to verbally give very specific directions for every little element. I was wondering the submit pic option on GPT-4 actually would be this well and perhaps out HTML/CSS to do it - maybe not possible today, haven't tried it yet. Or who knows - maybe it will be be a like a senior product design who will just figure it all out, but that would require a long convo / submitting a design brief / customer profiles, etc.