A hands-on FastAPI application that walks through the building blocks of AI agents — from stateless LLM calls to full agentic loops — step by step.
| Module | What it demonstrates |
|---|---|
| Stateless LLM | Single, context-free call to the model (Anthropic or OpenAI) |
| Memory | Full conversation history passed on every request, with Claude compaction on supporting models |
| Tools | Model-driven tool use (calculator, datetime) — works on both providers |
| Web Search | Live grounding via Claude's built-in web_search server tool |
| RAG | Retrieve → Augment → Generate with in-memory employee data |
| Agent Mode | Compose Tools + Web Search + RAG into a single agentic loop |
| Planning | Zero-shot, few-shot, chain-of-thought, decomposition, ReAct |
| Agent in Action | Multi-step stock analysis agent (Plan → Execute → Synthesise → Verify), with live progress and risk-tolerance tuning |
| Frameworks | Overview + interactive decision guide comparing agent frameworks (LangGraph, Pydantic AI, LlamaIndex, and more) |
| Tokenizer | Interactive tokenizer playground — see how prose, code, JSON, multilingual (including RTL/Hebrew) and emoji text gets split into tokens across GPT, open models (DeepSeek, Qwen, Llama, Mistral, GLM) and Claude |
/chat, /plan, /agent).⚠️ No API key badge appears next to the model picker whenever the selected provider's key isn't set in .env; calling it anyway returns a clear, friendly error instead of a raw SDK exception.Workshop home — Stateless LLM step:

"What is an Agent?" — deterministic vs. non-deterministic execution:

Planning — Task Decomposition:

Tokenizer playground — right-to-left (Hebrew) prompt:

Tokenizer playground — English prompt:

git clone https://github.com/YOUR_USERNAME/agent_workshop.git
cd agent_workshop
cp .env.example .env
# Edit .env and add your Anthropic and/or OpenAI API key(s)
You only need to set the key for the provider(s) you plan to use — the model picker in the UI shows a ⚠️ No API key warning next to any provider whose key isn't configured, and picking a model from that provider returns a clear error instead of a confusing one.
The .env file is listed in .gitignore and is never committed to the repository.
./start.sh
The script will:
.venv) if one does not existrequirements.txthttp://127.0.0.1:8000To give participants a public URL:
./start.sh --share
Requires ngrok to be installed and authenticated.
| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY | (optional) | Your Anthropic API key — required to use Claude models |
ANTHROPIC_MODEL | claude-sonnet-5 | Default model used when no model is selected |
OPENAI_API_KEY | (optional) | Your OpenAI API key — required to use GPT models |
Every module's model picker groups models by provider (Anthropic / OpenAI).
Switch providers at any time from the dropdown — the backend automatically
routes the request (including tool calls, memory, and structured JSON output)
to the right SDK. Anthropic-only features (context-management/compaction
betas, the built-in web_search server tool) transparently fall back to a
plain call when an OpenAI model is selected.
Check GET /config to see the model catalog and which providers currently
have a configured API key.
.env file, which is gitignored. No secrets are ever committed to the repository.rag.py are entirely fictional demo data invented for the RAG workshop module. They do not represent real people.HTML
40.5%
JavaScript
22.9%
CSS
19.6%
Python
15.8%
Shell
1.1%
A hands-on FastAPI application that walks through the building blocks of AI agents — from stateless LLM calls to full agentic loops — step by step.
| Module | What it demonstrates |
|---|---|
| Stateless LLM | Single, context-free call to the model (Anthropic or OpenAI) |
| Memory | Full conversation history passed on every request, with Claude compaction on supporting models |
| Tools | Model-driven tool use (calculator, datetime) — works on both providers |
| Web Search | Live grounding via Claude's built-in web_search server tool |
| RAG | Retrieve → Augment → Generate with in-memory employee data |
| Agent Mode | Compose Tools + Web Search + RAG into a single agentic loop |
| Planning | Zero-shot, few-shot, chain-of-thought, decomposition, ReAct |
| Agent in Action | Multi-step stock analysis agent (Plan → Execute → Synthesise → Verify), with live progress and risk-tolerance tuning |
| Frameworks | Overview + interactive decision guide comparing agent frameworks (LangGraph, Pydantic AI, LlamaIndex, and more) |
| Tokenizer | Interactive tokenizer playground — see how prose, code, JSON, multilingual (including RTL/Hebrew) and emoji text gets split into tokens across GPT, open models (DeepSeek, Qwen, Llama, Mistral, GLM) and Claude |
/chat, /plan, /agent).⚠️ No API key badge appears next to the model picker whenever the selected provider's key isn't set in .env; calling it anyway returns a clear, friendly error instead of a raw SDK exception.Workshop home — Stateless LLM step:

"What is an Agent?" — deterministic vs. non-deterministic execution:

Planning — Task Decomposition:

Tokenizer playground — right-to-left (Hebrew) prompt:

Tokenizer playground — English prompt:

git clone https://github.com/YOUR_USERNAME/agent_workshop.git
cd agent_workshop
cp .env.example .env
# Edit .env and add your Anthropic and/or OpenAI API key(s)
You only need to set the key for the provider(s) you plan to use — the model picker in the UI shows a ⚠️ No API key warning next to any provider whose key isn't configured, and picking a model from that provider returns a clear error instead of a confusing one.
The .env file is listed in .gitignore and is never committed to the repository.
./start.sh
The script will:
.venv) if one does not existrequirements.txthttp://127.0.0.1:8000To give participants a public URL:
./start.sh --share
Requires ngrok to be installed and authenticated.
| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY | (optional) | Your Anthropic API key — required to use Claude models |
ANTHROPIC_MODEL | claude-sonnet-5 | Default model used when no model is selected |
OPENAI_API_KEY | (optional) | Your OpenAI API key — required to use GPT models |
Every module's model picker groups models by provider (Anthropic / OpenAI).
Switch providers at any time from the dropdown — the backend automatically
routes the request (including tool calls, memory, and structured JSON output)
to the right SDK. Anthropic-only features (context-management/compaction
betas, the built-in web_search server tool) transparently fall back to a
plain call when an OpenAI model is selected.
Check GET /config to see the model catalog and which providers currently
have a configured API key.
.env file, which is gitignored. No secrets are ever committed to the repository.rag.py are entirely fictional demo data invented for the RAG workshop module. They do not represent real people.HTML
40.5%
JavaScript
22.9%
CSS
19.6%
Python
15.8%
Shell
1.1%