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.
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.
People build reasoning engines from it, in the same way they do with Python and LISPs.
>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
using it in chat, it doesnt feel that different