Utforsk data i en vedvarende kernel
Denne veiledningen viser hvordan du lar en agent laste inn noe dyrt én gang og deretter stille flere spørsmål til det, i stedet for å betale for innlastingen ved hvert spørsmål.
eval-verktøyet kjører en vedvarende tolk. Variabler, importer og innlastet data overlever mellom kall.
Hvorfor ikke bare kjøre et skript
Seksjon med tittelen «Hvorfor ikke bare kjøre et skript»Et engangs python -c betaler oppsettet ved hvert spørsmål. Å laste inn et dataframe tar sekunder og hundre megabyte; å lage et diagram av det tar millisekunder. Når hvert spørsmål koster innlastingen, stiller agenten færre spørsmål enn den burde — og hvert svar kommer tilbake som tekst den deretter må tolke på nytt.
Last inn én gang, og spør deretter
Seksjon med tittelen «Last inn én gang, og spør deretter»Last inn
data/runs.csvog fortell meg p95-varigheten per agent.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Det siste uttrykket ekkoes slik en notatbok gjør, så len(runs) rapporterer antall rader uten en print.
Deretter, i et eget kall:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()runs er fortsatt lastet inn. Et pandas-dataframe kommer tilbake som en tabell i stedet for som en repr.
Diagrammer havner i samtalen
Seksjon med tittelen «Diagrammer havner i samtalen»import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Figurer fanges opp etter cellen og returneres som bilder, som transkriptet viser. Du ser diagrammet; det gjør agenten også.
Figurer lukkes etter at de er fanget opp. En figur som ikke blir samlet opp, ville blitt tegnet og sendt på nytt av den neste cellen også, så en økt på fem celler ville sendt det første diagrammet fem ganger.
Idiomene du uansett ville skrevet
Seksjon med tittelen «Idiomene du uansett ville skrevet»Disse skrives om til ren kode i stedet for å gi feil:
| Du skriver | Hva som skjer |
|---|---|
%pip install x |
Kjører pip og tømmer deretter modulcachen, slik at neste import ser den |
%cd path |
os.chdir |
!command |
En delprosess der utdataene fanges opp |
%%bash |
Resten av cellen som et skallskript |
%%timeit |
1000 tidsmålte kjøringer |
Det er tømmingen av modulcachen for %pip som betyr noe: å installere i en levende tolk gjør ingenting for en modul som allerede er importert, så uten den er ikke versjonen du nettopp installerte, den som kjører.
Kalle dine egne verktøy fra innsiden av en celle
Seksjon med tittelen «Kalle dine egne verktøy fra innsiden av en celle»paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...tool(name, args) går inn i agentens eget verktøyregister på nytt. Det betyr at en celle kan spre seg over hundre filer, eller delegere via task, uten at modellen bruker en tur per element.
Et brokall setter cellens tidsavbrudd på pause så lenge det pågår. Budsjettet måler inaktivitet, ikke reell tid — en celle som sprer seg ut til underagenter og venter i fire minutter, henger ikke, og å drepe den midt i utsendelsen ville miste hele tilstanden i kernelen.
Starte på nytt
Seksjon med tittelen «Starte på nytt»eval(code: "…", reset: true, description: "Start a clean interpreter")Forkaster tolken og starter en ren en. Alt som er lastet inn, er borte, og det er poenget.
Hvor kernelen kjører
Seksjon med tittelen «Hvor kernelen kjører»I samtalens isolerte miljø når den har ett, ellers på vertsmaskinen.
En vedvarende tolk drevet av en modell som leser et repo du ikke stoler på, er nettopp det kjøring kun i isolert miljø er til for: et engangs bash-kall tar i det minste slutt, mens en kernel er et skall som husker.
Den starter ikke et isolert miljø for å komme dit — den samme regelen som hindrer at en stasjonsfane starter av seg selv. Hvis du vil at kernelen skal kjøre isolert, åpner du skallet i samtalen først. Se Gi en agent en maskin å teste på.
Begrensninger
Seksjon med tittelen «Begrensninger»- Én celle om gangen per kernel. To celler som kappes i én tolk, er to halvdeler av to programmer flettet sammen i ett navnerom.
- Utdataene er begrenset. En celle i en utskriftsløkke avkortes i stedet for å få fylle kontekstvinduet.
- Fire bilder per celle. En plotteløkke kan sende ut en figur per iterasjon, og hvert bilde er en stor fast kostnad i forespørselen som bærer det.
- Kernelen dør med kjøringen. En som fortsatt holder på et dataframe etter at samtalen er avsluttet, er en lekkasje.
Relatert
Seksjon med tittelen «Relatert»- Sandkasse og sikkerhet — hva «isolert» betyr her
- Gi en agent en maskin å teste på — åpne det isolerte miljøet
- Innebygde agentverktøy — argumentene