Program-of-Thought Prompting Outperforms Chain-of-Thought by 15% (2022)
44 points
3 hours ago
| 8 comments
| arxiv.org
| HN
koakuma-chan
1 minute ago
[-]
What is "program-of-thought" ?
reply
robot-wrangler
25 minutes ago
[-]
Chain-of-code is better than chain-of-thought because it's more grounded, more specific, and achieves a lot of useful compression. But my bet is that the proposed program-of-thought is too specific. Moving all the way from "very fuzzy specification" to "very concrete code" skips all of the space in the middle, and now there's no room to iterate without a) burning lots of tokens and b) getting bogged down in finding and fixing whatever new errors are introduced in the translated representations. IOW, when there's an error, will it be in the code itself or in the scenario that code was supposed to be representing?

I think the intuition that lots of people jumped to early about how "specs are the new code" was always correct, but at the same time it was absolutely nuts to think that specs can be represented in good ways with natural language and bullet-lists in markdown. We need chain-of-spec that's leveraging something semi-formal and then iterating on that representation, probably with feedback from other layers. Natural-language provides constraints, guess-and-check code generation is sort at the implementation level, but neither are actually the specification which is the heart of the issue. A perfect intermediate language will probably end up being something pretty familiar that leverages and/or combines familiar formal methods from model-checkers, logic, games, discrete simulations, graphs, UML, etc. Why? It's very hard to beat this stuff for compression, and this is what all the "context compaction" stuff is really groping towards anyway. See also the wisdom about "programming is theory building" and so on.

I think if/when something like that starts getting really useful you probably won't hear much about it, and there won't be a lot of talk about the success of hybrid-systems and LLMs+symbolics. Industry giants would have a huge vested interest in keeping the useful intermediate representation/languages a secret-sauce. Why? Well, they can pretend they are still doing something semi-magical with scale and sufficiently deep chain-of-thought and bill for extra tokens. That would tend to preserve the appearance of a big-data and big-computing moat for training and inference even if it is gradually drying up.

reply
jey
2 hours ago
[-]
This seems to be incorporated into current LLM generations already -- when code execution is enabled both GPT-5.x and Claude 4.x automatically seem to execute Python code to help with reasoning steps.
reply
axiom92
6 minutes ago
[-]
reply
fsfod
39 minutes ago
[-]
I remember seeing that GPT-5 had two python tools defined in its leaked prompt one them would hide the output from user visible chain of thought UI.
reply
Esophagus4
53 minutes ago
[-]
Same with CoT prompting.

If you compare the outputs of a CoT input vs a control input, the outputs will have the reasoning step either way for the current generation of models.

reply
logicprog
1 hour ago
[-]
Yeah, this is honestly one of the coolest developments of new models.
reply
jhart99
2 hours ago
[-]
Underlying paper is from 2022 and should be indicated in the title.
reply
axiom92
1 hour ago
[-]
And even before this work, there was "PAL: Program-aided Language Models" (https://arxiv.org/abs/2211.10435, https://reasonwithpal.com/).

Afaik PaLM (Google's OG big models) tried this trick, but it didn't work for them. I think it's because PaL used descriptive inline comments + meaningful variable names. Compare the following:

```python

# calculate the remaining apples

apples_left = apples_bought - apples_eaten

```

vs.

```python

x = y - z

```

We have ablations in https://arxiv.org/abs/2211.10435 showing that both are indeed useful (see "Crafting prompts for PAL").

reply
mgraczyk
1 hour ago
[-]
Anthropic recently added this to the API: https://www.anthropic.com/engineering/advanced-tool-use

See "Programmatic Tool Calling"

And there was an AI productivity startup called Lutra AI doing this, although they've since pivoted to some kind of MCP infra thing: https://lutra.ai/

reply
axiom92
6 minutes ago
[-]
reply
mgraczyk
4 minutes ago
[-]
That is different, it's a code interpreter where the model can run code and see the outputs. It's not a different way of doing tool calls
reply
mvkel
41 minutes ago
[-]
Worth noting: this paper was published three days before the release of GPT-3.5
reply
eric-burel
1 hour ago
[-]
I call that self-destructive prompting in the sense that you use AI to output programs that replace calling the AI in the future. The paper seems to indicate that this also brings much better results. However it's subject to attacks as running generated code is usually unsafe. A sandbox has to be used, major agentic AI players are providing some solutions, like Langchain sandbox released earlier this year.
reply