Adatok feltárása tartós kernelben
Ez az útmutató bemutatja, hogyan érheti el, hogy egy ügynök egyszer betöltsön valami költséges dolgot, majd több kérdést is feltegyen róla, ahelyett hogy minden kérdésnél megfizetné a betöltés árát.
Az eval eszköz egy tartós értelmezőt futtat. A változók, az importok és a betöltött adatok megmaradnak a hívások között.
Miért nem futtatni egyszerűen egy szkriptet
Szekció neve “Miért nem futtatni egyszerűen egy szkriptet”Egy egyszeri python -c minden kérdésnél kifizeti az előkészítést. Egy dataframe betöltése másodpercekbe és száz megabájtba kerül; a diagrammá alakítása milliszekundumokba. Ha minden kérdés a betöltésbe kerül, az ügynök kevesebb kérdést tesz fel, mint amennyit kellene — és minden válasz szövegként jön vissza, amelyet aztán újra fel kell dolgoznia.
Egyszer betölteni, aztán kérdezni
Szekció neve “Egyszer betölteni, aztán kérdezni”Töltse be a
data/runs.csvfájlt, és mondja meg az ügynökönkénti p95 időtartamot.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Az utolsó kifejezés ugyanúgy visszhangzik, ahogy egy notebook teszi, így a len(runs) print nélkül is megadja a sorok számát.
Aztán egy külön hívásban:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()A runs még mindig be van töltve. A pandas frame nem repr formájában, hanem táblázatként renderelve jön vissza.
A diagramok a csevegésben jelennek meg
Szekció neve “A diagramok a csevegésben jelennek meg”import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Az ábrák a cella után rögzítésre kerülnek, és képként jönnek vissza, amelyeket az átirat megjelenít. Ön látja a diagramot; az ügynök is.
Az ábrák a rögzítés után bezáródnak. Egy össze nem gyűjtött ábrát a következő cella is újrarajzolna és újra elküldene, így egy ötcellás munkamenet ötször küldené el az első diagramot.
Azok az idiómák, amelyeket egyébként is beírna
Szekció neve “Azok az idiómák, amelyeket egyébként is beírna”Ezeket a rendszer egyszerű kódra írja át, ahelyett hogy hibát adna:
| Amit beír | Mi történik |
|---|---|
%pip install x |
Lefuttatja a pipet, majd törli a modulgyorsítótárat, hogy a következő import lássa |
%cd path |
os.chdir |
!command |
Egy rögzített alfolyamat |
%%bash |
A cella hátralévő része shellszkriptként |
%%timeit |
1000 időzített futás |
A %pip gyorsítótár-ürítése a lényeges: egy már importált modul esetében a futó értelmezőbe telepítés nem tesz semmit, így enélkül nem az imént telepített verzió fut.
Saját eszközök hívása a cellán belülről
Szekció neve “Saját eszközök hívása a cellán belülről”paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...A tool(name, args) visszalép az ügynök saját eszközregiszterébe. Ez azt jelenti, hogy egy cella szétágazhat akár száz fájlra, vagy a task-on keresztül delegálhat, anélkül hogy a modell tételenként egy-egy kört költene.
A hídon átmenő hívás felfüggeszti a cella időtúllépését, amíg az függőben van. A keret a tétlenséget méri, nem a falióra szerinti időt — egy cella, amely alügynökökre ágazik szét, és négy percig vár, nem akadt meg, és a szétágazás közbeni leállítása a teljes kernel állapotát elveszítené.
Újrakezdés
Szekció neve “Újrakezdés”eval(code: "…", reset: true, description: "Start a clean interpreter")Eldobja az értelmezőt, és egy tisztát indít. Minden betöltött dolog eltűnik — éppen ez a lényeg.
Hol fut a kernel
Szekció neve “Hol fut a kernel”A beszélgetés elszigetelt környezetében, ha van neki ilyen, egyébként a gazdagépen.
Egy tartós értelmező, amelyet egy nem megbízható repót olvasó modell vezérel, pontosan az az eset, amelyre a kizárólag elszigetelt környezetben való végrehajtás létezik: egy egyszeri bash hívás legalább véget ér, a kernel viszont egy emlékező shell.
Ehhez nem indít elszigetelt környezetet — ugyanaz a szabály, amely megakadályozza, hogy egy állomásfül automatikusan elinduljon. Ha azt szeretné, hogy a kernel elszigetelt környezetben fusson, először nyissa meg a beszélgetés shelljét. Lásd: Tesztgép adása egy ügynöknek.
Korlátok
Szekció neve “Korlátok”- Kernelenként egyszerre egy cella. Két cella versengése egy értelmezőben két program két fele, egyetlen névtérben összefonva.
- A kimenet korlátozott. Egy nyomtatási ciklusban lévő cella csonkolva lesz, ahelyett hogy megtölthetné a kontextusablakot.
- Cellánként négy kép. Egy ábrázolási ciklus iterációnként egy ábrát bocsáthat ki, és minden kép nagy, fix költséget jelent abban a kérésben, amely szállítja.
- A kernel a futtatással együtt hal meg. Az, amelyik a beszélgetés befejeződése után is fogva tart egy dataframe-et, szivárgás.
Kapcsolódó
Szekció neve “Kapcsolódó”- Homokozó és biztonság — mit jelent itt az „elszigetelt”
- Tesztgép adása egy ügynöknek — az elszigetelt környezet megnyitása
- Beépített ügynökeszközök — az argumentumok