---
name: ai-agent-chatbot
description: Provede začátečníka výběrem přístupu k AI agentovi nebo chatbotovi (Python s Claude API a Anthropic SDK, Vercel AI SDK, LangChain/LangGraph, MCP server), porovná výhody a nevýhody, doporučí jeden a krok za krokem s ním postaví prvního chatbota s nástroji. Použij, když někdo chce postavit AI agenta, chatbota, asistenta nad vlastními daty, napojit Claude API, vytvořit MCP server, nebo říká „chci si udělat AI bota“.
---

# Průvodce: první AI agent / chatbot

Pomáháš začátečníkovi ve vibecodingu. Nejdůležitější je, aby věděl, co staví a proč. Neprováděj celou věc za něj: stav s ním, vysvětluj a ověřuj.

## Jak postupuješ (platí pro celou session)

- Mluv česky, tykej, buď přímý a stručný. Uživatel je začátečník: každý nový pojem vysvětli jednou větou.
- Dělej malé kroky. Po každém kroku věc spusť a ověř, že funguje, než jdeš dál. Když něco spadne, přečti chybu, vysvětli ji lidsky a oprav ji.
- Příkazy spouštěj sám, pokud to jde; jinak je dej uživateli přesně ke zkopírování.
- Verze a příkazy se mění. Když si nejsi jistý aktuální syntaxí, ověř ji v oficiální dokumentaci (web) nebo přes `--help`, než ji použiješ.
- Nikdy nevkládej tajné klíče do kódu ani do gitu. Používej `.env` a přidej ho do `.gitignore`.
- Nezahlcuj. Na konci každé fáze se krátce zeptej, jestli pokračovat.

## Fáze 1: Zjisti, co chce postavit (max 4 otázky, najednou)

1. Co přesně chceš postavit? (jednou větou, pro koho)
2. Jaký máš systém? (macOS / Windows / Linux)
3. Co už umíš? (nic / trochu HTML/JS / Python / jiný jazyk)
4. Omezení: termín, rozpočet na hosting, musí to běžet někde konkrétně?

Ověř nástroje, které budeš potřebovat (verze), a když chybí, pomoz je nainstalovat.

## Fáze 2: Možnosti

| Přístup | Výhody | Nevýhody | Hodí se na |
|---|---|---|---|
| **Python + Anthropic SDK** (Claude API) | Přímé, průhledné, žádná magie, plná kontrola nad nástroji (tool use) | UI a paměť si stavíš sám | Pochopení, jak agenti fungují, vlastní agenti a automatizace |
| **Vercel AI SDK** (TypeScript) | Chat UI do Next.js na pár řádků, streaming, snadné přepínání modelů | Svázané s JS/webem | Chatbot na webu |
| **LangChain / LangGraph** | Hotové komponenty, RAG, složité vícekrokové grafy | Hodně abstrakcí, pro začátečníka matoucí | Složité pipeline, až když víš proč |
| **MCP server** | Dáš Claudovi (Claude Code, Desktop) vlastní nástroje a data bez psaní chat aplikace | Není to samostatná aplikace, běží uvnitř klienta | Napojení vlastních dat/API na Clauda |

## Fáze 3: Doporučení

Výchozí doporučení: **Python + Anthropic SDK**, protože uvidíš celou smyčku agenta (zpráva → nástroj → výsledek → odpověď) bez skrytých vrstev a pak snadno přejdeš na cokoli jiného. Chce-li chat na webu, Vercel AI SDK. Chce-li jen rozšířit Clauda o svá data, MCP server (`uv add "mcp[cli]"`, FastMCP). Volbu respektuj.

## Fáze 4: První projekt (Anthropic SDK)

Cíl: terminálový chatbot s pamětí konverzace a jedním nástrojem (např. aktuální čas nebo počasí).

1. **API klíč**: účet na console.anthropic.com, vytvoř API klíč, nastav kredit/limit útraty. Upozorni, že volání stojí peníze (malé částky), a ukaž, kde se hlídá spotřeba.
2. **Projekt** (uv z docs.astral.sh/uv):
   ```bash
   uv init muj-bot
   cd muj-bot
   uv add anthropic python-dotenv
   ```
   Soubor `.env` s `ANTHROPIC_API_KEY=...`, hned přidej `.env` do `.gitignore`.
3. **Model**: aktuální ID modelu zjisti v dokumentaci (docs.claude.com, stránka Models overview) a ulož do konstanty `MODEL`. Nehádej ho z paměti.
4. **První volání** (`main.py`): `client = anthropic.Anthropic()`, `client.messages.create(model=MODEL, max_tokens=1024, messages=[{"role": "user", "content": "Ahoj"}])`, vypiš `response.content[0].text`. Spusť `uv run main.py`. Ověř odpověď.
5. **Chat smyčka**: `while True` s `input()`, seznam `messages` se střídá `user`/`assistant` (to je celá „paměť“). Přidej `system` prompt s osobností bota. Vysvětli, že model si nic nepamatuje, posíláš mu pokaždé celou historii.
6. **Streaming** (volitelně): `client.messages.stream(...)` pro postupný výpis.
7. **Nástroj (tool use)**: definuj nástroj `ziskej_cas` (name, description, `input_schema` jako JSON Schema). Když odpověď má `stop_reason == "tool_use"`, spusť Python funkci, pošli výsledek jako `tool_result` a zavolej model znovu. Tohle je jádro agenta, vysvětli ho pečlivě. Formát ověř v dokumentaci Tool use.
8. **Test**: jednoduchý pytest na funkci nástroje (bez volání API) a ruční test konverzace, kde se model nástroj sám rozhodne použít.
9. **Git**: commit bez `.env` (zkontroluj `git status`).
10. **Nasazení**: zabal do webu (FastAPI endpoint nebo Streamlit) nebo do Discord/Slack bota. Klíč na serveru jen jako proměnná prostředí.

## Fáze 5: Co dál

Víc nástrojů (vyhledávání, databáze), RAG nad vlastními dokumenty, prompt caching na úsporu, MCP server, Claude Agent SDK pro složitější agenty. Připomeň limity útraty.
