Tutorial

Build an AI Agent with API in 2026: Step-by-Step Tutorial

April 17, 2026 · 9 min read

AI agents go beyond simple chat — they can use tools, make decisions, and execute multi-step tasks autonomously. In 2026, building a basic AI agent is surprisingly straightforward with the right API. This tutorial walks you through building one from scratch.

What Is an AI Agent?

An AI agent is a program that uses an LLM as its "brain" to:

  • Understand goals: Parse what the user wants to accomplish
  • Plan steps: Break complex tasks into smaller actions
  • Use tools: Call functions, APIs, databases, or search the web
  • Reason about results: Evaluate tool outputs and decide next steps
  • Iterate: Loop until the task is complete or ask for clarification

Step 1: Define Your Tools

Tools are functions the agent can call. Define them as OpenAI-compatible tool schemas:

import json
import requests
from openai import OpenAI

client = OpenAI(
    base_url="https://api.aipower.me/v1",
    api_key="YOUR_AIPOWER_KEY",
)

# Define tools the agent can use
tools = [
    {
        "type": "function",
        "function": {
            "name": "search_web",
            "description": "Search the web for current information",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "Search query"},
                },
                "required": ["query"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "calculate",
            "description": "Perform a mathematical calculation",
            "parameters": {
                "type": "object",
                "properties": {
                    "expression": {"type": "string", "description": "Math expression to evaluate"},
                },
                "required": ["expression"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "save_file",
            "description": "Save content to a file",
            "parameters": {
                "type": "object",
                "properties": {
                    "filename": {"type": "string"},
                    "content": {"type": "string"},
                },
                "required": ["filename", "content"],
            },
        },
    },
]

Step 2: Implement Tool Functions

def search_web(query):
    """Simulate web search (replace with real search API)."""
    return f"Search results for '{query}': [Top results would appear here]"

def calculate(expression):
    """Safely evaluate a math expression."""
    try:
        result = eval(expression, {"__builtins__": {}})
        return str(result)
    except Exception as e:
        return f"Error: {e}"

def save_file(filename, content):
    """Save content to a file."""
    with open(filename, "w") as f:
        f.write(content)
    return f"Saved to {filename}"

# Map function names to implementations
tool_functions = {
    "search_web": search_web,
    "calculate": calculate,
    "save_file": save_file,
}

Step 3: Build the Agent Loop

The agent loop is the core pattern: send a message, check if the model wants to call tools, execute tools, feed results back, and repeat.

def run_agent(user_task, max_steps=10):
    """Run an AI agent that can use tools to complete a task."""
    messages = [
        {
            "role": "system",
            "content": "You are a helpful AI agent. Break complex tasks into steps. "
                       "Use the available tools to gather information and take actions. "
                       "Think step by step before acting."
        },
        {"role": "user", "content": user_task},
    ]

    for step in range(max_steps):
        response = client.chat.completions.create(
            model="deepseek/deepseek-chat",  # Affordable for agent loops
            messages=messages,
            tools=tools,
            tool_choice="auto",
        )

        message = response.choices[0].message
        messages.append(message)

        # If no tool calls, the agent is done
        if not message.tool_calls:
            print(f"Agent finished: {message.content}")
            return message.content

        # Execute each tool call
        for tool_call in message.tool_calls:
            fn_name = tool_call.function.name
            fn_args = json.loads(tool_call.function.arguments)
            print(f"  Step {step + 1}: Calling {fn_name}({fn_args})")

            result = tool_functions[fn_name](**fn_args)

            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result,
            })

    return "Agent reached max steps without completing."

# Run the agent
run_agent("Calculate the compound interest on $10,000 at 5% annual rate for 10 years")

Step 4: Add Memory and Context

class Agent:
    def __init__(self, model="deepseek/deepseek-chat"):
        self.model = model
        self.memory = []  # Long-term memory across conversations

    def run(self, task):
        context = "\n".join(self.memory[-5:])  # Last 5 memories
        messages = [
            {"role": "system", "content": f"Previous context:\n{context}"},
            {"role": "user", "content": task},
        ]
        result = run_agent_with_messages(messages, self.model)
        self.memory.append(f"Task: {task} -> Result: {result[:200]}")
        return result

Choosing the Right Model for Agents

ModelAgent SuitabilityCost/MBest For
DeepSeek V3Good$0.34/$0.50Budget agents, simple tool use
Claude Sonnet 4Excellent$4.50/$22.50Complex tool chains, code agents
GPT-5.4Excellent$3.75/$22.50Parallel tool calling
Kimi K2.5Strong$0.24/$1.20256K context for large tasks
Claude Opus 4.6Best$7.50/$37.50Multi-step reasoning, high stakes

Cost Optimization for Agents

Agents make multiple API calls per task (typically 3-10). Cost control is critical:

  • Use cheap models for planning: Let DeepSeek V3 plan, then call Claude for execution
  • Limit max steps: Set a hard cap to prevent runaway loops
  • Cache tool results: Same web search should not hit the API twice
  • Use max_tokens: Prevent verbose intermediate reasoning from inflating costs

Build your first AI agent today at aipower.me — 50 free API calls, all models support tool calling. One API key for GPT, Claude, DeepSeek, and 13 more.

Ready to try?

50 free API calls. 16 models. One API key.

Create free account