Hoppa till innehållet
AI-grafen
EUniversitetLaboration· ca 60 min· sandlåda på servern

Labb: en agentloop med verktyg, budget och spår

Bygga en ReAct-loop (tänk → agera → observera) med två verktyg, ett budgettak och ett spår som går att läsa i efterhand — mot en deterministisk policy i stället för en LLM.

Teori

Agenten väljer varje steg ett verktyg och argument utifrån uppgiften och observationerna hittills, tills den svarar eller budgeten tar slut. Utan stoppvillkor springer den iväg.

Deluppgifter

  1. verktyg — calculator(expr) (bara siffror och + - * / parenteser, annars fel) och lookup(key) mot en liten faktabas.
  2. policy — policy(task, trace) → ('calculator', expr) | ('lookup', key) | ('answer', text) — regelbaserad.
  3. run_agent — run_agent(task, budget) kör loopen, loggar varje steg i trace, stoppar vid answer eller budget → {answer, steps, trace, stopped_by}.

Godkänt när: success >= 0.8

Startkoden

körs i en isolerad sandlåda på servern
import re

FACTS = {"sveriges huvudstad": "Stockholm", "antal planeter": "8", "pi": "3.14159", "ljusets hastighet km/s": "299792"}


def calculator(expr):
    # TODO: tillåt bara [0-9 +-*/(). ]; annars raise ValueError; returnera str(resultat)
    ...


def lookup(key):
    # TODO: FACTS.get(key.lower().strip(), "okänt")
    ...


def policy(task, trace):
    """Regelbaserad 'LLM': bestämmer nästa handling utifrån uppgiften och tidigare observationer."""
    # TODO:
    #  - om senaste observationen finns och uppgiften är ett rent räkneuttryck → ('answer', obs)
    #  - om uppgiften innehåller 'räkna' eller ett uttryck med siffror och operator → ('calculator', uttryck)
    #  - om uppgiften börjar med 'vad är' och matchar en nyckel i FACTS → ('lookup', nyckel), sedan ('answer', obs)
    #  - annars ('answer', 'vet inte')
    ...


def run_agent(task, budget=4):
    trace = []
    # TODO: loop max budget varv: action = policy(task, trace); utför; logga {"action", "arg", "observation"}; answer → return
    ...

Du skriver koden, tester du inte ser avgör om den håller. Skapa ett gratis konto för att köra labben.

Prova diagnosenSkapa konto gratis

Förväntade resultat

≥ 80 % av uppgifterna löses inom 4 steg; en olöslig uppgift stoppas av budgeten med stopped_by='budget'.

Vanliga fel

  • eval() på fritt uttryck — validera tecknen först.
  • Loopen saknar budgetkontroll.
  • Spåret loggar inte observationen.