Siirry sisältöön

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
Edistynyt
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-vinkki

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-vinkki

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-vinkki

Ä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.

Sessio 3: lisää projekti portfolioon

Oma AI-agentti

Sessio 3 päätteeksi sinulla on oma AI-agentti tai pieni multi-agentti-järjestelmä, jonka rakensit gemini_agent.py-pohjasta: työkalut, RAG-muisti ja guardrailit. Valitse CLI- tai MCP-rajapinta — ja perustele valintasi.

Mitä tallennat

GitHub-repo, agentin system prompt, lista työkaluista ja perustelu CLI/MCP-valinnalle sekä esimerkki onnistuneesta ajosta. Tagit lisätään automaattisesti.

Lisää portfolioon

Kirjaudu seurataksesi edistymistäsi

Kirjaudu sisään

Kysymykset ja vastaukset

Kirjaudu sisään osallistuaksesi keskusteluun