2 ms·
definitely serve different purposes, I basically think abstracting away the flows (agency/langchain) is the wrong layer of abstraction, and that it's more usefu
by huac 3y ago
definitely serve different purposes, I basically think abstracting away the flows (agency/langchain) is the wrong layer of abstraction, and that it's more useful to abstract away certain problems to solve (eg vector retrieval) or useful patterns (eg function dispatch). another comment mentioned that langchain had hardcoded prompts, which make it difficult to experiment and iterate (easier today, perhaps, when I first used it, it was certainly a mess). where is the complexity hidden?
imo using someone else's abstractions for your entire workflow is a nice way of making a hackathon project, but a terrible way to build a full product.
- emil14 3y ago> Using someone else's abstractions for your entire workflow is a nice way of making a hackathon project We use someone else's abstractions all the time, when they are good :) Think of reactjs, expressjs, django, etc. > Abstracting away the flows (agency/langchain) is the wrong layer of abstraction But you do abstract away SQL when you write business logic isn't it? Many people uses ORMs for that, which gives ability to easily switch databases and write tests. Why do you think this isn't the same? > langchain had hardcoded prompts, which make it difficult to experiment and iterate Agency does not and won't have anything like that except it's going to make a LOT of sense. Even then there 100% will be to control that stuff. > Where is the complexity hidden? The biggest complexity was to design the library to be small, simple and extensible. It's not a lot of abstractions out there. But the better answer to your question is probably something like - "complexity is hidden behind how providers implement core interfaces"
- huac 3y agoyeah, I just think it's a question of picking the right set of things to abstract away (and we're all figuring out what set that should be). I chose to not add much abstraction over the go-openai library to support maximum customizability, and better support as openai adds functionality. I think the custom abstractions (eg Message, Operation, etc) are helpful iff you add additional non-openai providers. fwiw I really like agency's interceptor funcs, good place to add tracing, metrics, logging, etc.
- emil14 3y ago> you add additional non-openai providers. 100% will do, just not for the initial release > fwiw I really like agency's interceptor funcs, good place to add tracing, metrics, logging, etc. thank u much, glad to hear it :)