On the contrary, I think that the left piece of code is not building constrains prematurely and actually enables you to modularize it away when needed.
Sure, if the logic grows, if it needs to scale, if the team increases in size… then it makes sense to modularize it. But building something from the very beginning to achieve that is going to impose constraints that make it harder to reason about and harder to refactor; you’ll have to break down the previous structures and boundaries built by the function heavy example, which will probably introduce needless indirections.
LLMs in particular seem well fitted to extracting semantically correct insights from unstructured data. When it comes to observability we’re in a better spot; since we have discrete structured data, which makes it easy to build rules and logic on top of it. I don’t think this kind of tooling will benefit much from recent advances. If anybody has anything worth being shown I’d love to check it out.