patterns

Building AI Agents with Ollama and Tool Calling in Go

Building AI Agents with Ollama and Tool Calling in Go

Bogdan Ungureanu

The landscape of AI development is undergoing a fundamental shift. What once required expensive API calls to cloud-based LLM providers can now run entirely on your local machine using Ollama. But raw language models alone aren’t enough to build truly useful AI systems—they need the ability to take actions through tool calling, also known as function calling.

Building AI agents that can autonomously read files, execute commands, search codebases, and modify systems opens up unprecedented possibilities for automation. Imagine an AI assistant that can analyze your Go codebase, understand architectural patterns, and suggest improvements by actually examining the code. Or a development agent that can automatically fix linting errors, generate boilerplate, or execute builds based on natural language instructions.

This comprehensive guide teaches you how to build production-ready AI agents in Go using Ollama for local LLM inference and a robust tool registry system inspired by the Model Context Protocol (MCP). You’ll create a system where AI models can intelligently decide which tools to use, when to use them, and how to combine tool results to solve complex problems.

Implementing Circuit Breaker Pattern in Go for Fault Tolerance

Implementing Circuit Breaker Pattern in Go for Fault Tolerance

Bogdan Ungureanu
In today’s distributed systems landscape, services are interconnected through complex networks of API calls, database queries, and external service dependencies. When one service experiences issues, it can create a cascading failure that brings down entire systems. This is where the Circuit Breaker pattern becomes invaluable—acting as a protective mechanism that prevents failing services from overwhelming the entire system. The Circuit Breaker pattern, inspired by electrical circuit breakers, monitors service calls and “trips” when failures exceed a certain threshold, temporarily blocking requests to give the failing service time to recover.