Fara beint í aðalefni
OpenAI

23. janúar 2026

Verkfræði

Að afhjúpa Codex-fulltrúalykkjuna

Eftir Michael Bolin, meðlim tækniteymisins

Hleður inn...

Codex CLI(opnast í nýjum glugga) er fjölverkvangs staðbundinn hugbúnaðarfulltrúi okkar, hannaður til að skila hágæða og áreiðanlegum hugbúnaðarbreytingum á meðan hann starfar á öruggan og skilvirkan hátt á tölvunni þinni. Við höfum lært gríðarlega mikið um hvernig á að byggja heimsklassa hugbúnaðarfulltrúa frá því að við settum CLI fyrst á markað í apríl. Til að greina þessar innsýnir nánar er þetta fyrsta færsla í áframhaldandi greinaflokki þar sem við munum kanna ýmsa þætti þess hvernig Codex virkar, sem og lærdóma sem hafa kostað sitt. (Fyrir enn ítarlegri sýn á hvernig Codex CLI er byggt, skoðaðu opna geymslu okkar á https://github.com/openai/codex(opnast í nýjum glugga). Mörg af fínni smáatriðum hönnunarákvarðana okkar eru skráð í GitHub-verkefnum og draga beiðnum ef þú vilt fræðast meira.)

Til að byrja með munum við einbeita okkur að fulltrúalykkjunni, sem er kjarnalógíkin í Codex CLI sem ber ábyrgð á að samræma samskiptin milli notandans, líkansins og verkfæranna sem líkanið kallar á til að framkvæma merkingarbæra hugbúnaðarvinnu. Við vonum að þessi færsla gefi þér góða innsýn í hlutverk fulltrúa okkar (eða „umhverfi“) í að nýta LLM.

Áður en við byrjum er hér stutt athugasemd um hugtakanotkun: hjá OpenAI nær „Codex“ yfir safn hugbúnaðarfulltrúa, þar á meðal Codex CLI, Codex Cloud og Codex VS Code-viðbótina. Þessi færsla fjallar um Codex umhverfi, sem veitir kjarna fulltrúalykkjuna og keyrslurökfræðina sem liggja að baki allri Codex-upplifun og eru gerðar aðgengilegar í gegnum Codex CLI. Til einföldunar hér munum við nota hugtökin „Codex“ og „Codex CLI“ jöfnum höndum.

Fulltrúalykkjan

Í hjarta hvers gervigreindarfulltrúa er eitthvað sem kallast „fulltrúalykkjan.“ Einföld myndræn framsetning á fulltrúalykkjunni lítur svona út:

Skýringarmynd með titlinum „Lykkja umboðsmanns“ sem sýnir hvernig gervigreindarkerfi vinnur úr beiðni notanda, kallar á verkfæri, fylgist með niðurstöðum, uppfærir áætlun sína og skilar niðurstöðum. Örvar tengja skref eins og inntak notanda, rök líkans, aðgerðir verkfæra og lokaútkoma.

Til að byrja tekur fulltrúinn inntak frá notandanum til að hafa með í safni textaleiðbeininga sem hann undirbýr fyrir líkanið sem kallast kvaðning.

Næsta skref er að spyrja líkanið með því að senda því leiðbeiningarnar okkar og biðja það um að búa til svar, ferli sem kallast ályktun. Við ályktun er textakvaðningin fyrst þýdd yfir í runu af inntaks tákna(opnast í nýjum glugga)—heiltölum sem vísa inn í orðaforða líkansins. Þessi tákn eru síðan notuð til að keyra líkanið, sem framleiðir nýja röð af úttakstáknum.

Úttaksttákn eru þýddiaftur í texta, sem verður svar líkansins. Þar sem tákn eru framleidd í áföngum getur þessi þýðing átt sér stað á meðan líkanið keyrir, sem er ástæðan fyrir því að mörg forrit byggð á LLM sýna úttak í rauntíma. Í reynd er ályktun venjulega falin á bak við API sem vinnur með texta og felur þannig smáatriði um tókavæðingu.

Sem niðurstaða ályktunarskrefsins annaðhvort (1) gefur líkanið endanlegt svar við upprunalegu inntaki notandans, eða (2) biður um verkfærakall sem gert er ráð fyrir að fulltrúinn framkvæmi (t.d. „keyra ls og skila niðurstöðunni“). Í tilviki (2) framkvæmir fulltrúinn verkfærakallið og bætir úttaki þess við upprunalegu kvaðninguna. Þetta úttak er notað til að búa til nýtt inntak sem er notað til að endurkeyra fyrirspurn á líkanið; fulltrúinn getur þá tekið þessar nýju upplýsingar með í reikninginn og reynt aftur.

Þetta ferli endurtekur sig þar til líkanið hættir að senda út verkfæraköll og í staðinn sendir skilaboð til notandans (kallað aðstoðarskilaboð í OpenAI-líkönum). Í mörgum tilvikum svara þessi skilaboð beint upprunalegri beiðni notandans, en þau geta einnig verið eftirfylgnispurning til hans.

Þar sem fulltrúinn getur framkvæmt verkfæraköll sem breyta staðbundnu umhverfi, er úttak hans ekki takmarkað við skilaboð aðstoðarmannsins. Í mörgum tilvikum er aðalúttak hugbúnaðarfulltrúa kóðinn sem hann skrifar eða breytir á tölvunni þinni. Engu að síður endar hver umferð alltaf með skilaboðum frá aðstoðarmanni—til dæmis „Ég bætti við architecture.md sem þú baðst um“—sem gefur til kynna lokastöðu í fulltrúalykkjunni. Frá sjónarhóli fulltrúans er verki hans lokið og stjórn færist aftur til notandans.

Ferðalagið frá inntaki notanda til svars fulltrúa sem sýnt er á skýringarmyndinni er kallað einn snúningur í samtali (þráður í Codex). Þó að þessi samtalsumferð geti falið í sér margar ítranir á milli líkanálits og verkfærakalla. Í hvert skipti sem þú sendir ný skilaboð í núverandi samtal, er samtalsferillinn innifalinn sem hluti af kvaðningunni fyrir nýja umferð, sem inniheldur skilaboðin og verkfæraköllin úr fyrri umferðum:

Skýringarmynd með titlinum „Margra umferða fulltrúalykkja“ sem sýnir hvernig gervigreindar fulltrúi tekur endurtekið við inntaki notanda, býr til aðgerðir, leitar til verkfæra, uppfærir stöðu og skilar niðurstöðum. Inniheldur merkt skref, örvar og dæmi um úttak verkfæra sem sýna rök fulltrúans.

Þetta þýðir að eftir því sem samtalið vex, lengist einnig kvaðningin sem notuð er til að taka úrtak á líkaninu. Þessi lengd skiptir máli vegna þess að hvert líkan hefur samhengisglugga, sem er hámarksfjöldi tákna sem það getur notað í einu ályktunarkalli. Athugaðu að þessi gluggi inniheldur bæði inntaks og úttakstákn. Eins og þú gætir ímyndað þér, gæti fulltrúi ákveðið að framkvæma hundruð verkfærakalla í einni umferð, sem gæti hugsanlega tæmt samhengisgluggann. Af þessum sökum er stjórnun samhengisglugga ein af mörgum skyldum fulltrúans. Nú skulum við kafa ofan í hvernig Codex keyrir fulltrúalykkjuna.

Ályktun líkansins

Codex CLI sendir HTTP-beiðnir til Responses API(opnast í nýjum glugga) til að framkvæma líkanályktun. Við munum skoða hvernig upplýsingar flæða í gegnum Codex, sem notar Responses API til að knýja fulltrúalykkjuna.

Endapunkturinn fyrir Responses API sem Codex CLI notar er hægt að stilla(opnast í nýjum glugga), svo hægt er að nota hann með hvaða endapunkti sem styður Responses API(opnast í nýjum glugga):

Skoðum hvernig Codex býr til kvaðninguna fyrir fyrsta ályktunarkallið í samtali.

Að búa til upphaflega kvaðningu

Sem endanlegur otandi tilgreinir þú ekki kvaðninguna sem notuð er til að sýna líkanið orðrétt þegar þú sendir fyrirspurn til Responses API. Í staðinn tilgreinir þú ýmsar inntakstegundir sem hluta af fyrirspurninni þinni, og Responses API-þjónninn ákveður hvernig eigi að setja þessar upplýsingar fram í kvaðningu sem líkanið er hannað til að vinna úr. Þú getur hugsað um kvaðninguna sem „lista yfir atriði“; þessi kafli útskýrir hvernig fyrirspurnin þín er breytt í þann lista.

Í upphaflegu kvaðningunni er hvert atriði á listanum tengt við hlutverk. role gefur til kynna hversu mikið vægi tengt efni á að hafa og er eitt af eftirfarandi gildum (í minnkandi forgangsröð): system, developer, user, assistant.

Responses API(opnast í nýjum glugga) tekur við JSON-farmi með mörgum breytum. Við munum einbeita okkur að þessum þremur atriðum:

Í Codex er instructions reiturinn lesinn úr model_instructions_file(opnast í nýjum glugga) í ~/.codex/config.toml, ef það er tilgreint; annars eru base_instructions sem tengjast líkani(opnast í nýjum glugga) sem notað er. Líkansértækar leiðbeiningar eru í Codex repo og eru settar saman í CLI (t.d. gpt-5.2-codex_prompt.md(opnast í nýjum glugga)).

Reiturinn tools er listi yfir verkfæraskilgreiningar sem samræmast skema sem er skilgreint af Responses API. Fyrir Codex felur þetta í sér verkfæri sem eru veitt af Codex CLI, verkfæri sem eru veitt af Responses API sem ættu að vera gerð aðgengileg Codex, sem og verkfæri sem notandinn veitir, yfirleitt í gegnum MCP netþjóna:

JavaScript

1
[
2
// Codex's default shell tool for spawning new processes locally.
3
{
4
"type": "function",
5
"name": "shell",
6
"description": "Runs a shell command and returns its output...",
7
"strict": false,
8
"parameters": {
9
"type": "object",
10
"properties": {
11
"command": {"type": "array", "description": "The command to execute", ...},
12
"workdir": {"description": "The working directory...", ...},
13
"timeout_ms": {"description": "The timeout for the command...", ...},
14
...
15
},
16
"required": ["command"],
17
}
18
}
19

20
// Codex's built-in plan tool.
21
{
22
"type": "function",
23
"name": "update_plan",
24
"description": "Updates the task plan...",
25
"strict": false,
26
"parameters": {
27
"type": "object",
28
"properties": {"plan":..., "explanation":...},
29
"required": ["plan"]
30
}
31
},
32

33
// Web search tool provided by the Responses API.
34
{
35
"type": "web_search",
36
"external_web_access": false
37
},
38

39
// MCP server for getting weather as configured in the
40
// user's ~/.codex/config.toml.
41
{
42
"type": "function",
43
"name": "mcp__weather__get-forecast",
44
"description": "Get weather alerts for a US state",
45
"strict": false,
46
"parameters": {
47
"type": "object",
48
"properties": {"latitude": {...}, "longitude": {...}},
49
"required": ["latitude", "longitude"]
50
}
51
}
52
]

Að lokum er input reiturinn í JSON-farminum listi yfir atriði. Codex setur inn eftirfarandi atriði(opnast í nýjum glugga) í input áður en bætt er við notandaskilaboðinu:

1 Skilaboð með role=developer sem lýsa sandkassanum sem á aðeins við um Codex-útvegaða shell verkfærið sem er skilgreint í tools hlutanum. Það er að segja, önnur verkfæri, eins og þau sem eru veitt af MCP-netþjónum, eru ekki í sandkassa af Codex og bera ábyrgð á að framfylgja eigin öryggisráðstöfunum.

Skilaboðin eru byggð á sniðmáti þar sem lykilhlutar efnisins koma úr Markdown-bútum sem fylgja með Codex CLI, eins og workspace_write.md(opnast í nýjum glugga) og on_request.md(opnast í nýjum glugga):

Ósniðinn texti

1
<permissions instructions>
2
- description of the sandbox explaining file permissions and network access
3
- instructions for when to ask the user for permissions to run a shell command
4
- list of folders writable by Codex, if any
5
</permissions instructions>

2. (Valfrjálst) Skilaboð með role=developer þar sem innihaldið er gildið developer_instructions sem lesið er úr config.toml skrá notandans.

3. (Valfrjálst) Skilaboð með role=user þar sem innihaldið eru „leiðbeiningar notanda“, sem eru ekki sóttar úr einni skrá heldur er safnað saman úr mörgum heimildum(opnast í nýjum glugga). Almennt koma sértækari leiðbeiningar fram síðar:

4. Skilaboð með role=user sem lýsa staðbundnu umhverfi þar sem fulltrúinn starfar núna. Þetta tilgreinir núverandi vinnuskráarslóð og skel notandans(opnast í nýjum glugga):

Ósniðinn texti

1
<environment_context>
2
<cwd>/Users/mbolin/code/codex5</cwd>
3
<shell>zsh</shell>
4
</environment_context>

Þegar Codex hefur lokið öllum ofangreindum útreikningum til að upphafsstilla input, bætir það notandaskilaboðinu við til að hefja samtalið.

Fyrri dæmin lögðu áherslu á innihald hvers skilaboðs, en athugaðu að hver þáttur í input er JSON-hlutur með type, role(opnast í nýjum glugga) og content eins og hér segir:

JSON

1
{
2
"type": "message",
3
"role": "user",
4
"content": [
5
{
6
"type": "input_text",
7
"text": "Add an architecture diagram to the README.md"
8
}
9
]
10
}

Þegar Codex hefur búið til fullan JSON-farm til að senda til Responses API, framkvæmir það HTTP POST beiðni með Authorization haus, allt eftir því hvernig Responses API endapunkturinn er stilltur í ~/.codex/config.toml (viðbótar HTTP-hausar og fyrirspurnarbreytur eru bættar við ef það er tilgreint).

Þegar OpenAI Responses API þjónninn fær beiðnina notar hann JSON til að búa til kvaðningu fyrir líkanið á eftirfarandi hátt (til öryggis gæti sérsniðin útfærsla á Responses API valið aðra leið):

Skýringarmynd sem sýnir eitt skref í lykkju gervigreindarfulltrúa. Beiðni notanda fer inn í líkanið, sem býr til hugsun, aðgerð með nafni verkfæris og inntak fyrir verkfæri. Skýringarmyndin dregur fram þetta millistig rök áður en verkfærið er kallað.

Eins og þú sérð er röð fyrstu þriggja atriðanna í kvaðningunni ákvörðuð af þjóninum, ekki af biðlaranum. Að því sögðu, af þessum þremur atriðum er aðeins efni kerfisskilaboðanna einnig stjórnað af þjóninum, þar sem verkfæri og leiðbeiningar eru ákvörðuð af biðlaranum. Þessu er fylgt eftir með input úr JSON-farminum til að ljúka kvaðningunni.

Nú þegar við höfum kvaðninguna okkar, erum við tilbúin að taka dæmi úr líkaninu.

Fyrsti beygjan

Þessi HTTP-beiðni til Responses API hefur fyrstu „umferð“ samtals í Codex. Netþjónninn svarar með straumi af atburðum sendum frá netþjóni (SSE(opnast í nýjum glugga)). data hvers atburðar er JSON-farmur með "type" sem byrjar á "response", sem gæti verið eitthvað á borð við þetta (heildarlisti yfir atburði er að finna í API-skjölum(opnast í nýjum glugga)):

Ósniðinn texti

1
data: {"type":"response.reasoning_summary_text.delta","delta":"ah ", ...}
2
data: {"type":"response.reasoning_summary_text.delta","delta":"ha!", ...}
3
data: {"type":"response.reasoning_summary_text.done", "item_id":...}
4
data: {"type":"response.output_item.added", "item":{...}}
5
data: {"type":"response.output_text.delta", "delta":"forty-", ...}
6
data: {"type":"response.output_text.delta", "delta":"two!", ...}
7
data: {"type":"response.completed","response":{...}}

Codex tekur við viðburðastraumi(opnast í nýjum glugga) og birtir þá aftur sem innri viðburðahluti sem viðskiptavinur getur notað. Atburðir eins og response.output_text.delta eru notaðir til að styðja við streymi í notendaviðmótinu, á meðan aðrir atburðir eins og response.output_item.added eru umbreyttir í hluti sem eru bættir við input fyrir næstu köll Responses API.

Gerum ráð fyrir að fyrsta beiðnin til Responses API innihaldi tvö response.output_item.done atvik: eitt með type=reasoning og eitt með type=function_call. Þessir atburðir verða að vera tilgreindir í input reitnum í JSON þegar við spyrjum líkanið aftur með svarinu við verkfærakallinu. 

JavaScript

1
[
2
/* ... original 5 items from the input array ... */
3
{
4
"type": "reasoning",
5
"summary": [
6
"type": "summary_text",
7
"text": "**Adding an architecture diagram for README.md**\n\nI need to..."
8
],
9
"encrypted_content": "gAAAAABpaDWNMxMeLw..."
10
},
11
{
12
"type": "function_call",
13
"name": "shell",
14
"arguments": "{\"command\":\"cat README.md\",\"workdir\":\"/Users/mbolin/code/codex5\"}",
15
"call_id": "call_8675309..."
16
},
17
{
18
"type": "function_call_output",
19
"call_id": "call_8675309...",
20
"output": "<p align=\"center\"><code>npm i -g @openai/codex</code>..."
21
}
22
]

Niðurstaðan af kvaðningunni sem notuð er til að taka sýni úr líkaninu í síðari fyrirspurn myndi líta svona út:

Skýringarmynd merkt „Snapshot 2“ sem sýnir gervigreindarfulltrúi eftir verkfærakall. Líkanið tekur við athugun á verkfærum og skapar nýja hugsun og aðgerð. Örvar tengja inntök, athuganir og úttök til að sýna hvernig fulltrúinn endurtekur röklykkju sína.

Sérstaklega skaltu taka eftir því hvernig gamla kvaðningin er nákvæmlega forskeyti nýju kvaðningarinnar. Þetta er viljandi, þar sem þetta gerir síðari beiðnir mun skilvirkari vegna þess að það gerir okkur kleift að nýta kvaðningarskyndiminni (sem við munum ræða í næsta kafla um afköst).

Þegar við lítum til baka á fyrstu skýringarmyndina af fulltrúalykkjunni sjáum við að það gætu verið margar ítranir á milli ályktunar og verkfærakalla. Kvaðningin gæti haldið áfram að vaxa þar til við fáum loks skilaboð frá aðstoðarmanni, sem gefur til kynna að umferðinni sé lokið:

Ósniðinn texti

1
data: {"type":"response.output_text.done","text": "I added a diagram to explain...", ...}
2
data: {"type":"response.completed","response":{...}}

Í Codex CLI birtum við aðstoðarmannsskilaboðin fyrir notandann og beinum athyglinni að ritlinum til að gefa notandanum til kynna að nú sé komið að þeim að halda samtalinu áfram. Ef notandinn svarar, þarf bæði að bæta skilaboðum aðstoðarmannsins frá fyrri umferð og nýjum skilaboðum notandans við input í Responses API-beiðninni til að hefja nýja umferð:

JavaScript

1
[
2
/* ... all items from the last Responses API request ... */
3
{
4
"type": "message",
5
"role": "assistant",
6
"content": [
7
{
8
"type": "output_text",
9
"text": "I added a diagram to explain the client/server architecture."
10
}
11
]
12
},
13
{
14
"type": "message",
15
"role": "user",
16
"content": [
17
{
18
"type": "input_text",
19
"text": "That's not bad, but the diagram is missing the bike shed."
20
}
21
]
22
}
23
]

Aftur, þar sem við höldum áfram samtalinu, eykst lengd input sem við sendum til Responses API stöðugt:

Skýringarmynd merkt „Snapshot 3“ sem sýnir lokastig lykkju gervigreindarfulltrúa. Eftir að hafa fengið niðurstöður verkfæra, býr líkanið til lokahugsun og lokasvar sem er skilað til notandans. Örvar sýna breytinguna frá úttaki verkfæris til fullunnins svars.

Skoðum hvað þessi sífellt vaxandi kvaðning þýðir fyrir frammistöðu.

Atriði sem þarf að hafa í huga varðandi frammistöðu

Þú gætir verið að spyrja sjálfa(n) þig: „Bíddu, er fulltrúalykkjan ekki ferningstengd miðað við magn JSON sem er sent til Responses API yfir gang samtalsins?“ Og þú hefur rétt fyrir þér. Þó að Responses API styðji valfrjálsa previous_response_id(opnast í nýjum glugga) færibreytu til að draga úr þessu vandamáli, notar Codex hana ekki í dag, fyrst og fremst til að halda beiðnum algjörlega ástandslausum og til að styðja við stillingar fyrir engin gögn varðveitt (ZDR).

Að sleppa previous_response_id gerir hlutina einfaldari fyrir þjónustuveitanda Responses API þar sem það tryggir að hver beiðni sé ástandslaus. Þetta gerir það einnig einfalt að styðja við viðskiptavini sem hafa valið Engin gögn varðveitt (ZDR)(opnast í nýjum glugga), þar sem geymsla gagna sem þarf til að styðja previous_response_id myndi stangast á við ZDR. Athugaðu að ZDR-viðskiptavinir missa ekki möguleikann á að njóta góðs af séreignarskilaboðum um rök frá fyrri umferðum, þar sem tengt encrypted_content er hægt að afkóða á þjóninum. (OpenAI varðveitir afkóðunarlykil ZDR-viðskiptavinar, en ekki gögn þeirra.) Skoðaðu PR #642(opnast í nýjum glugga) og #1641(opnast í nýjum glugga) fyrir tengdar breytingar á Codex til að styðja ZDR.

Almennt er kostnaðurinn við að taka sýni úr líkaninu meiri en kostnaðurinn við netumferð, sem gerir sýnatöku að aðalmarkmiði skilvirknivinnu okkar. Þess vegna er skyndiminni fyrir kvaðningar svo mikilvægt, þar sem það gerir okkur kleift að endurnýta útreikninga úr fyrra ályktunarkalli. Þegar við fáum skyndiminnisfund, er úrtaka úr líkaninu línuleg frekar en veldisvísisleg. Skjöl okkar um skyndiminnikvaðningu (opnast í nýjum glugga)útskýrir þetta nánar:

Skyndiminnisfundir eru aðeins mögulegir fyrir nákvæmar forskeytissamsvaranir innan kvaðningar. Til að nýta kosti skyndiminnis, settu kyrrstætt efni eins og leiðbeiningar og dæmi í upphaf kvaðningarinnar og breytilegt efni, svo sem notendasértækar upplýsingar, í lokin. Þetta á einnig við um myndir og verkfæri, sem þurfa að vera eins á milli beiðna.

Með þetta í huga skulum við skoða hvaða tegundir aðgerða gætu valdið „skyndiminnis-missi“ í Codex:

  • Að breyta tools sem eru tiltæk fyrir líkanið á meðan á samtalinu stendur.
  • Að breyta líkan sem er markmið Responses API beiðninnar (í reynd breytir þetta þriðja atriðinu í upprunalegu kvaðningunni, þar sem það inniheldur leiðbeiningar sem eru sértækar fyrir líkanið).
  • Að breyta stillingum sandkassans, samþykkisstillingu eða núverandi vinnuskrá.

Codex-teymið verður að vera vandvirkt þegar nýir eiginleikar eru kynntir í Codex CLI sem gætu haft áhrif á skyndiminni kvaðninga. Sem dæmi kynnti upphaflegur stuðningur okkar við MCP-verkfæri galla þar sem okkur mistókst að telja upp verkfærin í samræmdri röð(opnast í nýjum glugga), sem olli skyndiminnisslysum. Athugaðu að MCP-verkfæri geta verið sérstaklega erfið þar sem MCP-netþjónar geta breytt listanum yfir verkfæri sem þeir bjóða upp á skyndilega með notifications/tools/list_changed(opnast í nýjum glugga) tilkynningu. Að virða þessa tilkynningu í miðju langvarandi samtals getur valdið dýru skyndiminnisbroti.

Þegar mögulegt er, meðhöndlum við stillingabreytingar sem eiga sér stað í miðju samtali með því að bæta nýju skilaboði við input til að endurspegla breytinguna frekar en að breyta eldri skilaboðum:

Við leggjum okkur fram við að tryggja skyndiminnisfundi til að bæta frammistöðu. Það er önnur lykilauðlind sem við verðum að stýra: samhengisglugginn.

Almenn stefna okkar til að forðast að samhengisglugginn klárist er að þjappa samtalinu þegar fjöldi tókar fer yfir ákveðinn þröskuld. Nánar tiltekið skiptum við út input fyrir nýjan, minni lista yfir atriði sem eru dæmigerð fyrir samtalið, sem gerir fulltrúanum kleift að halda áfram með skilning á því sem hefur gerst hingað til. Fyrri útfærsla á þjöppun(opnast í nýjum glugga) krafðist þess að notandi kallaði handvirkt á /compact skipunina, sem myndi senda fyrirspurn til Responses API með því að nota núverandi samtal ásamt sérsniðnum leiðbeiningum fyrir samantekt(opnast í nýjum glugga). Codex notaði skilaboð aðstoðarmannsins sem innihéldu samantektina sem nýtt inntak(opnast í nýjum glugga) fyrir næstu umferðir samtalsins.

Síðan þá hefur Responses API þróast til að styðja sérstakan /responses/compact endapunkt(opnast í nýjum glugga) sem framkvæmir þjöppun á skilvirkari hátt. Það skilar lista yfir atriði(opnast í nýjum glugga) sem hægt er að nota í stað fyrra input til að halda áfram samtalinu á meðan samhengisglugginn er losaður. Þessi listi inniheldur sérstakan type=compaction hlut með ógegnsæjum encrypted_content hlut sem varðveitir leynda skilning líkansins á upprunalega samtalinu. Nú notar Codex sjálfkrafa þennan endapunktinn til að þjappa samtalinu þegar auto_compact_limit(opnast í nýjum glugga) er farið yfir.

Kemur næst

Við höfum kynnt Codex-fulltrúalykkjuna og útskýrt hvernig Codex mótar og stýrir samhengi sínu þegar það spyr líkan. Á leiðinni lögðum við áherslu á hagnýt atriði og bestu starfsvenjur sem eiga við alla sem eru að byggja fulltrúalykkju ofan á Responses API.

Þótt fulltrúalykkjan leggi grunninn að Codex, er það aðeins upphafið. Í komandi færslum munum við kafa í högun CLI, kanna hvernig notkun verkfæra er útfærð og skoða nánar sandkassalíkan Codex.

Höfundur

Michael Bolin

Þakkir

Sérstakar þakkir til alls teymisins sem smíðaði Codex CLI.