Skip to content

Overview

Introduction

Design and complexity of agent systems scales with the problem domain they are intended to solve. By definition, they can range from a single LLM answering questions all the way to a multi-agent architecture, with tools enabling interactionsf with databases and external services.

At its core, the design is two pronged: 1. Agent Level Design 2. Agent Interaction Design

Agent Level Design

This is where what we'd like to "intra-agent" decisions come into play. Things such as choice of LLM, System Message, and Tools. Snippet below provides the most fundamental LLM-powered agent in Railtracks with no tool calling capabilities.

import railtracks as rt

SimpleChatAgent = rt.agent_node(
    name="SimpleChatAgent",
    system_message="You are Clippy, a helpful assistant that provides answers to user questions.",
    llm=rt.llm.GeminiLLM("gemini-3-flash-preview")
)
Parameters
  • name: Optional name to give your agent. Will default to the node type if not provided

Agent Interaction Design

This is where the connections between different agents and the rest of your code come into play. In Railtracks, for this connection we use the concept of Flows where you define these relationships. Read more at Flow Invocation.