
In an era where generative technologies dominate the conversation, the ability to build reliable systems is what separates experimental prototypes from true real-world value. This is why our recent workshop, “From Workflows to Agents: Building LLM Systems in Practice,” held at TechSaloniki, was such an exciting milestone. It brought together software engineers, machine learning practitioners, and system architects to explore the practical realities of building enterprise applications.
The Foundation of Mental Models
At the heart of modern AI applications lie probabilistic reasoning engines. While these models offer unprecedented capabilities, they also introduce a unique challenge. Engineers must figure out how to ensure predictable outcomes from non-deterministic code. The answer lies in establishing a shared mental model before writing a single line of code.
Building robust systems requires treating these models as standard software components that demand strict architectural discipline. This means carefully defining the boundaries between the model itself, the external tools it interacts with, and the overarching framework that connects them.
Navigating the Core Engineering Choice
Our session highlighted the most critical architectural decision engineering teams face today. They must choose between fixed workflows and dynamic agents.
Workflows offer developers strict control, high predictability, and straightforward debugging by routing data through explicit, developer-defined steps. Agents place the model in the driver seat, allowing it to navigate complex problems autonomously using a continuous reasoning loop. While the autonomy of an agent is highly flexible, we emphasized a foundational engineering principle. Teams should always choose the least amount of autonomy required to solve the problem reliably.
The Evaluation Anchor
Testing an open-ended application requires a completely new mindset and a layered testing stack. One of the most valuable segments of the workshop was providing a practical blueprint for system evaluation.
We demonstrated how to build this stack from the ground up, starting with non-negotiable deterministic checks. We then moved to curated golden datasets to measure semantic accuracy, and finally explored using high-reasoning models as automated judges for subjective behavioral assessments. By pushing as many evaluations as possible down to the deterministic layer, teams can build a stable foundation for continuous operational improvement.
Takeaways for the Community
The workshop served as a strong reminder that working with these new capabilities is fundamentally a software engineering discipline. Grounding your approach in solid architectural tradeoffs is what ensures long-term success, whether you are building a simple classification tool or a complex autonomous loop.
It was also a celebration of shared curiosity and practical problem solving. It proved that the journey to reliable production systems is not a solo endeavor, but a challenge we are actively solving together as a tech community.