Skip to content

Harjoitus: Multi-step agent tiimissä

Rakenna tiiminä täysi agentti: yhdistä Exercise 1:n työkalu, Exercise 2:n RAG-muistiskill, guardrailit ja sub-agentit. Toimitettava working agent oman tiimin todellisesta työnkulusta (PR-review, deploy, incident triage).

AI Agent Builders
Advanced
90 min

Olet rakentanut viikon aikana pohjan: ymmärrät agenttisilmukan, työkalut (CLI vs MCP), muistimallit ja RAG:n. Nyt yhdistät kaikki ja toimitat oikean agentin oman tiimisi todelliseen tarpeeseen.

Tämä harjoitus rytmitettiin Sessio 3:n Exercise 3 -muotoon: 90 min tiimityö, valmis output, joka näytetään muille.

Pro tip

Harjoituksen alustustiedostot (gemini_agent.py, esimerkkiagentit, ohjeet) jaetaan Sessio 3:n live-koulutuksessa Mon Jun 15 — facilitator antaa zip-paketin tai jakaa repo-linkin sessiossa. Itseopiskelussa lue tämä lesson ohjeena prosessista, mutta odota tiedostot live-sessiosta tai pyydä niitä tuki@modernpath.ai.

Tavoite

Toimita toimiva agentti, joka ratkaisee tiimisi nykyisen, oikean työnkulun (PR-katselmointi, deploy-pipeline, incident-triage, dokumentaation generointi, tms.) automaattisesti tai puoliautomaattisesti.

Multi-step agent

Multi-step agent on agentti, joka suorittaa useampia peräkkäisiä toimia (Observe → Plan → Act → Evaluate → Store) yhden kutsun aikana. Se eroaa yksinkertaisesta tool-callista siinä, että se iteroi: havaitsee tuloksen, päättää seuraavan askeleen ja jatkaa, kunnes tavoite on saavutettu tai max-iteraatiot täynnä.

Vaiheet (90 min)

Vaihe 1: Pick a Use Case (10 min)

Valitse tiiminä yksi oikean elämän työnkulku. Älä valitse mitään, mitä ei kannata automatisoida — valitse toistuva, manuaalinen ja tuskainen.

Hyviä esimerkkejä:

Use caseToistuvuusAI:n arvo
PR-katselmointi (compliance + style)PäivittäinKorkea — vapauttaa senior-kehittäjän
Deploy-checklistin ajaminenPer releaseKorkea — virheherkkä manuaalinen työ
Incident triage (Sentry → Slack → Linear)Aina kun jotain kaatuuErittäin korkea — nopeuttaa MTTR
Dokumentaation generointi PR:stäPer PRKeskitaso — usein "myöhemmin" -työ
Kustannusraportin koostaminen lähteistäViikoittainKeskitaso — siedettävää manuaalisesti

Pro tip

Kysy itseltäsi: "Jos tämä työnkulku rikkoutuu, kuka huutaa?" Jos vastaus on selkeä (esim. "release manager"), se on hyvä kohde — sillä on omistaja ja onnistumiskriteeri. Älä valitse abstrakteja ideoita kuten "yleinen koodikatselmointi" — valitse konkreettinen.

Vaihe 2: Define Tools (15 min)

Listaa työkalut, joita agentti tarvitsee. Käytä Sessio 3:n päätössääntöä:

  • CLI-työkalu kun se on olemassa, mature ja unix-tyylillä komponoituva (git, npm, gh, kubectl)
  • MCP-työkalu kun tarvitset type-safe schemoja, monimutkaisia integraatioita tai human-in-loop-hyväksyntöjä
Esimerkki työkalulista — PR-katselmointi-agenttimarkdown
## Tool Registry

### CLI tools (built-in)
- gh pr view <num>          # Hae PR:n meta
- gh pr diff <num>          # Hae diff
- git log <branch>          # Commit-historia
- npm test                  # Aja testit
- npm run lint              # Lintaa

### CLI tools (custom)
- check-spec-compliance     # Vertaa diffiä spec.md:hen
- check-test-coverage       # Coverage-raportti diffistä

### MCP tools
- linear-mcp.create_issue   # Luo follow-up tiketti
- slack-mcp.post_message    # Ilmoita reviewer:lle

Vaihe 3: Design Memory (15 min)

Suunnittele kolme muistityyppiä Sessio 3:n mallin mukaan:

MuistityyppiMitä tallennetaanHakulogiikka
Working memoryNykyinen plan, observation-listallePidetään RAM:issa per ajo
Episodic memoryAiemmat ajot: "PR #123 katselmointi → 2 issue löytyi → fixed"Hae viimeiset N samalle reviewerille
Knowledge memory (RAG)Spec.md, AGENTS.md, learnings.md, koodausstandarditEmbed → ChromaDB → semanttinen retrieve

Haaste: Mitä RAG:iin?

Päätä tiiminä: mitkä dokumentit kannattaa indeksoida RAG:iin? Vinkki: mieti, mitä reviewer kysyy, kun hän epäilee jotakin.

Vaihe 4: Add Guardrails (10 min)

Guardrail = blokattu kuvio + pysähtymisehto + hyväksyntäportti.

Esimerkki: guardrails PR-agentillepython
GUARDRAILS = {
  # Blokatut kuviot — agentti ei saa ehdottaa näitä
  "blocked_patterns": [
      r"git\s+push\s+--force",
      r"rm\s+-rf",
      r"DROP\s+TABLE",
      r"DELETE\s+FROM\s+users",
  ],
  # Pysähtymisehdot
  "max_iterations": 8,
  "max_token_cost_usd": 1.0,
  "max_wall_time_seconds": 300,
  # Hyväksyntäportit — vaaditaan ihmisen OK
  "require_approval_for": [
      "linear.create_issue",       # Älä spamaa Lineariin
      "slack.post_message",        # Älä spamaa Slackiin
      "git.commit",                # Älä commitoi suoraan
  ],
}

Vaihe 5: Build (40 min)

Aloita gemini_agent.py-pohjasta (löydät sen content/basematerials/session-3-ai-agents/gemini_agent.py-tiedostosta).

Build-tarkistuslista:

  • UI-kerros — Chat- tai CLI-rajapinta, joka näyttää agentin ajattelun + tool-kutsut
  • Agent loop — Observe → Plan → Act → Evaluate → Store
  • Tool registry — Vaiheen 2 työkalut rekisteröity function declarations -muodossa
  • RAG memory — Vaiheen 2 RAG-skill yhdistetty
  • Guardrails — Vaiheen 4 säännöt ajetaan ennen jokaista tool-kutsua
  • Sub-agents (valinnainen) — Delegoi review-task review-agentille, test-task test-agentille
  • Audit trail — Jokainen iteraatio lokitetaan: timestamp, plan, tool, args, result

Pro tip

Älä yritä rakentaa kaikkea kerralla. Ship the smallest thing that works. Saa ensin happy path toimimaan päästä-päähän (yksi PR, yksi tool, ei guardraileja). Lisää sitten yksi kerros kerrallaan: lisää RAG → testaa → lisää guardrails → testaa.

Vaihe 6: Demo (10 min)

Jokainen tiimi näyttää 2 minuutin demon:

  1. Mitä agenttisi tekee? (yhdellä lauseella)
  2. Live-demo — aja agenttia oikealla syötteellä
  3. Mikä yllätti? Mitä opit rakentaessa?

Onnistumiskriteerit

Agenttisi on valmis demoaa, jos:

  • ✅ Se ratkaisee oikean työnkulun loppuun ilman ihmisen interventiota (tai pyytää selkeästi hyväksyntää oikeissa kohdissa)
  • ✅ Audit trail on auditoitavissa — voit selittää, miksi agentti teki kunkin valinnan
  • ✅ Guardrails toimivat — testaa "vaarallisilla" syötteillä ja varmista, että ne blokataan
  • ✅ RAG-memory tuottaa grounded vastauksia — ei hallusinaatioita

Common Pitfalls

PitfallOireKorjaus
Loop ilman pysähtymistäAgentti jumittuuAseta max_iterations ja loki jokainen kierros
Tool-spamAgentti kutsuu samaa toolia uudestaan ja uudestaanLisää muistiin "viimeksi kutsuttu X" -tarkistus
RAG-saastuminenAgentti vastaa epärelevanttiaVähennä retrieve top_k 10 → 3, lisää reranking
Guardrails ohitettuAgentti ehdottaa git push --forceAja regex-tarkistus ENNEN tool-kutsua, ei sen jälkeen
Hidas ensimmäinen callRAG-indeksin latausPre-load embeddings agentin käynnistyksessä

Lähdemateriaalit

  • content/basematerials/session-3-ai-agents/gemini_agent.py — Agenttipohja
  • content/basematerials/session-3-ai-agents/exercises/03-build-agent.md — Yksityiskohtainen ohje
  • content/basematerials/session-3-ai-agents/agents/ — Esimerkkiagentteja eri use caseille

Bonus: Sub-agent delegation

Lisää agenttiisi sub-agent, joka hoitaa yhden vaiheen (esim. test-runner-subagent ajaa testit ja palauttaa pass/fail). Mikä on parent-agent vs sub-agent vastuujako?

Yhteenveto

Olet nyt rakentanut multi-step agentin, jolla on:

  • 🛠️ Toolit — CLI:t ja/tai MCP:t valittu päätöskriteereillä
  • 🧠 Muisti — Working + episodic + RAG-knowledge
  • 🛡️ Guardrailit — Blokatut kuviot, max-iteraatiot, hyväksyntäportit
  • 📋 Audit trail — Jokainen päätös selitettävissä
  • 🤝 Sub-agentit — (Valinnainen) erikoistuneet apurit

Seuraavaksi (Sessio 4): Miten skaalaat tämän tiimitasolle? Miten tehdään useita agentteja, joilla on erilaiset roolit ja policyt? Vastaus: software factories.

Session 3 project → portfolio

Your own AI agent

By the end of Session 3, you have your own AI agent (or a small multi-agent setup), built from the gemini_agent.py base: tools, RAG memory, guardrails. Pick CLI vs MCP for the tool surface — and explain why.

What to capture

GitHub repo, the agent's system prompt, the tool list with your CLI/MCP rationale, and an example successful run. Tags are added automatically.

Add to portfolio

Sign in to track your progress

Sign in

Questions and answers

Sign in to participate in the discussion