惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
博客园_首页
Google DeepMind News
Google DeepMind News
博客园 - Franky
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
罗磊的独立博客
IT之家
IT之家
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
腾讯CDC
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Build Your First AI Agent in 60 Lines of Python — No Fram...
Archit Mitta · 2026-04-25 · via DEV Community

Archit Mittal

Everyone's talking about AI agents, but most tutorials start with heavyweight frameworks, API keys, and 500+ lines of boilerplate.

What if you could build a functional AI agent in just 60 lines of pure Python?

No LangChain. No CrewAI. No framework at all.

Let's do it.

What We're Building

A simple AI agent that can:

  • Take a goal as input
  • Break it into subtasks
  • Execute each subtask using tools
  • Return a final result

Think of it as the minimal viable agent — the skeleton you can extend into anything.

The Architecture

Our agent follows the classic Observe → Think → Act loop:

┌─────────────┐
│   USER GOAL │
└──────┬──────┘
       │
       ▼
┌──────────────┐
│  THINK (LLM) │◄──────┐
└──────┬───────┘       │
       │               │
       ▼               │
┌──────────────┐       │
│  ACT (Tool)  │───────┘
└──────┬───────┘
       │
       ▼
┌──────────────┐
│    RESULT    │
└──────────────┘

Enter fullscreen mode Exit fullscreen mode

The Code (60 Lines)

import json
import os
from anthropic import Anthropic

client = Anthropic()

# Define tools the agent can use
tools = [
    {
        "name": "calculator",
        "description": "Performs arithmetic calculations",
        "input_schema": {
            "type": "object",
            "properties": {
                "expression": {"type": "string", "description": "Math expression to evaluate"}
            },
            "required": ["expression"]
        }
    },
    {
        "name": "search_notes",
        "description": "Search through local notes/files",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "Search query"}
            },
            "required": ["query"]
        }
    }
]

def execute_tool(name, input_data):
    if name == "calculator":
        try:
            return str(eval(input_data["expression"]))
        except:
            return "Error: Invalid expression"
    elif name == "search_notes":
        # Simulate search — replace with real implementation
        return f"Found 3 notes matching '{input_data['query']}'"
    return "Unknown tool"

def run_agent(goal, max_steps=5):
    messages = [{"role": "user", "content": goal}]
    system = "You are an AI agent. Use the provided tools to accomplish the user's goal. When done, provide a final answer."

    for step in range(max_steps):
        response = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=1024,
            system=system,
            tools=tools,
            messages=messages
        )

        # Check if agent wants to use a tool
        if response.stop_reason == "tool_use":
            tool_block = next(b for b in response.content if b.type == "tool_use")
            result = execute_tool(tool_block.name, tool_block.input)
            messages.append({"role": "assistant", "content": response.content})
            messages.append({"role": "user", "content": [{"type": "tool_result", "tool_use_id": tool_block.id, "content": result}]})
            print(f"Step {step+1}: Used {tool_block.name}{result}")
        else:
            # Agent is done
            final = next(b.text for b in response.content if hasattr(b, "text"))
            print(f"\nAgent Result: {final}")
            return final

    return "Max steps reached"

# Run it
run_agent("What is 15% of 847, then round to nearest integer?")

Enter fullscreen mode Exit fullscreen mode

How It Works

Lines 1-4: Import dependencies. We only need the Anthropic SDK.

Lines 6-30: Define tools as JSON schemas. Claude understands these natively — no wrapper needed.

Lines 32-40: Tool execution. Dead simple if/else. Replace with real implementations (API calls, database queries, file operations).

Lines 42-65: The agent loop. This is the core. Send messages → check if Claude wants a tool → execute → feed result back → repeat.

Why This Matters

Every "agent framework" is essentially wrapping this exact loop with abstractions. Understanding the raw pattern means:

  1. You debug faster — no framework magic to untangle
  2. You extend easier — add tools by adding elif blocks
  3. You own the code — no dependency updates breaking your agent

What to Build Next

From this 60-line skeleton, you can build:

  • A personal assistant — add calendar, email, and file tools
  • A code reviewer — add git diff and lint tools
  • A content pipeline — add publishing APIs as tools (I use this exact pattern to automate my content across 6 platforms)
  • A data analyst — add SQL and chart tools

The Takeaway

You don't need a framework to build AI agents. You need:

  1. An LLM that supports tool use (Claude, GPT-4, etc.)
  2. A loop that feeds tool results back
  3. Tools defined as JSON schemas

That's it. 60 lines. No magic.


I'm Archit — I automate chaos. Follow me for more practical AI automation tutorials.

Currently building a system that runs scheduled AI agents across 6 platforms daily with zero human intervention. More on that soon.