Over the course of my career, I worked with a wide array of technologies. My philosophy is simple: learn whatever technology is required to get the job done. I firmly believe that nothing beats on-the-job learning. With over 20 years of experience, I've consistently demonstrated the ability to quickly learn and master new tools. This adaptability is not just a skill — it's a cornerstone of my professional approach and a valuable asset for any team. To see the foundation of this adaptability and where it all began, I invite you to explore my education.
I initially implemented a system using LlamaIndex with OpenAI. However, I soon discovered that the framework's rigid design made it difficult to introduce changes without delving deeply into its internals. This rigidity isn't unique to LlamaIndex but is a common trait across similar frameworks like LangChain, CrewAI, and Autogen. Ultimately, I decided to remove LlamaIndex and rebuild the entire system (RevAssist) manually.
While these frameworks provide useful abstractions for quickly getting started, they often become restrictive when more complex or customized changes are needed. For example, I found LlamaIndex's agent services unnecessary. Agentic calls can be managed more simply and effectively using async-await. For scenarios where multiple agents need to run concurrently and synchronize, Promise.all at key synchronization points works seamlessly.
As for scenarios requiring agents to operate on separate hardware and sync over a network, such cases might exist in theory, but I haven't encountered them in practice. For most use cases, the additional abstraction these frameworks introduce often outweighs their benefits in the long run.
When it comes to large language models (LLMs), I have a strong preference for OpenAI, primarily because they are the only provider offering support for structured schema outputs. While it’s possible to approximate this with function calls, OpenAI’s approach simplifies the process significantly. Their performance is generally reliable, though there are peak times when response times slow down considerably.
In terms of intelligence, I believe Anthropic stands out as one of the best LLMs available. Meanwhile, Gemini’s large context size can be a crucial advantage, depending on the requirements of the project.
Although I haven’t personally executed Python-based inference or fine-tuning on open-source models like Meta's Llama, I’m confident I could handle it seamlessly using Hugging Face’s libraries and tools. Their ecosystem makes working with open-source models straightforward and accessible.