Koko historia tarvitaan
Jokainen pyyntö sisältää koko keskustelun.
Koko historia tarvitaan on ilmainen Claude Architect-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Claude Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Claude Architect-kurssilla on yhteensä 4 oppituntia.
Malli ei säilytä tilaa
Claude API:n tärkein ominaisuus on tämä: malli on tilaton. Se ei muista mitään pyyntöjen välillä. Anthropicin puolella ei ole piilotettua istuntoa, joka säilyttäisi aiemmat viestinne.
Aina kun kutsutte API:a, lähetätte koko keskusteluhistorian messages-taulukossa. Jos jokin tieto ei ole kyseisessä taulukossa, malli ei yksinkertaisesti tiedä sitä — vaikka se olisi kertonut saman tiedon teille kolmekymmentä sekuntia aiemmin.
Claude Certified Architectille tämän sisäistäminen muuttaa tapaa, jolla suunnittelette jokaisen monivaiheisen järjestelmän, agenttisilmukan ja usean agentin välisen siirron.
Pyynnön rakenne
Claude API -pyyntö sisältää kiinteän joukon kenttiä. Näihin koskette jokaisella vuorolla:
model— kutsuttava Claude-mallimax_tokens— tulosteen budjettisystem— järjestelmäkehote (ohjeet, persoona, säännöt)messages— koko keskusteluhistoria rooli- ja sisältöobjektien taulukkonatoolsjatool_choice— valinnaiset työkalumääritykset ja valinnan ohjaus
Huomaatte, mitä tästä EI löydy: minkäänlaista keskustelutunnistetta tai istuntotunnusta. Tila säilyy kokonaan siinä, mitä te lähetätte uudelleen.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="You are a concise travel assistant.",
messages=[
{"role": "user", "content": "I want to visit Japan in spring."}
],
)Historia-taulukon rakentaminen
Jatkaaksenne keskustelua ette "vastaa" istunnolle — lisäätte mallin edellisen vastauksen ja uuden käyttäjävuoron samaan messages-luetteloon ja lähetätte sitten koko luettelon uudelleen.
Toimintamalli on tämä: ottakaa edellisen vuoron messages, lisätkää avustajan vastaus, lisätkää uusi käyttäjäviesti ja kutsukaa uudelleen. Taulukko kasvaa jokaisen keskusteluvuoron myötä.
messages = [
{"role": "user", "content": "I want to visit Japan in spring."},
{"role": "assistant", "content": "Great — cherry blossom season peaks in early April."},
{"role": "user", "content": "What about the weather then?"},
]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages, # full history, every turn
)Mitä tapahtuu, jos unohdatte
Oletetaan, että lähetätte vain uusimman käyttäjäviestin — "What about the weather then?" — ja poistatte aiemmat vuorot. Mallilla ei ole mitään käsitystä siitä, mihin "sitten" viittaa tai että Japani olisi koskaan mainittu.
Se joko pyytää tarkennusta tai keksii kontekstin. Tämä on yleisin syy virheille, joissa "botti unohti, mistä puhuimme". Ratkaisu ei koskaan ole kehotejuju — ratkaisu on koko historian lähettäminen uudelleen.
Myös työkalutulokset ovat osa historiaa
Historia ei koostu vain käyttäjän ja avustajan tekstistä. Kun malli kutsuu työkalua, keskustelu jatkuu jäsenneltyinä vuoroina:
- avustajan vuoro, joka sisältää
tool_use-lohkon - käyttäjän vuoro, joka sisältää vastaavan
tool_result-lohkon
Työkalutulos on lisättävä takaisin messages-luetteloon ja kaikki on lähetettävä uudelleen. Malli "näkee" työkalun tulosteen vain siksi, että se on nyt osana mukana kuljettamaanne historiaa.
messages.append({"role": "assistant", "content": response.content}) # has tool_use
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": tool_use_id,
"content": "Tokyo, April: ~15C, mild, occasional rain.",
}],
})
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=messages, # history now includes the tool_result
)Agenttisilmukka kuljettaa historiaa mukanaan
Siksi agenttisilmukka toimii tällä tavalla. Jokaisella iteraatiolla lähetätte pyynnön, tarkistatte stop_reason-arvon, ja jos se on tool_use, suoritatte työkalut, lisäätte tulokset historiaan ja jatkatte silmukkaa — kunnes stop_reason on end_turn.
Silmukka on pohjimmiltaan historian kerryttämiseen perustuva silmukka. Lopettakaa stop_reason-arvon perusteella, ÄLKÄÄ etsimällä tekstistä sanoja kuten "done". Iteraatioiden enimmäismäärä on turvaverkko, ei ensisijainen lopetusmekanismi.
while True:
response = client.messages.create(
model="claude-sonnet-4-5", max_tokens=1024,
tools=tools, messages=messages,
)
if response.stop_reason == "tool_use":
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": run_tools(response)})
continue # resend the FULL grown history
break # end_turn -> doneAlagentit EIVÄT peri historiaa
Tässä on usean agentin järjestelmän sudenkuoppa. Keskusohjain delegoi työtehtäviä al agenteille Task-kutsuilla. Alagentti saa kuitenkin uuden keskustelun — se EI peri keskusohjaimen viestihistoriaa.
Jos alagentti tarvitsee asiakkaan tunnisteen, tilausnumeron tai aiemman havainnon, keskusohjaimen on välitettävä se nimenomaisesti alagentin kehotteessa. Perinnän olettaminen johtaa varmasti epäonnistumiseen: alagentti toimii sokeana.
Kontekstin välittäminen nimenomaisesti
Koska tila ei ole jaettu, keskusohjaimen tehtäviin kuuluu oikean kontekstin paketoiminen jokaiseen delegointiin. Antakaa alagentille täsmälleen se, mitä se tarvitsee toimiakseen — ei enempää (vähimpien oikeuksien periaate koskee myös kontekstia).
Useat Task-kutsut yhdessä vastauksessa suoritetaan rinnakkain, ja jokainen niistä on itsenäinen toimeksianto. Käsitelkää jokaista alagentin kehotetta täydellisenä, itsenäisenä pyyntönä.
subagent_prompt = f"""
You are researching flight options.
Context (you have no other history):
- Destination: Tokyo, Japan
- Travel window: early April 2026
- Origin: Istanbul (IST)
Return the 3 cheapest round-trip options with dates and prices.
"""
# Coordinator allowedTools must include "Task".
# Subagent starts with a blank message history -> context must be inline.Historia kasvaa — ja niin kasvavat kustannuksetkin
Kaiken lähettämisellä uudelleen on seuraus: jokaisella vuorolla koko historia tokenisoidaan uudelleen. Pitkät keskustelut tarkoittavat suurempia, hitaampia ja kalliimpia pyyntöjä, ja lopulta konteksti-ikkuna täyttyy.
Arkkitehtitason luotettavuustyössä on kyse tämän kasvun hallinnasta tarkkuutta menettämättä:
- Tiivistä työkalujen pitkät tulosteet ennen niiden lisäämistä ja säilytä vain olennaiset kentät.
- Progressiivinen tiivistäminen pakkaa vanhoja vuoroja — mutta varokaa: se tekee luvuista, prosenttiosuuksista ja päivämääristä epämääräisiä.
Säilyttäkää tapahtumatiedot sanatarkkoina
Epämääräisten yhteenvetojen ratkaisu on poimia kovat faktat — tilaus-tunnisteet, summat, päivämäärät ja varmennetut henkilöllisyydet — erilliseen sanatarkkana säilytettävään tapausfaktalohkoon yhteenvedon ulkopuolelle. Tiivistäkää keskustelu, älkää koskaan lukuja.
Huomioikaa myös lost-in-the-middle: mallit kiinnittävät eniten huomiota kontekstin alkuun ja loppuun. Sijoittakaa tärkeimmät faktat ja nykyinen ohje kohtiin, joissa ne huomataan, älkää hautako niitä pitkän historian keskelle.
messages = [
{"role": "user", "content":
"CASE FACTS (verbatim):\n"
"- Order #A-4471, total $129.00, placed 2026-03-02\n"
"- Customer verified: ID CUST-8830\n\n"
"CONVERSATION SUMMARY:\n"
"Customer reported a late delivery and requested options."
},
{"role": "user", "content": "Now: can you process a partial refund?"},
]Istuntoja voi jatkaa — työkalutulokset saattavat olla vanhentuneita
Claude Code säilyttää historian istuntojen välillä: --resume <name> jatkaa nimettyä istuntoa ja fork_session luo haaran jaetusta kohdasta. Tämä on kätevää — mutta kokeessa on syytä muistaa seuraava varoitus.
Jatkettujen istuntojen työkalutulokset voivat olla vanhentuneita, jos koodikanta on muuttunut niiden tallentamisen jälkeen. Vanhan historian kuljettaminen eteenpäin ei aina ole oikein; joskus uusi istunto, jolle annetaan selkeä ja jäsennelty yhteenveto, on parempi kuin vanhentuneen kontekstin toistaminen.
# Continue a prior named session (history reloaded)
claude --resume refactor-auth
# Branch from a shared point without polluting the original
# fork_session -> new line of exploration from the same basePikatarkistus: unohteleva alagentti
Skenaario, joka testaa tämän oppitunnin keskeistä päätöstä.
Kertaus: koko historia vaaditaan
Painakaa nämä mieleen koetta ja todellisia järjestelmiä varten:
- Malli on tilaton; jokaisen pyynnön on sisällettävä koko
messages-historia. - Työkalukutsut laajentavat historiaa — lisätkää jokainen
tool_resultja lähettäkää kaikki uudelleen. - Agenttisilmukka kerryttää historiaa; lopettakaa
stop_reason-arvon perusteella, ei jäsennetyn tekstin perusteella. - Alagentit eivät peri keskusohjaimen historiaa — välittäkää kaikki konteksti nimenomaisesti jokaisessa kehotteessa.
- Historia kasvaa: tiivistäkää pitkät työkalutulosteet ja vanhat vuorot, mutta säilyttäkää tapahtumatiedot sanatarkkoina ja huomioikaa lost-in-the-middle.
- Jatkettuihin istuntoihin voi liittyä vanhentuneita työkalutuloksia — joskus uusi istunto selkeällä yhteenvedolla on parempi.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 26
- Oppitunnit
- 104
Usein kysytyt kysymykset
Onko oppitunti ”Koko historia tarvitaan” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Claude Architect-oppimispolun 3 oppituntia, myös oppitunnin “Koko historia tarvitaan”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Claude Architect-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Koko historia tarvitaan”?
Jokainen pyyntö sisältää koko keskustelun. Harjoittelet Claude Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Claude Architect-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Claude Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Koko historia tarvitaan”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Claude Architect-oppitunnilla?
Kyllä. Jokainen Claude Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Koko historia tarvitaan
- Progressiivisen yhteenvedon riskit
- Keskelle katoamisen vaikutus
- Tapausfaktat ja tulosteen karsiminen