| ▲ | brotchie 3 hours ago | ||||||||||||||||||||||||||||||||||||||||
I'm still on the fence about agent frameworks, they have their place, and it depends on the nature of the agent: e.g. "Low latency, return a good enough response in 3 seconds, vs. working for 3 hours on a problem." BUT, if you boil it down, an agent really is context building, making an LLM call, executing requested tool calls, parsing the final model output, returning it to some frontend. There's extensions like memory, async tool calls, etc, but not THAT complicated from a traditional software engineering perspective. Everyone seems to want to build their agent framework. But if you're tasked with building an agent, I've found it much easier and more maintainable to just build 1:1 code for THAT agent: most of the abstractions you get from an agent framework purely get in the way and obfuscate core agent logic. You end up being forced to use the abstractions chosen by the agent framework, which sometimes are a mismatch for what you're actually trying to do. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | dd8601fn 2 minutes ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||
I’ve said something similar about dozens of frontend frameworks. It’s massive abstraction and convolution for some future payoff that’s obviously never going to happen. But sometimes people just need something to do, or something fun to play with, and “the next guy” rarely matters that much… so who cares that you’ve saddled them with the result of your paid playtime? | |||||||||||||||||||||||||||||||||||||||||
| ▲ | peterbell_nyc 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
For me the heart of an agentic system is NOT using agents (except when you really have to). Components of a working system include: - Pipelines/recipes to describe multi-step flows (deterministic, agentic and HiTL steps), loops, conditionals, exit-on's for max loop iteractions, etc - The logistics to actually run the model and HiTL steps reliably across multiple agent worker pools - Management and delivery (and security/governance and permissioning) of thick skills with code to do as much as possible - Context management so the right agents have the right context for the right sessions at the right time - Project management - ability to store and access tickets, dependencies, track progress, restart stuck ticket claims, etc - Transcript saving, memory features and dreaming/compounding capabilities so the agents continue to learn from each session - o11y for understanding whats happening, tracking costs and usages, etc - Evals and auto-tuning of prompts so you can go cross model provider and also lock to a model version so you can do an ROI on each model version upgrade - Sandboxes for running the actual model sessions Don't need to get it all from one vendor, but that feels to me like the toolkit and for most use cases I'd argue: - Don't limit yourself to a single model provider (anthropic, openai, etc) - Own your context - Own your compounding | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | kristjansson 3 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Obscuring core logic is the most egregious part of most agent frameworks. One needs a clear view of what, exactly, is being sent to the underlying language model, and what's coming back. Everything in an 'agentic' application is realized as a sequence of tokens or a call to a provider eventually. It should be clear and obvious from ~all layers of the app what that's going to look like. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | toddmorey 17 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Anthropic seems to agree with you as more recent Claude updates have it just building task specific harnesses as needed. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | freakynit an hour ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Yep.. same. I build my own agents... all use-case specific. Keeps the code super minimal, and avoid unnecessary complexity. I have tried a few of these, but nop.. no help.. only more work (and issues). | |||||||||||||||||||||||||||||||||||||||||
| ▲ | fxwin an hour ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
The advantage of frameworks isn't that they make it easier to write the actual agent, it's tooling + observability + ... Even Langchain, for all the (deserved) criticism it gets made this very clear very early: It might be easy/easier to write your own chatbot from the ground up, but what happens if you have to add observability/tracing? Being able to just add one environment variable and instantly have a UI where i can nicely go through all of my traces with basically 0 additional effort is something a hand rolled solution just can't really compete with | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | mbreese 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
I'm somewhat in agreement. I like building 1:1 code for that specific agent. Where I'm starting to question this is maintainability. When I come up with a new technique or way of doing something in my new agent, how can I update an older agent. Do I want to update the older agent? But, I get what you're talking about w.r.t. building for the exact problem at hand. For example, I'm guessing that Apache Burr has support for a plugin-able vector RAG system (or at least it will if it doesn't now). That's great, but I want my RAG system to add documents to the context and keep them as part of an updated system prompt with some very specific tweaks that happen as part of that process. This is a bespoke way of working with an existing concept (RAG) that doesn't lend itself to using any specific framework. In my use-case, bespoke is the way to go. But then I'm still stuck with having to make engineering choices for updating older agents. So, I see your point. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | pianopatrick 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
I like to think of it as "AI prompting algorithms". Like instead of just this prompt gets this result it's A prompt then B prompt the C prompt gets a result. And just like when people were trying to figure out which sorting algorithm made the most sense, we are all just trying to figure out which prompt algorithms with which models lead to good results. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | elijahbenizzy 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Right I think this is why we made it unopinioated to a fault. Burr doesn't really do these things rather it just provides an orchestration framework. So it's pure BYO functions, classes, components, etc... | |||||||||||||||||||||||||||||||||||||||||
| ▲ | hilariously 3 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Couldn't agree more - tried to convince a business that doubling down on OpenClaw wasn't going to solve problems except for some 0-1 stuff, and that almost immediately they'd run into roadblocks because most of the product wouldn't serve their use case. 4 months of mostly spinning their wheels later they launched a really lackluster OC product that's effectively DOA. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | krawczstef 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
yep - here's something cool an end user wrote with Burr - https://github.com/msradam/phoebe Burr just helps you, the engineer, to really control the primitives. Then adds some cool features you don't have to think about -- like observability :) | |||||||||||||||||||||||||||||||||||||||||
| ▲ | vanuatu 3 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
my job rn is just building agents the hard part about building agents isnt the framework it's discovery, context, traditional engineering, handling the last mile there are some invariants like the loop, tools, observability, guardrails, monitors etc... | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | trollbridge 3 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
It’s painfully obvious that you can just open your coding harness and… tell it you’d like to make an agent. They’re simple to write. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | bko 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Take a simple workflow. You have a query it goes to a classifier. The classifier determines what workflow it should route the request to. Then you have a general workflow that has a set of skills (prompts) and tools. And that could be recursive. So if you do something like "rename this file" you have to build up a workflow like: [classifier] what's the workflow -> rename [rename workflow] list files (tool call) figure out relevant predicate (LLM) convert predicate into a filter query give the context of the files (LLM) figure out what you want the new name to be (LLM) create the request body and hit the tool approval workflow formatting It's a lot to manage and orchestrate and that's just one simple example. You'd like want to use the same building blocks to delete a file or move it. Even to know the right concepts is difficult as we're a bit deluded on whats going on in the background of these modern AI apps like Claude and GPT that do a lot of this stuff for you | |||||||||||||||||||||||||||||||||||||||||
| ▲ | agentifysh an hour ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
100% this you dont need a framework | |||||||||||||||||||||||||||||||||||||||||
| ▲ | cyanydeez 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Agents are a way to de-bloat the context. The way LLMs function, you absolutely need to find the sweet spot for a given task, and if the primary LLM has to go through a bunch of failures to find a working function, those failures are better contained in an agent and disposed of. Obviously, you could have a different LLM like a "angel" that prunes a primary agent of the context it doesn't need, but I think the realistic KV cache problem is will determine the optimal structure: you want the work do be done in the most efficience KV cache (context-reuse) as much as possible. There's definitely more to it than just spawning agents. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | aplomb1026 an hour ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||
[flagged] | |||||||||||||||||||||||||||||||||||||||||