So. I was working with this code:

public function front(?string $sortBy,
        ?string $time,
        ?string $type,
        ?string $filter,
        string $federation,
        Request $request): Response
    {
        $user = $this->getUser();

        if (!$user)
        {
            $filter = 'all';
        }

        $criteria = new EntryPageView($this->getPageNb($request));
        $criteria->showSortOption($criteria->resolveSort($sortBy))    

… and so on; the function continues. VSCode told me there was a syntax error on the close brace on the if statement. I stared at it for a while, then pasted the code into GPT (not Copilot). Here’s the conversation we had about it:


Me

What’s the syntax error here?

(and I pasted the code)

GPT

The syntax error in your PHP function public function front seems to be due to the incorrect placement of the closing curly brace for the if statement. It appears that the if statement is not properly closed before the $criteria initialization begins. The corrected code should look like this:

public function front(?string $sortBy, ?string $time, ?string $type, ?string $filter, string $federation, Request $request): Response
{
    $user = $this->getUser();

    if (!$user) {
        $filter = 'all';
    } // Closing brace for the if statement

    $criteria = new EntryPageView($this->getPageNb($request));
    $criteria->showSortOption($criteria->resolveSort($sortBy));
    // ... rest of your function code ...
}

Ensure that each statement and block is properly closed and followed correctly by the next statement. This corrected structure should resolve the syntax error you are encountering.

Me

I don’t get it. I put a closing curly brace right after the statement in mine… what am I missing?

GPT

I apologize for the confusion. Upon re-examining your code, it seems the placement of the curly brace is correct. If you’re still encountering a syntax error, it may not be related to the if statement structure.

Let’s look at other possible issues:


… and so on. Pasting GPT’s recommended if-statement block, including the curly brace that was already there, fixed the error. I have since re-pasted the same thing I initially gave to GPT to VSCode, and it all works now, and asking the exact same question of GPT again now leads to random guesses which have nothing to do with the cursed curly brace that was previously causing problems for both VSCode and GPT.

I have given up and moved on at this point, content to say vaguely that maybe the unusual brace style, or pasting the incomplete function without semicolon or final close brace, managed to coincidentally confuse GPT on exactly the same line where VSCode had gotten confused for unexplained reasons. But the whole thing still has this Twilight-Zone oddness to me.

  • MagicShel
    link
    fedilink
    arrow-up
    17
    ·
    10 months ago

    I can’t read PHP, so I can’t tell you where the syntax error is, but the AI is only responding in a way to complete the conversation. It has no ability to comprehend the code you’ve written, it just knows that conversations that start off the way yours did, probably ought to end with a complaint about that closing brace - particularly if you told it what VSCode was complaining about.

    This is one of the shortcomings of AI code assistants - they can’t think abstractly at all. So it’s ability to answer a troubleshooting question depends greatly on how many times the same question has been asked on StackOverflow and elsewhere.

    • jarfil@beehaw.org
      link
      fedilink
      arrow-up
      7
      ·
      10 months ago

      the AI is only responding in a way to complete the conversation. It has no ability to comprehend the code

      Ask it to explain the code, and get surprised.

      GPT has stopped being a markov chain completion engine like 10 years ago.

      • MagicShel
        link
        fedilink
        arrow-up
        8
        ·
        10 months ago

        I have. I’ve used GPT for about 5 years. It has gotten more sophisticated and yet it’s still just a completion engine even if it has more moving parts. There is no comprehension or reasoning behind it.

        • jarfil@beehaw.org
          link
          fedilink
          arrow-up
          4
          ·
          edit-2
          10 months ago

          At this point some of those moving parts are capable of reacting to syntax errors, sentiments, and a ton of other “comprehension” elements. By looping over its responses, it can also do reasoning, as in comprehend its own comprehension.

          It doesn’t do that by default, though. You have to explicitly ask it to loop in order to see any reasoning, otherwise it’s happy with doing the least amount of work possible.

          A way to force it to do a reasoning iteration, is to prompt it with “Explain your reasoning step by step”. For more iterations, you may need to repeat that over and over, or run Auto-GPT.

          • TehPers@beehaw.org
            link
            fedilink
            English
            arrow-up
            3
            ·
            10 months ago

            GPT, at least from my limited understanding, is a tool designed to continue the input. You feed it a sequence of tokens, it returns a tokens which it “believes” come next. While your impression is valid, it’s still a “completion engine”. ChatGPT and other products use GPT but have built a product around it. They are not simply frontends for GPT - they do a lot more processing than that.

            Also, not trying to understate your impression. It’s pretty impressive how good it is, despite the compute needed for it. I would caution against overestimating its responses though. It does not “reason”, “think”, etc. Its purpose is to continue a sequence of tokens following a (super complex) pattern it has been trained on (super basically). When it claims to reason something, it’s because the people it trained off of did reason it.

            • jarfil@beehaw.org
              link
              fedilink
              arrow-up
              4
              ·
              edit-2
              10 months ago

              Yes and no.

              GPT started as a model for a completion engine… then it got enhanced with a self-reflection circuit, got trained on a vast amount of data, and added a “temperature” parameter so it can make tiny “mistakes” as compared to a simple continuation model, which allows it to do (limited, and random) free association of concepts.

              It doesn’t “think”, but it does what can be seen as a single iteration of “reasoning” at a time. If you run it multiple times without resetting the context, you can make it actually “reason”, step by step. Thanks to the degree of free association of concepts, this reasoning is not always the same as what it found in the training set, but actually what can be seen as “real” reasoning: associating concepts towards a goal. These are the “zero shot” responses that make LLMs so interesting:

              https://en.m.wikipedia.org/wiki/Zero-shot_learning

              TL;DR: I agree that it shouldn’t be overestimated, but I don’t think it should be underestimated either; it does “reason”, a bit.

              • Mad_Punda.de@feddit.de
                link
                fedilink
                arrow-up
                1
                ·
                10 months ago

                This was really interesting to read. Do you have some links where I can read more about what ChatGPT likely is and isn’t capable of?

            • mozz@mbin.grits.devOP
              link
              fedilink
              arrow-up
              1
              ·
              10 months ago

              GPT runs on computer hardware which is just a tool to decide, “yes” and “no” equals “no” because they’re not both true, remember “one,” okay tell me back what the value was, okay “one.” It’s all just bits and mind-bogglingly simple transformations on bits. The simplicity of the computations that underlie it, doesn’t translate into the complexity of what it can do at scale.

              I fully agree with you that GPT can’t actually reason, no matter how convincing the illusion is, but purely-token-shuffling tasks like translating between human languages, or analyzing code for purely-syntactical errors, is as much in its wheelhouse as arithmetic is to CPUs. Or it should be, anyway. Sometimes weird stuff happens.

            • jarfil@beehaw.org
              link
              fedilink
              arrow-up
              1
              ·
              edit-2
              10 months ago

              Can LLMs Really Reason and Plan?

              do LLMs generate their output through a logical process?

              Shifting goalposts. I’ve claimed a single reasoning iteration for an LLM, per prompt; both “planning” and a “logical process” require multiple iterations. Check Auto-GPT for that.

              PS: to be more precise, an LLM has a capacity of self-reflection defined by the number of attention heads, which can easily surpass the single-iteration reasoning capacity of a human, but still require multiple iterations to form a plan or follow a reasoning path.

        • Moira_Mayhem@beehaw.org
          link
          fedilink
          arrow-up
          2
          ·
          10 months ago

          Fucking thank you. Everyone seems to think GPT is some kind of reasoning engine.

          It is just a storyteller with fucktastically huge pile of material to pull from.

          • mozz@mbin.grits.devOP
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            10 months ago

            Agree. It’s a matching and reshuffling engine. If you ask it a question the components of which are contained somewhere out in the universe of text it has to draw from, it’s able to find the answer in its data and reshuffle tokens around so that it can present that other person’s reasoned-out answers back to you in a way that they look like it reasoned them out itself.

            It’s incredibly impressive. That already is, as its successes are demonstrating, sufficient to execute a lot of “intelligence” tasks that previously computers just weren’t able to do. It’s still really easy to make it fall down by asking it questions that it can’t “reason” about by shuffling tokens around.

            Easy example:

            Me: How many asterisks in **4**3*****2**1**?

            GPT: The expression **4**3\*****2**1** contains a total of 10 asterisks.

            The random backslash was inserted by GPT. I’m presenting the question as typed, and the exact raw text GPT gave me back instead of the way it’s formatted by the web interface, escaping asterisks and backslashes both so that they appear in markdown exactly as they were in the raw input and output.

    • mozz@mbin.grits.devOP
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      10 months ago
      1. Yes, but GPT-4 is sophisticated enough to tell where the syntax error is. It’s just a stochastic parrot, but finding the syntactic error in a block of code is, like language translation, actually an “intelligence” task that a stochastic parrot is well-qualified at. And, like I say, when I pasted the code a few times today, it gave more or less the right answer – there’s no obvious syntax error but here are a few things you might want to think about. It was only the one time right after VSCode complained that it also complained about the exact same line.

      2. That doesn’t explain why VSCode complained about the same line. Unless VSCode has started doing syntax checking with an LLM which I would be surprised to find out was the case (for computational-cost reasons if for no other reasons.)

      There’s no actual syntax error. I even put the whole thing into hexl-mode just to make sure there wasn’t some hidden Unicode character mucking it up in some invisible way. I thought I was just missing something unexpected (maybe a brace problem somewhere else in the code) and blaming my tools, but at this point I’ve literally pasted back the exact code I gave to GPT in the first place, and it works now for both GPT and VSCode.

      (Edit: Oh, and I didn’t tell it what VSCode was complaining about. I specifically asked the question in the way that I quoted above, specifically so that it wouldn’t get hinted to look at a particular line or what the issue might be. The fact that it zeroed in on exactly the same issue that VSCode did, even when the code was completely separated from anything like brace problems in the surrounding code that might be causing weird problems, was what started to weird me out. When I pasted its identical if-block back into my code which still would have had the same surrounding brace problems if that was the issue, and it started working, was when I got significantly more weirded out.)

      • MagicShel
        link
        fedilink
        arrow-up
        3
        ·
        10 months ago

        I was going to make the point that there may not be an error, but because you tell it to give you one, it finds something. But that doesn’t explain VSCode, you’re right. Every once in a while an IDE is just wrong. I was going to suggest trying a different IDE which might give you a less cryptic message. I often times find bad brace errors to be a result of something much higher in the code.

        But again, not knowing PHP, I could only take a stab at answering why with the AI. I’ve tried many times to have an AI help me with these tasks. And sometimes it’s very good at them, but other times I can spend hours refining my query and arguing with it and never make any headway.

        • mozz@mbin.grits.devOP
          link
          fedilink
          arrow-up
          1
          ·
          10 months ago

          Haha yeah. That’s why I tried it again a few times today. Today everything is normal.

          shrug

          It is a mystery. Maybe it is just a coincidence of failures, or maybe Copilot actually is used for some syntax-highlighting things and there was some transient subtle failure in the model that affected both Copilot and GPT. Neither of those explanations really feel plausible to me though. Oh well.