ai-agents-from-scratch

pgusoMIT活跃维护

从零手写 AI Agent,用本地 LLM 跑通函数调用、记忆和 ReAct 循环,帮你真正搞懂 Agent 内部怎么运转,而不是只会调黑盒 API。

Demystify AI agents by building them yourself. Local LLMs, no black boxes, real understanding of function calling, memory, and ReAct patterns.

暂无版本4,909star +4 / 7 天711fork同步于 2026-11-10 17:38 UTC

怎么上手

由 README 提炼,执行前请确认
npm install
node intro/intro.js
硬件要求按 README 说明

需要 Node.js 18+,至少 8GB 内存(推荐 16GB);模型需自行下载并放入 ./models/ 目录。README 未说明具体显存要求和 GPU 厂商型号。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

不依赖框架、用本地 LLM 从零手写 AI Agent 的教学项目,帮你搞懂函数调用、记忆和 ReAct 到底怎么跑

从零手写 AI Agent,用本地 LLM 跑通函数调用、记忆和 ReAct 循环,帮你真正搞懂 Agent 内部怎么运转,而不是只会调黑盒 API。

核心能力

  • 基于 node-llama-cpp 加载本地模型逐层实现 Agent
  • 从基础推理到函数调用、持久记忆、ReAct 逐步递进
  • 覆盖 ToT、GoT、CoT、AoT 等多种推理与规划模式
  • 用嵌入相似度做工具路由,只把 top-k 工具塞进上下文
  • 每个示例配 CODE.md 与 CONCEPT.md 讲解代码与概念

容易踩的坑

模型不在仓库里,必须先按 DOWNLOAD.md 下载并放到 ./models/ 目录才能跑;示例按目录顺序学习,跳着看会缺前置概念;OpenAI 示例是可选的,需要额外配置托管模型访问。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    AI Agents From Scratch

    Learn to build AI agents locally without frameworks. Understand what happens under the hood before using production frameworks.

    Agent architecture overview

    Purpose

    This repository teaches you to build AI agents from first principles using local LLMs and node-llama-cpp. By working through these examples, you'll understand:

    • How LLMs work at a fundamental level
    • What agents really are (LLM + tools + patterns)
    • How different agent architectures function
    • Why frameworks make certain design choices

    A Python version of this tutorial is available here: https://github.com/pguso/agents-from-scratch

    Philosophy: Learn by building. Understand deeply, then use frameworks wisely.

    Companion Website

    This repository now has a matching companion website:

    https://agentsfromscratch.com

    The website is not a replacement for this repo, but a conceptual companion that:

    • Explains why each example exists
    • Visualizes the learning path from raw LLM calls to full agents
    • Separates code, explanations, and core concepts
    • Helps you understand agent architectures before using frameworks

    Recommended workflow:

    • Use GitHub for running, modifying, and studying the code
    • Use the website for mental models, explanations, and progression

    Think of the site as the map and this repo as the terrain.

    Agent Fundamentals - From LLMs to ReAct

    Prerequisites

    • Node.js 18+
    • At least 8GB RAM (16GB recommended)
    • Download models and place in ./models/ folder, details in DOWNLOAD.md

    Installation

    npm install
    

    Run Examples

    node intro/intro.js
    node simple-agent/simple-agent.js
    node react-agent/react-agent.js
    

    Learning Path

    Follow these examples in order to build understanding progressively:

    1. Introduction - Basic LLM Interaction

    intro/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Loading and running a local LLM
    • Basic prompt/response cycle

    Key concepts: Model loading, context, inference pipeline, token generation


    2. (Optional) OpenAI Intro - Using Proprietary Models

    openai-intro/ | Code | Code Explanation | Concepts

    What you'll learn:

    • How to call hosted LLMs (like GPT-4)
    • Temperature Control
    • Token Usage

    Key concepts: Inference endpoints, network latency, cost vs control, data privacy, vendor dependence


    3. Translation - System Prompts & Specialization

    translation/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Using system prompts to specialize agents
    • Output format control
    • Role-based behavior
    • Chat wrappers for different models

    Key concepts: System prompts, agent specialization, behavioral constraints, prompt engineering


    4. Think - Reasoning & Problem Solving

    think/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Configuring LLMs for logical reasoning
    • Complex quantitative problems
    • Limitations of pure LLM reasoning
    • When to use external tools

    Key concepts: Reasoning agents, problem decomposition, cognitive tasks, reasoning limitations


    5. Batch - Parallel Processing

    batch/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Processing multiple requests concurrently
    • Context sequences for parallelism
    • GPU batch processing
    • Performance optimization

    Key concepts: Parallel execution, sequences, batch size, throughput optimization


    6. Coding - Streaming & Response Control

    coding/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Real-time streaming responses
    • Token limits and budget management
    • Progressive output display
    • User experience optimization

    Key concepts: Streaming, token-by-token generation, response control, real-time feedback


    7. Simple Agent - Function Calling (Tools)

    simple-agent/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Function calling / tool use fundamentals
    • Defining tools the LLM can use
    • JSON Schema for parameters
    • How LLMs decide when to use tools

    Key concepts: Function calling, tool definitions, agent decision making, action-taking

    This is where text generation becomes agency!


    8. Simple Agent with Memory - Persistent State

    simple-agent-with-memory/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Persisting information across sessions
    • Long-term memory management
    • Facts and preferences storage
    • Memory retrieval strategies

    Key concepts: Persistent memory, state management, memory systems, context augmentation


    9. ReAct Agent - Reasoning + Acting

    react-agent/ | Code | Code Explanation | Concepts

    What you'll learn:

    • ReAct pattern (Reason → Act → Observe)
    • Iterative problem solving
    • Step-by-step tool use
    • Self-correction loops

    Key concepts: ReAct pattern, iterative reasoning, observation-action cycles, multi-step agents

    This is the foundation of modern agent frameworks!


    10. AoT Agent - Atom of Thought Planning

    aot-agent/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Atom of Thought methodology
    • Atomic planning for multi-step computations
    • Dependency management between operations
    • Structured JSON output for reasoning plans
    • Deterministic execution of plans

    Key concepts: AoT planning, atomic operations, dependency resolution, plan validation, structured reasoning


    11. Error Handling - Resilience for LLM + Tools

    error-handling/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Typed error taxonomy (validation, LLM, tools, workflow) with stable codes
    • Timeouts, retries with backoff/jitter, and classifying transient failures
    • Graceful degradation when the LLM path fails (deterministic tool fallback)
    • Orchestration-level errors (AgentWorkflowError) and correlation ids for support

    Key concepts: Error taxonomy, retry policies, timeouts, fallbacks, degraded mode, observability, user-safe messaging


    12. Tree of Thought - Search over reasoning branches

    tree-of-thought/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Generating multiple candidate next actions from the same partial plan
    • Ranking and pruning branches with a deterministic score in code
    • Running a compact beam search loop with inspectable kept/pruned decisions
    • Verifying the winning path with explicit sanity checks

    Key concepts: Tree of Thought, beam search, branch pruning, verifiable objectives, search controllers


    13. Graph of Thought - DAG merge for multi-source outputs

    graph-of-thought/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Modeling reasoning as a DAG: parallel source extracts → merge rules → final draft
    • Resolving conflicts explicitly before generation (must_include, must_avoid, conflict_notes)
    • Adding deterministic merge and draft compliance checks
    • Running independent nodes in parallel to reduce latency

    Key concepts: Graph of Thought, DAG orchestration, multi-source fusion, merge-before-generate, policy reconciliation

    Decision guide: use ToT when you need to search competing paths; use GoT when you need to combine multiple sources into one consistent policy. Compare both in:


    14. Chain of Thought - Auditable stepwise decisioning

    chain-of-thought/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Splitting a high-stakes decision into explicit reasoning phases
    • Preventing early bias with a facts-only extraction step
    • Balancing fraud signals with legitimacy evidence before policy application
    • Producing an auditable final decision with customer-safe and internal outputs

    Key concepts: Chain of Thought, structured reasoning traces, policy-constrained decisions, explainability, review-ready workflows


    15. Tool routing (embeddings) - Narrow the tool catalog per request

    tool-routing-embeddings/ | Code | Code Explanation | Concepts

    What you'll learn:

    • Precomputing embeddings for short exemplar phrases per tool
    • Scoring the user message against exemplars (cosine similarity) with a small embedding model
    • Passing only top-k tools (plus optional always-include tools) into session.prompt
    • Observing recall failure when k is too small for multi-intent prompts

    Key concepts: Tool routing, embedding similarity, exemplar design, context/token savings, pinned tools, retrieval-style agent design


    Documentation Structure

    Each example folder contains:

    • <name>.js - The working code example
    • CODE.md - Step-by-step code explanation
    • Line-by-line breakdowns
    • What each part does
    • How it works
    • CONCEPT.md - High-level concepts
    • Why it matters for agents
    • Architectural patterns
    • Real-world applications
    • Simple diagrams

    Core Concepts

    What is an AI Agent?

    AI Agent = LLM + System Prompt + Tools + Memory + Reasoning Pattern
               ─┬─   ──────┬──────   ──┬──   ──┬───   ────────┬────────
                │          │           │       │              │
             Brain      Identity    Hands   State         Strategy
    

    Evolution of Capabilities

    1. intro          → Basic LLM usage
    2. translation    → Specialized behavior (system prompts)
    3. think          → Reasoning ability
    4. batch          → Parallel processing
    5. coding         → Streaming & control
    6. simple-agent   → Tool use (function calling)
    7. memory-agent   → Persistent state
    8. react-agent    → Strategic reasoning + tool use
    

    Architecture Patterns

    Simple Agent (Steps 1-5)

    User → LLM → Response
    

    Tool-Using Agent (Step 6)

    User → LLM ⟷ Tools → Response
    

    Memory Agent (Step 7)

    User → LLM ⟷ Tools → Response
           ↕
         Memory
    

    ReAct Agent (Step 8)

    User → LLM → Think → Act → Observe
           ↑      ↓      ↓      ↓
           └──────┴──────┴──────┘
               Iterate until solved
    

    ️ Helper Utilities

    PromptDebugger

    helper/prompt-debugger.js

    Utility for debugging prompts sent to the LLM. Shows exactly what the model sees, including:

    • System prompts
    • Function definitions
    • Conversation history
    • Context state

    Usage example in simple-agent/simple-agent.js

    ️ Project Structure - Fundamentals

    ai-agents/
    ├── README.md                          ← You are here
    ├─ examples/
    ├── 01_intro/
    │   ├── intro.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 02_openai-intro/
    │   ├── openai-intro.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 03_translation/
    │   ├── translation.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 04_think/
    │   ├── think.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 05_batch/
    │   ├── batch.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 06_coding/
    │   ├── coding.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 07_simple-agent/
    │   ├── simple-agent.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 08_simple-agent-with-memory/
    │   ├── simple-agent-with-memory.js
    │   ├── memory-manager.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 09_react-agent/
    │   ├── react-agent.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 10_aot-agent/
    │   ├── aot-agent.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 11_error-handling/
    │   ├── error-handling.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 12_tree-of-thought/
    │   ├── tree-of-thought.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 13_graph-of-thought/
    │   ├── graph-of-thought.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 14_chain-of-thought/
    │   ├── chain-of-thought.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── 15_tool-routing-embeddings/
    │   ├── tool-routing-embeddings.js
    │   ├── CODE.md
    │   └── CONCEPT.md
    ├── helper/
    │   └── prompt-debugger.js
    ├── models/                             ← Place your GGUF models here
    └── logs/                               ← Debug outputs
    

    Additional Resources

    • node-llama-cpp: GitHub
    • Model Hub: Hugging Face
    • GGUF Format: Quantized models for local inference

    Contributing

    This is a learning resource. Feel free to:

    • Suggest improvements to documentation
    • Add more example patterns
    • Fix bugs or unclear explanations
    • Share what you built!

    License

    Educational resource - use and modify as needed for learning.


    Built with ❤️ for people who want to truly understand AI agents

    Start with intro/ and work your way through. Each example builds on the previous one. Read both CODE.md and CONCEPT.md for full understanding.

    Happy learning!


    Working with me

    If this repo was useful and you have a project that needs ai workflows, context engineering, RAG, or local/production LLM work done properly, I'm open to freelance or contract engagements.

    No pressure either way - glad if the repo was useful on its own.