@HamelHusain curious: is the increased token usage happening on a unique task/project you were previously spending less tokens on or this just opened up exploring more tasks/projects at the same time?
I think in the end it makes sense: TUI makes it look fast and โcloseโ to the action. In the end all the bash the agent executes always happened there in terminal. Itโs natural.
Moving to the app makes it feel bland and lifeless. Itโs not where we expect the agent to work using CLIs.
I believe the app move will make more sense when the app feels like the natural place to be in.
After reading @robzolkos write-up I got very interested in what was defined as "anemic" code in some of the commits, and decided to generate a specific gist to visualize that. Love how codebase like this can turn into a very interesting learning exercise.
https://t.co/2ZZThjCIgu
@robzolkos@37signals Thank you for doing this! You actually inpired me to dive further into the "anemic" code concept and I generated this to read during the weekend:
https://t.co/LGFcgX9NUe
One of this yearโs best learning decisions has been:
Using my 30 min lunch breaks to read a (full or partial) chapter of @ramalhoorg Fluent Python book
Suddenly, with all AI available, it makes more sense to know what is really good use of the language
Spent the last few days converting all the agents Iโm working on to be ACP-compatible, ๐ฎ๐ป๐ฑ ๐ถ๐โ๐ ๐ฏ๐ฒ๐ฒ๐ป ๐๐๐ฝ๐ฒ๐ฟ ๏ฟฝ๏ฟฝ๐ผ๐ฟ๐๐ต ๐ถ๐! Definitely an interesting tool to test and get a live feel for agent workflows locally - going to use this more.
The main motivators for me to try this approach arise from production challenges like:
- Increase inference efficiency for multi-step tasks
- Create context windows that allow the agent to focus on a very specific part of the process
- Enable flexibility to craft specific workflows for isolated parts of a multi-step task
- Leverage async environments to create more dynamic exchanges between agents
I really like the idea of the REPL more than anything. There are some challenges with this approach though. I have tested the code base you shared last week and wrote some of my observations here :
https://t.co/bPT2mvgrkf
Looking forward to your further improvements and releases on this idea
In the midst of so much informationโnew models, post-training strategies (read: RL), and othersโI found myself very excited when I first read the blog post about the RLM (https://t.co/I0LCAwwaTE) approach. The reason is simple: inference strategies are mostly overlooked and non-sexy in terms of discussion, yet very present in AI engineering day-to-day (Chain of Thought, ReAct, etc.).
For most practitioners out there, at this point context engineering is not just jargon anymore, and everyone is taking context rot (https://t.co/28p8j3CjGw) somewhat seriously (if you are not, you should!). Keeping the context controlled and relevant is definitely one of the main engineering tasks when building performant agents. For this reason, strategies at inference time are something I really look forward to whenever something different shows up in the wildโand thatโs the case for RLM.
Iโll be very straight to the point here: from the many things discussed in the RLM blog post and idea, for me the one that is most interesting is having the REPL as the main environment for agent actions.
I tried it myself over the last week, and I want to share below some of the things I found.
> The good, and the not-so-good
The thoughts logged here came from interacting with the repo published by the authors, to which I only added LiteLLM and enabled some async operations for my own use cases (https://t.co/NYSTbRlrHD).
>> The good
Quoting from the authors:
โThe natural solution is something along the lines of, โwell maybe if I split the context into two model calls, then combine them in a third model call, Iโd avoid this degradation issueโ. We take this intuition as the basis for a recursive language model.โ
From this, there are two obvious things the RLM approach enables:
- Dealing with context rot (by outsourcing a lot of the info to the REPL).
- Helping with very large context (letting the LLM use native programming-language resources to parse and break down the understanding as variables).
There are a few things that are not so obvious from the above, but are enabled by the REPL environment idea:
- It enables the model to think and spend tokens mostly on codingโwhich we already know these models do somewhat well (or well enough for the tasks we assign them).
- (The most interesting to me) it enables the model to create its own tools on the fly.
From the blog post, and from my own interactions, itโs clear to see an interesting pattern:
LLMs try to get ahead in the REPL, running many commands at once, which to me seemed like an interesting way to compress information gathering, making it more efficient and rich.
As I said, the REPL idea is something I really found interesting, but from the tests, the positives above can kind of backfireโฆ
>> The bad
This is only my opinion after a week of a few interactions with this idea, mostly for a coding task: generating data visualizations.
- LLMs doing more coding: with the REPL, most of the LLM interactions involve coding responses that will be parsed and executed. If youโve used LLMs for coding tasks, you know errors happen quite oftenโwhich isnโt different here, which leads toโฆ
- REPL management: as you start getting errors, dealing with the REPL starts getting somewhat complex. Depending on the error location, you could have some variables from the proposed code added to the REPL, but further lines that didnโt execute might not be, and Iโve seen this confuse LLMs quite a bit. I believe you could prompt/RL this out and/or improve context management for REPL information, but instead of feeling like this makes context gathering go fast, when it goes wrong, it actually gets very slowโand annoying.
- Tool-creation automation: this one sounds very attractive, but I have the feeling it might not play out well in production agents. The reason is simple: for tasks that are well-defined/scoped, you tend to see consolidation in how the task is performed, which means youโll have at least one well-defined tool that helps the LLM achieve good results most of the time. If youโre not adding these functions to the REPL globalsโand, as a consequence, to the promptsโyouโll be relying on the randomness of the model to create these tools from scratch every time.
> Conclusion
The verdict is that I find the REPL idea very interesting, and Iโll definitely follow more closely other people doing work with this going forward. For now, it doesnโt seem like a clear replacement for the normal ways (read: for-loops and context management in templated prompts).
From my tests so far, the frustrations with code execution and handling the REPL are not trivial to overcome. On the same note, dealing with code suggests you might be better off with handcrafted functionsโwhich puts you back into the traditional tool loop all over again.