AI Engineer Europe 2026
Building a Chess Coach
Read the talk
Building a Chess Coach That Can Explain the Move
Take Take Take combines chess engines, tactical detectors, and language models to explain games, then uses player feedback to drive an agent-assisted improvement loop.
From a talk by Anant Dole and Asbjørn Steinskog
Before you start: Basic familiarity with chess moves and language-model prompting will help; the engine, detector, and agent mechanisms are explained as they appear.
Why is that knight move brilliant?
White’s knight moves from f3 to e5, capturing a pawn in a position leading to checkmate. The game review marks it brilliant. But the useful coaching starts below the board: why does the move work, what does it threaten, and which tactical or positional features make it special?
This is the opening example from Anant Dole and Asbjørn Steinskog’s production chess coach at Take Take Take, the company founded by Magnus Carlsen. Its iOS and Android app lets people play friends and post about their games. After a game, the review combines automatic move annotations with generated commentary. Detectors identify relevant chess features; the language model turns those findings into an explanation of the move.
The coaching extends beyond individual moves. Insights such as accuracy in different game phases, current rating, and depth of knowledge in an opening become another layer of analysis. The coach uses them to identify opportunities for learning, connecting what happened in a game to what the player could improve next.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
From searching moves to selecting lines
Chess has long exposed the difference between exploring possibilities and deciding which possibilities deserve attention. Claude Shannon’s Programming a Computer for Playing Chess—received in 1949 and published in March 1950—provides the historical starting point. Steinskog introduces Shannon as “the OG Claude” and uses his Type A and Type B strategies to frame the problem.
| Strategy | How it spends computation |
|---|---|
| Type A | Broadly searches possible moves to a limited depth |
| Type B | Selects promising moves and lines for further analysis |
In Steinskog’s account, early computing limits made selective search look essential: a machine could not simply explore the entire game tree.
As computers became faster, increasingly powerful search carried chess engines far beyond those early limits. The landmark was Deep Blue’s match victory over Kasparov in 1997, against the reigning world champion under standard tournament controls; its first individual game victory had come in 1996.
Steinskog then moves to AlphaGo, where neural networks helped select lines in Go’s much larger search space, and AlphaZero, which extended the approach across Go, chess, and shogi. The Type A/Type B distinction is a useful historical lens, rather than an exclusive classification of modern engines. Language models arrived with a different capability profile: they could produce plausible opening moves, yet lose track of the game and hallucinate as play continued.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Playing strength and explanatory ability are different
A clip of Magnus Carlsen commentating from the company’s Oslo office makes the limitation concrete. Grok chooses an early queen move to b6 in a poisoned-pawn line and subsequently loses badly. The commentary attributes the failure to its broader inability to play chess reliably, rather than simply to the opening choice.
The game came from Kaggle Game Arena, which evaluates models through gameplay. Its expansion to Werewolf adds a different challenge: models must navigate social deduction and deception. Chess, meanwhile, makes failures of sustained calculation particularly visible.
Reasoning models can work through moves to some extent, but Steinskog finds that their calculations still break down. That does not make the transformer architecture inherently unsuitable for chess. He describes a DeepMind transformer trained on millions of chess positions paired with Stockfish evaluations, learning chess evaluations instead of ordinary next-token language prediction, and reports grandmaster-level playing strength.
The crucial distinction is the training objective. A model trained to evaluate chess positions does not thereby acquire the ability to explain them in natural language. A language model that can discuss chess does not thereby become a reliable chess engine. The coach needs strong analysis and clear explanation, with an explicit boundary between them.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Give the language model the chess facts
The game-review pipeline starts by running Stockfish over the whole game. Its analysis supplies the reference for the best move in each position. But the best move alone is not enough context for a lesson: the player also needs to understand threats, plans, tactical possibilities, and alternatives to what they actually played.
The next stage extracts those features. Tactical detectors look for forks, pins, and skewers. Positional detectors capture structural themes, including potential weaknesses such as doubled pawns. This gives the generator chess concepts to explain, rather than requiring it to discover those concepts from the board on its own.
Maia, from University of Toronto research, contributes a different signal: what a human is likely to play. Given a rating—for example, an online rating of 1500—it predicts a probability distribution over moves in the position.
| Source | Question it answers |
|---|---|
| Stockfish | Which move is best according to engine analysis? |
| Tactical and positional detectors | What threats, patterns, and structural features matter? |
| Maia | Which moves are likely for a player at this rating? |
Combining these signals lets the team distinguish move quality from human difficulty. A move can be Stockfish’s best choice while receiving a low predicted probability from Maia at the player’s level. The coach can then treat it as a move that may be hard for that player to find.
All of this becomes context for the language model. Its assigned job is deliberately narrow: translate the supplied information into English. The team does not want it independently inventing tactical explanations or calculating additional lines. Hallucinations still occur, but the architecture makes the intended source of every explanation clear: analysis first, language generation second.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A bad move can still contain a threat
In a game Steinskog played, his opponent advances a pawn to f5. Stockfish marks the move as bad. That verdict is useful for grading the game, but it leaves the player with an immediate practical question: what is the opponent trying to do?
The detectors identify a threat to trap the queen, including a bishop move to g5. They also identify the response: capturing the central pawn defends a square the queen can use to escape. The resulting explanation can acknowledge the threat while showing why it does not work.
A compact JSON representation of those supplied facts makes the separation concrete:
json
{
"playedMove": "f5",
"engineVerdict": "bad move",
"threat": {
"goal": "trap the queen",
"continuation": "bishop to g5"
},
"response": {
"action": "capture the central pawn",
"effect": "defend an escape square for the queen"
}
}
The field names here illustrate a context contract. The important content is the causal connection: the pawn capture protects the queen’s escape route. That is what turns an engine’s bad-move label into coaching.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
From a downvote to a reviewed change
The improvement loop begins when a player downvotes commentary. The report goes to Slack and to a running Claude Code session through a Claude Code channel. Channels are described here as a research-preview mechanism: an MCP server injects external events into an active session. That mechanism gets the report to the coding agent; the team’s custom triage skill defines what the agent should do with it.
The investigation follows a repeatable procedure:
- Inspect the report. The commentary triage skill guides the agent through the position and the generated explanation.
- Change the relevant cause. The agent can adjust the prompt, modify a detector, or create a new detector.
- Regenerate commentary. Scripts let it run generation again with the proposed changes and inspect the result.
- Ask for guidance. Questions return through Slack, so Steinskog can help resolve chess judgments even while away from his desk.
- Submit for human review. When the result looks right, he asks for a pull request, reviews it in GitHub, and merges it.
The autonomous portion covers investigation and candidate changes. The described workflow retains human guidance and approval before those changes are merged.
The live demonstration starts with a deliberately weak report: the presenter opens the app on his phone and marks commentary as bad without first establishing that it is wrong. Slack receives the board position and the generated text. The same event reaches Claude Code, which invokes the triage skill and begins investigating.
The agent is running at high effort, so the presenters move on while it works. At this point, the visible result is a successful handoff into investigation, not a completed correction.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Move-by-move review needs a short wait
Post-game review has a different latency budget from background investigation. A player wants to step through moves and see what happened. An indefinite coach-thinking screen interrupts that interaction, even if the eventual answer is good.
The team targets under three seconds for generating coach feedback. Dole reports that Gemini 3 Flash typically delivers its first token in about one second, with average end-to-end latency of about three seconds in their application. Gemini 3 Flash therefore comes close to the interaction speed they want. These are application measurements; request sizes, routing, and reasoning settings are not specified.
Other reasoning models can produce useful analysis, but their completion times are less predictable. That makes them awkward for immediate move review. A planned chat-with-your-coach experience offers a different opportunity: users asking a question can reasonably expect to wait longer than users stepping through a finished game. The interface’s pace helps determine where additional reasoning is worth its cost in time.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Test the explanation against chess scenarios
Dole and Steinskog use their own chess calculation as the final quality check: they examine a position, work through how they would play, and compare that understanding with the generated response. Automated evaluations make those checks more repeatable.
The team uses 16 scenarios covering tactical patterns, blunders, and hallucination limits. The scenarios come from real games. A knight-fork case, for example, checks whether the model recognizes and mentions the tactic when given the context engine’s information. An LLM judge helps assess the responses. This evaluates whether the explanation uses the supplied chess facts, rather than merely whether it sounds fluent.
OpenRouter makes it easier to swap models as new releases arrive, including Gemini versions, GPT-5, and Claude models. The team compares output quality, then uses its own chess expertise to decide whether the result is actually good.
Dole reports these results for the team’s scenario suite:
| Model | Reported scenario result | Reported latency observation |
|---|---|---|
| Gemini Flash | About 75% pass rate | Baseline for game review |
| Claude with more thinking | Just under 60% pass rate | Much longer latency |
| GPT-5 Mini | Lower accuracy | No clear comparison established |
GPT-5 Mini is described as less accurate, but the spoken latency comparison is unclear. Exact model versions, Claude’s thinking configuration, judge settings, and repeated-run details are not supplied, so the table describes this team’s evaluation rather than a general model ranking. The remaining failures motivate continued testing as models change.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The difficult work is shaping the context
Separating the data pipeline from language generation gives the team a way to improve chess understanding without asking the generator to do everything. Closing the feedback loop with agents then makes problems in either prompts or detectors easier to investigate and iterate on.
The context itself takes sustained work. Dole describes starting with a large JSON file, then pruning it step by step while checking how output quality changes. A clear context model does not emerge simply by including everything the analysis pipeline can produce; it develops through repeated decisions about what helps the explanation.
Automated evaluations provide feedback during that process, but subject-matter experts remain necessary. In this team, the builders are also strong chess players. In another domain, the people qualified to judge an explanation may need to be partners rather than the engineers building the system.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The report does not require a fix
Before returning to the agent, the presenters invite attendees to play chess at the third-floor entrance around 3:45 PM, with QR signup or walk-up participation. They describe a simul in which one presenter plays four opponents on four boards, with extra time to walk between them. Winners receive wooden chess boards; if nobody wins, the two best players still receive sets. If everybody wins, they joke, they will have to buy more boards.
Back in the live session, the agent is still thinking, but it has posted an update saying it is investigating the position. Then it asks: “What specifically feels wrong about the commentary?”
The presenter admits that nothing is wrong and says the investigation will be closed. No completed fix or pull request appears in the demonstration. The useful result is the clarification itself: a downvote initiated an investigation, but it did not establish a defect. The loop leaves room for the agent to question the report before changing the system.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Shannon's March 1950 paper on evaluating positions and selecting moves in computer chess.
DeepMind explains AlphaZero's self-play training and evaluation across three board games.
The open-source UCI chess engine used for position analysis and move evaluation.
Current documentation for delivering external events into Claude Code through MCP servers and supporting replies.
Google's announcement of social-deduction and imperfect-information games for evaluating AI models.
Further reading
Research on learning chess action values from Stockfish annotations, including a search-free policy evaluated against humans on Lichess.
Code and inference examples for predicting human chess moves conditioned on player skill.
Read the complete timestamped transcript
- 0:00
[upbeat music] Afternoon, everyone.
- 0:16
So our next talk will be something a little bit different. We're gonna dive into the world of chess. Quick show of hands. Who has heard of Magnus Carlsen?
- 0:27
Okay, fantastic. No introduction needed, but widely considered the best chess player in the world. He also founded a company called Take Take Take. Uh, this is, uh, where myself, Anant, and my colleague Asbjørn, uh, currently work at, and we're gonna talk to you today about how we built our AI chess coach that now you can use and
- 0:47
is in production. So first up, quick agenda. We'll quickly discuss a bit more about Take Take Take, what it is we actually built, what it is we actually launched.
- 0:58
Uh, Asbjørn will then go into a quick history of chess and AI, a lot of links there. We'll briefly touch on why LLMs are actually bad at chess and how we managed to solve this problem.
- 1:08
We're then gonna deep dive into actually understanding our game review and sort of closing the loop with our autonomous agent, and you'll get a demo. And then finally, some latency versus quality trade-offs, as this is a consumer-focused AI application.
- 1:22
And then lastly, some learnings. So first up, what is Take Take Take? In its simplest form today, it's currently an iOS and Android application. You can go on and play your friends, and you can post about your games.
- 1:36
What's relevant for our particular talk is that after you play a game, you get presented with our game review, and this is powered by our, uh, AI pipeline. So for example, just showing you how it works, in this particular position, it's leading to a checkmate.
- 1:53
The last move that white has played has moved the knight from this yellow square over here on F3, captured the pawn on E5. It is a brilliant move, so automatically gets the brilliant sort of notation, and the commentary below is actually generated by our system, and we're using, uh, an LLM and the pipeline we'll get into in
- 2:11
a second. But what's quite interesting about it is we're able to give you the nuance of why it is a tactic, what detectors from a positional and tactical sense have fired, what are the threats you're trying to do, and actually explain sort of the why behind the move.
- 2:27
So that's the system we're gonna be talking about today.
- 2:31
Finally, on the last of the step of our, of our application, we've started revealing, uh, insights about your play, and this could be things like how accurate you played in a particular game phase, maybe your current rating or your current depth in a particular opening.
- 2:46
And these insights form the next layer of, uh, analysis that we present to the coach, who then gives them back to you as opportunities for learning and improving. We hope by using this, you'll be able to improve and become better at the game.
- 3:00
All right. So first, a brief history of chess and AI, since they've been intertwined for so long, just to give you a little bit of cr- uh, backstory. 1949, Claude Shannon, the OG Claude, wrote the, the paper, Programming a Computer to Play Chess, and here he envisioned that, or he proposed that there, there are two types of,
- 3:19
of, uh, chess engines, Type A and Type B. Uh, Type A were these brute force engines that searched through all possible, uh, possible moves and figure out the best move, while Type B were those who we know from, uh, from 2017 and, and onward that can selectively le- uh, pick out the, the best moves.
- 3:40
Uh, back then, he assumed that we would need Type B computers, uh, to, to play chess because, uh, computers were so weak back then. You couldn't search through the whole, whole tree of, of moves.
- 3:51
But computers quickly became better, and uh, people just started scaling these Type A computers. Uh, they got better and better until they, in 1997, Deep Blue versus Kasparov, uh, the first time, uh, a chess engine beat the best chess player at the time.
- 4:09
Uh, so people didn't really bother about these Type P co- uh, B computers for a while, these, uh, intuitive, uh, engines, until DeepMind, shout out to DeepMind, uh, released first AlphaGo, because Go is a much more complex game than chess.
- 4:26
So you, you can't solve this with these Type A computers. You would need this intuitive approach, neural network approach that actually selectively, uh, figure out which lines to, to calculate.
- 4:35
Uh, but after that, they released AlphaZero, who could play not only Go, but also chess and, and Shogi. Uh, and some y- some years later, uh, LLMs came, and people started playing chess against the LLMs, and quickly turned out that they can't really play chess.
- 4:52
Uh, sometimes they, they make some right moves and they, they can, to an extent, uh, play, play a nice opening, but they quickly start to hallucinate.
- 5:03
So let's see if we can show that. Yeah. There's a video of-
- 5:09
Grok went for the poisoned pawn line with queen B6 early on and lost pretty badly, not necessarily be- because of the opening, but because it does not really know how to play chess.
- 5:22
There, that was Magnus Carlsen commentating a LLM chess tournament from our office in, in Oslo. Um, that was a tournament organized by Kaggle, uh, l- when they launched their game arena, which was a benchmark for benchmarking LLMs, uh, when playing different types of games.
- 5:42
One of them was chess, and now they've started to, to add, uh, more games. Also added Werewolf recently, where you can watch LLMs try to deceive each other in, in social deduction games, which is-- I can recommend [chuckles] watching But yeah, uh, we see that LLMs, uh, often, uh, hallucinate, uh, because obviously they train on language.
- 6:03
They're not-- They can't calculate. Uh, they can't re-- Like, high reasoning models can, to an extent, calculate through the reasoning steps where they can actually play out moves, but they quickly, uh, f- uh, fall apart.
- 6:16
Um, but there's nothing inherently wrong about the architecture of the, like, the transformer architectures to play chess. DeepMind has trained, uh, a transformer to, instead of predicting the next token, they predict the evaluation based on a chess position where they've trained it on millions of, uh, chess positions to, uh, Stockfish evaluations pair.
- 6:37
And that has actually led the transformer to, to play at a, uh, grandmaster level strength. But these aren't trained on language, so these can't explain chess. So how do we, uh, bridge the gap between these old chess computers that can understand and play really good chess, uh, between the LLMs that can explain chess?
- 7:00
So we're gonna go through our pipeline of how our game review, uh, explain chess in our app. When you play a game, the first thing we do is we run Stockfish through the whole game.
- 7:11
Stockfish is the leading chess engine now. Um, that's like a classical chess engine that, that, uh, calculates the best move. So it's what Stockfish says is considered to be the solution in the, in the chess position.
- 7:26
We then extract a lot of, uh, context in the position 'cause we want to explain not only the best move, we want to explain the threats, the plans, um, the tactics that could, could arise in the position, what you should have played.
- 7:41
A lot of these, uh, nuances that is useful when if you wanna learn how to become better at chess. Um, so we have a lot of detectors that tries to figure out all, all of this, the forks, pins, skewers, uh, positional structural themes.
- 7:58
Uh, doubled pawns, for example, is a disadvantage, so we need to be aware of all of those, uh, kind of things. And there's also a new novel chess engine called Maia, uh, which is behind a research project by the University of Toronto, uh, where instead of building a chess engine that is trained to play the best, they've
- 8:20
trained a chess engine. Uh, it's a neural network that predicts the moves that humans would play in certain positions. So given a rating, for example, an online rating of fifteen hundred, it outputs the probability distribution over all the moves in the position.
- 8:35
And by doing this, we, we could actually say that a move is, a move is really-- it's, it's the best move. We know that because of Stockfish, but we also know it's really hard to find that move because the probability of playing it at certain levels are, uh, are so low.
- 8:50
And all of this information, we feed that to the, uh, LLM, and that-- the LLMs-- For now, the LLM's job is only to translate the info-information, uh, into English, because we really don't want it to try to figure out too much on its own, because it quickly lead to hallucination.
- 9:07
It still does, but we want everything to be grounded in the information that we, uh, give it. And that could result into a comment like this. If you play chess, uh, or know, know about chess, this is a game that I played.
- 9:19
My opponent played F5 here, uh, which is a bad move. So by using Stockfish, you could see that you get, like, a bad move, uh, indicator. Um, but that's not so useful to just know it's a bad move.
- 9:30
So we are running our detectors to figure out that, okay, F5 is threatening to trap my queen. You can also see it draws a, a line with bishop G5.
- 9:39
But you can also say, while it threatens to, to, to trap the queen, I can just capture the pawn in the middle because that's defense this square, so that my queen can get out of the situation.
- 9:53
Mm. So that's how we, uh, get to that, uh, situation. Now I'm gonna explain a bit on how we improve our, uh, our game review using agents. We have a-- We have closed the loop from user feedback to the product request, essentially, with humans in the, in the loop.
- 10:15
But, uh, what happens when users downloads a commentary in your app, because you can download it if you think it's, it's bad, it posts it to Slack, but it also sends it to a Claude Code channel.
- 10:27
Channel is a new feature in the research preview that is essentially an MCP server that can in-inject events into a running Claude Code session, so kind of like OpenClau, if you use that.
- 10:38
So you have this continuously running channel, and you can inject events to it. So-- And then, uh, Claude Code starts working or on the, on the commentary. It gets all the information.
- 10:50
It runs a commentary triage skill that we created that outlines its process, how it should go about to investigate what's going-- what's wrong in a position. Uh, it has some scripts to actually run the generation, so it can modify, for example, the prompt.
- 11:07
It could change some of the detectors, create some new detectors, and then it can generate the, uh, commentary again, given this new information, and verify its own work. And then it will also ask questions back to Slack so that I could be on the bus and I could get a message from Claude, who is working on this
- 11:23
problem, where it will ask me if this seems right, and I can guide it. Uh, and if it, if it looks right, I'll just tell it to submit the PR, and I open GitHub on my mobile [chuckles] uh, walk- walks through and, and merge it.
- 11:36
Uh, I'm gonna show how this works by, uh... So we have a running Claude Code, uh, Cl- channel here. Here is the chat, the, the Slack channel, where the commentary appears.
- 11:51
This is just me having tested a bunch of time. I'm gonna open up the app on my phone, go to, uh, comment,
- 12:01
and report it as, as bad
- 12:06
Now we see it posts a, uh, a comment. We can see the position, the commentary that was generated is there. Now, I haven't really looked at the commentary, so it could be it's, it's, it's probably, it's probably good.
- 12:20
Uh, but we can also see that it injects it to the Claude channel, who invokes the commentary triage skill and starts working. Now, this is now running on high effort, so this could take a while.
- 12:31
So I'm thinking we should just go, uh, to the next slide, and then we could get back to it to see if it is- [coughs] ... something is happening.
- 12:39
Uh, fantastic. So we'll come back to that, uh, in a few seconds. So as we built this for, you know, end users, we had to really kind of consider this trade-off between latency versus quality.
- 12:49
So typically, when you finish a chess game, you wanna get the analysis and the results pretty quick. You wanna cycle through the moves kind of one by one. So we really couldn't show you, like, a coach's thinking screen, you know, indefinitely while reasoning tokens are kind of running in the background as an example.
- 13:03
So we, we had to get this done, which felt almost instant. In AI world, that's a few seconds at, at best. So we- we're aiming for sub three seconds to generate our coach, uh, sort of feedback.
- 13:15
How do we do this? We use Gemini 3 Flash. Time to first token is typically being about a second. End-to-end latency on average is about three seconds, which kind of meets our criteria.
- 13:25
We have experimented with other reasoning, uh, models, and we'll get into that on the, on the next slide. The analysis is not incorrect, so the quality is, is definitely good, but the, the challenge is it's unpredictable as to how long it's gonna take to finish.
- 13:38
So we have a new set of features kind of planned for a more, you know, chat with your coach type experience, where we can kind of expect the user to be more patient and, and wait for a response rather than in this sort of phase where it needs to be more instantaneous.
- 13:52
The, the last thing about quality is, uh, Asbjørn and I are both are good chess players, so we ultimately kind of have the final say is when we look at a position to actually use how we would calculate and how we would play and compare it to the LLM's response.
- 14:05
This allows us to actually evaluate whether it's doing the right thing or not. So if we talk about evals in more, in more detail, like I said, Gemini Flash is kind of our, our benchmark, but we have multiple chess scenarios.
- 14:17
Currently, we have 16 different scenarios that we created. These are around themes like tactical patterns, blunders, and sort of limiting hallucination. So as an example, you know, there might be a knight fork on the particular chess position, and we're trying to assert that can the LLM actually understand and mention this when we run it through with our
- 14:36
sort of context engine. And how do we do this? We extract scenarios from real games. We use LLM as a judge, very powerful sort of technique to, to test.
- 14:44
We then run the model, uh, in OpenRadar. OpenRadar's come in handy because new models are being released, you know, so fast, so frequently. We just wanna be able to quickly swap in and swap out maybe a new version of, say, Gemini.
- 14:57
We wanna check, you know, check out the latest GPT-5 model or one of the Claude models. So we'll then compare and, and see sort of the quality, ultimately relying on our own skill to detect whether this is good or, or bad.
- 15:10
And as a sort of final point on this, we, we ran our three models, Gemini, Claude, and, and GPT-5, and, you know, typically, uh, Gemini Flash is about 75%.
- 15:19
It still doesn't pass all the, the scenarios we've set it, so we're always kind of seeing if a new model will actually exceed some of the, the tricky cases we've set up.
- 15:27
Um, Claude on more thinking gets us to about just under 60%, but the latency is much longer. GPT-5 Mini given us a smaller sort of model, lower latency, or the slower latency, but lower accuracy as well.
- 15:39
So we kind of continuously run through these to, to update.
- 15:43
Last thing on sort of our, our learnings and how this can sort of apply to, to your world sitting in front of us. Number one, you know, really important to separate that sort of data pipeline, uh, from the language generation.
- 15:53
Uh, LLMs can do a lot of different things, but if you need, you know, high latency or quick latency, it's a good sort of technique. Really try to close the loop with autonomous agents.
- 16:01
Kind of the flow that Asbjørn showed is now very common and very powerful and really allows you to iterate quickly. Uh, always try to build a very, a clear sort of context extraction model.
- 16:11
This, uh, unfortunately in the beginning is a very slow, sort of painful process. It's a large, you know, ultimately JSON file. It just keeps sort of starting big, and you start to prune step by step, and you see how quality improves over time.
- 16:22
Automated evals really do help, and I, I hope in your domains you also have a set of, you know, SMEs that you can help rely on to evaluate the output.
- 16:30
And sometimes that's not necessarily the person actually building it. Could be someone else who is a domain expert. So remember to sort of partner if needed.
- 16:38
The last thing, just on the, on a fun sort of note before we go back to the, the output of the, uh, the sort of coding agent, uh, we do have some chess sets on the, the third floor at the entrance you may have seen.
- 16:49
We're gonna host, uh, a chess simul, uh, today in the afternoon around 3:45 PM. A chess simul, for those who are unfamiliar, is when, uh, one person, in this case me or Asbjørn, uh, plays multiple people at the same time.
- 17:01
So we have four chess sets. We will play four people at the same time. Uh, we'll have a slightly more time for us 'cause we have to walk around to play multiple boards.
- 17:09
If you happen to play and you happen to win, you will get one of the wooden chess boards at the end of the event. They're very, uh, nice, high quality chess sets.
- 17:16
Uh, if no one wins, we will still determine who the two best players are, and we will still give you, uh, a set.
- 17:22
And if everyone wins, we need to buy more boards.
- 17:24
More sets.
- 17:24
So let's- [laughs]
- 17:25
Hopefully not everyone wins. Uh, there's a QR code if you wanna sign up or you just stop by at 3:45, uh, you're welcome to, to do that. And then, uh, yeah.
- 17:33
Yeah.
- 17:34
Close it off.
- 17:34
Let's go back to see if, uh, what has been happening here. Oh, we see it's still thinking. It has, it has actually added a comment. "Looking into this now.
- 17:42
Investigating the position. Quick question. What specifically feels wrong about the commentary?" Yeah, that's-- It got me there. It's, "There's nothing wrong." You're, you're absolutely right. [laughs] Nothing wrong.
- 17:54
So yeah, it's [laughs] now it's gonna close this off 'cause, yeah, it, it worked well. [laughs]
- 18:01
Fantastic. Well, thank you so much and happy to take any questions. [clapping] [upbeat music]