https://github.com/kagisearch/llm-chess-puzzles?tab=readme-o...
https://github.com/kagisearch/llm-chess-puzzles?tab=readme-o...
Some have been able to achieve greater elo with a different prompt based on the pgn format.
gpt-3.5-turbo-instruct was able to reach an elo of ~1750.
People build reasoning engines from it, in the same way they do with Python and LISPs.
What I can say is, I think there’s a very important disagreement here and it divides nerds into two camps. The first think LLMs can reason, the second don’t.
It’s very important to resolve this debate, because if the former are correct then we are likely very close to AGI historically speaking (<10 years). If not, then this is just a stepwise improvement and we will now plateaux until the next level of sophistication of model or computer power etc is achieved.
I think a lot of very smart people are in the second camp. But they are biased by their overestimation of human cognition. And that bias might be causing them to misjudge the most important innovation in history. An innovation that will certainly be more impactful than the steam engine and may be more dangerous than the atomic bomb.
We should really resolve this argument asap so we can all either breathe a sigh of relief or start taking the situation very very seriously.
What we need is a LLM that will iterate over its output until it feels that it's correct. Right now LLM output is like random thought in my mind. Which might be true or not. Before writing forum post I'd think it twice. And may be I'll rewrite the post before submitting it. And when I'm solving a complex problem, it might take weeks and thousands of iterations. Even reading math proof might take a lot of effort. LLM should learn to do it. I think that's the key to imitating human intelligence.
So from the model's perspective, we have at the same time display of both brilliancy (most 1700 chess players would not be able to solve as many puzzles by looking just at the FEN notation) and on the other side complete lack of any understanding of what is it trying to do from a fundamental, human-reasoning level.
>CEO & founder of Kagi
Important context for anyone like me who was wondering where the boldness of the first statement was coming from.
Edit: looks like the parent has been edited to remove the claim I was responding to.
Much faster for sure but I have also not had anything give an error in python with jupyter. Usually you could only stray so far with more obscure python libraries before it starts producing errors.
That much better than 4 in chess is pretty shocking in a great way.
I tried playing against the model, it didn't do well in terms of blocking my win.
However it feels like it might be possible to make it try to think ahead in terms of making sure that all the threats are blocked by prompting well.
Maybe that could lead to somewhere, where it will explain its reasoning first?
This prompt worked for me to get it to block after I put 3 in the 4th column. It otherwise didn't
Let's play connect 4. Before your move, explain your strategy concisely. Explain what you must do to make sure that I don't win in the next step, as well as explain what your best strategy would be. Then finally output the column you wish to drop. There are 7 columns.
Always respond with JSON of the following format:
type Response ={
am_i_forced_to_block: boolean;
other_considerations: string[];
explanation_for_the_move: string;
column_number: number;
}I start with 4.
Edit:
So it went
Me: 4
It: 3
Me: 4
It: 3
Me: 4
It: 4 - Successful block
Me: 5
It: 3
Me: 6 - Intentionally, to see if it will win by putting another 3.
It: 2 -- So here it failed, I will try to tweak the prompt to add more instructions.
me: 4
[{ "who": "you", "column": 4 },
{ "who": "me", "column": 3 },
{ "who": "you", "column": 4 },
{ "who": "me", "column": 2 },
{ "who": "you", "column": 4 },
{ "who": "me", "column": 4 },
{ "who": "you", "column": 5 },
{ "who": "me", "column": 6 },
{ "who": "you", "column": 5 },
{ "who": "me", "column": 1 },
{ "who": "you", "column": 5 },
{ "who": "me", "column": 5 },
{ "who": "you", "column": 3 }]
Where "me" was AI and "you" was I.It did block twice though.
My final prompt I tested with right now was:
Let's play connect 4. Before your move, explain your strategy concisely. Explain what you must do to make sure that I don't win in the next step, as well as explain what your best strategy would be. Then finally output the column you wish to drop. There are 7 columns. Always respond with JSON of the following format:
type Response ={
move_history: { who: string; column: number; }[]
am_i_forced_to_block: boolean;
do_i_have_winning_move: boolean; other_considerations: string[];
explanation_for_the_move: string;column_number: number; }
I start with 4.
ONLY OUTPUT JSON
Edit:
Just tried and it didn't seem to follow the image state at all.
Lets play tic tac toe. Try hard to win (note that this is a solved game). I will upload images of a piece of paper with the state of the game after each move. You will go first and will play as X. Play by choosing cells with a number 1-9; the cells are in row-major order. I will then draw your move, and my move as O, before sending you the board state as an image. You will respond with another move. You may think out loud to help you play. Note if your move will give you a win. Go.
It failed pretty miserably. First move it played was cell 1, which I think is pretty egregious given that I specified that the game is solved and that the center cell is the best choice (and it isn't like ttt is an obscure game). It played valid moves for the next couple of turns but then missed an opportunity to block me. After I uploaded the image showing my win it tried to keep playing by placing an X over one of my plays and claiming it won in column 1 (it would've won in column 3 if its play had been valid).
> we wanted to verify whether the model is actually capable of reasoning by building a simulation for a much simpler game - Connect 4 (see 'llmc4.py'). > When asked to play Connect 4, all LLMs fail to do so, even at most basic level. This should not be the case, as the rules of the game are simpler and widely available.
My assumption is that chatgpt can play chess because it has studied the games rather than just reading the rules.
using it in chat, it doesnt feel that different