Přeskočit na obsah
U sebe doma 4 min čtení

Ollama vrací Codexu shrnutí konverzace jako prostý JSON v poli encrypted_content

Testovací verze Ollamy 0.34.0 přidává do rozhraní kompatibilního s OpenAI koncový bod /v1/responses/compact a rozumí spouštěči kompakce, který Codex posílá na konci vstupu. Shrnutí dělá tentýž model, který obsluhuje konverzaci; když se mu zadání nevejde do kontextu, Ollama ubere pětinu nejstarších záznamů a zkusí to znovu.

Stacionární lis na odpad u lesní cesty
Kompakce dělá s dlouhou konverzací totéž, co lis s odpadem: nechá jen to, co se vejde. Foto: Only in Oregon, Wikimedia Commons (CC BY 2.0)

Rozhraní Responses od OpenAI umí zkrátit dlouhou konverzaci na shrnutí. Klient buď pošle v požadavku klíč context_management s prahem compact_threshold a server shrne historii sám, jakmile práh překročí, nebo zavolá samostatný koncový bod /responses/compact a dostane zpět nové, kratší okno. V obou případech se v odpovědi objeví položka typu compaction s polem encrypted_content, o kterém průvodce OpenAI píše, že je neprůhledné a není určené k lidskému čtení. Codex na tom staví: práh si nastavuje klíčem model_auto_compact_token_limit a o jeho experimentální správě kontextu jsme už psali.

Kdo Codex provozuje nad vlastním modelem přes Ollamu, narážel na to, že její server takový požadavek neznal. Mění to testovací verze Ollama 0.34.0. V poznámkách k vydání je to půl věty o „kompakci odpovědí“, v kódu jsou to tři sloučené návrhy změn ze 4., 5. a 8. září. Vydání je na GitHubu dál označené jako předběžné: značka v0.34.0 ukazuje na tentýž commit jako pátý kandidát v0.34.0-rc5 z 9. září a stránka dokumentace o kompatibilitě s OpenAI o kompakci k 10. září mlčí.

Dva vstupy, jeden shrnovací dotaz

Návrh #18224 přidal cestu POST /v1/responses/compact a k běžné cestě /v1/responses mezivrstvu, která hlídá poslední položku vstupu. Když je to compaction_trigger, tedy spouštěč, který podle dokumentace OpenAI musí stát na konci vstupu a který podle komentáře v kódu posílají dnešní verze Codexu, požadavek se do modelu nedostane a místo něj běží kompakce. Obyčejný požadavek projde beze změny.

Shrnutí nedělá žádný zvláštní model, ale ten, který klient v požadavku uvedl. Ollama mu pošle systémový pokyn, ať konverzaci shrne „pro jiného programovacího agenta“ a zachová cíl, rozhodnutí, omezení, stav repozitáře, změněné soubory, výsledky testů, selhání, rozdělanou práci a další kroky. Odpověď si vynutí voláním nástroje create_summary se dvěma parametry: textem shrnutí a seznamem retain_item_ids, tedy položek, které mají zůstat doslova, protože se nedají bezpečně přeformulovat. Volání nástrojů a jejich výsledky model přepisovat nesmí; pokyn je označuje za stav běhu.

Pole encrypted_content nese prostý JSON

Výsledek se vrátí ve stejném tvaru, jaký by poslal server OpenAI: položka compaction s polem encrypted_content. Zatímco u OpenAI je obsah šifrovaný, Ollama do něj vloží čitelný JSON s typem ollama_compaction, číslem verze 1, textem shrnutí a seznamem zachovaných zpráv. Komentář v kódu to říká natvrdo: obsah není šifrovaný a Ollama ho musí zpracovat dřív, než jde další požadavek do modelu. Když se taková položka objeví v dalším vstupu, mezivrstva ji rozbalí na falešné volání nástroje ollama_compaction_summary, jehož výstupem je shrnutí, a za něj připojí zachované zprávy. Položku od jiného serveru odmítne s chybou, že obsah není její.

Pro spojení s lokálním serverem na tom nezáleží: touž cestou chodí v otevřené podobě i celá konverzace. Rozdíl je jinde. U OpenAI umí položku rozbalit jen server, který ji vydal, u Ollamy si ji přečte kdokoli, komu ji klient pošle.

Když se nevejde ani shrnutí

Shrnovací dotaz nese celý přepis, takže se do kontextu modelu vejde hůř než původní konverzace. První verze na to odpověď neměla a klient podle popisu návrhu opakoval pořád touž příliš dlouhou historii. Návrh #18324 z 8. září přidal jeden pokus navíc: když model vrátí chybu context_length_exceeded nebo hlášku „The prompt is too long“, Ollama vyřadí nejstarší odstranitelné položky v objemu zhruba pětiny přepisu a dotaz zopakuje. Odstranitelné jsou zprávy asistenta a dvojice dokončeného volání nástroje s jeho výsledkem; zprávy uživatele, pokyny, starší shrnutí, poslední položka a rozdělaná volání nástrojů zůstávají. Kolik položek vypadlo, se model dozví z varování v promptu a totéž varování pak stojí na začátku shrnutí.

Pětina se počítá z délky serializovaného textu, ne z tokenů; komentář v kódu to sám označuje za náhradní odhad. Vedle toho zůstává poznámka, že cíl zachovat 40 % kontextu se má vynucovat až tehdy, kdy bude po ruce rozpočet tokenů zvoleného modelu. Dohromady jsou pokusy nejvýš tři: první dotaz, jeden po přetečení a jeden na opravu nevalidního shrnutí. Když ani pak model nevrátí použitelné volání create_summary, Ollama odpoví chybou compaction_failed a původní konverzaci nechá, jak byla.

Obrázky projdou, odkazy na soubory ne

Třetí návrh, #18245, se týká obrázků. Původní kód zachované položky s obrázkem odmítal větou, že nejsou podporované. Teď je posílá shrnovacímu modelu jako bloky input_image vložené přímo do dat ve formátech JPEG, PNG a WebP a stejně je vrací v zachovaných zprávách. Obrázek zadaný jen odkazem file_id kompakce v Ollamě nepřijme.

Co zůstává jen na serveru OpenAI

Serverovou kompakci podle prahu Ollama nezavedla: řetězce context_management ani compact_threshold se ve zdrojích značky v0.34.0 nevyskytují. Funguje jen spouštěč na konci vstupu a samostatný koncový bod, tedy to, co používá Codex. V témže vydání přibylo i vyhledávání nástrojů na straně klienta; obojí stojí v poznámkách k vydání až za hlavní novinkou, za modely Ollamy v ChatGPT Desktopu.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. U sebe doma

    Ollama pozastavila převod starších modelů, po kterém zabíraly na disku dvojnásobek

    Ollama 0.40 začala bez ohlášení přepisovat starší stažené modely do tvaru, který llama.cpp přečte bez záplat, a původní soubor nechávala vedle jako zálohu. Převedené…

  2. U sebe doma

    DGX Spark se 64 GB má poloviční paměť, ale stejnou propustnost 273 GB/s

    Nvidia nabízí DGX Spark se 64 GB od 23. října přes šest výrobců za 4 999 dolarů, o čtvrtinu dráž, než loni stála verze se 128 GB. Ta mezitím podražila na 6 950 dolarů.…

  3. U sebe doma

    Nejstahovanější převod modelu Clef do GGUF nemá rozhodovací hlavu

    Cloudflare zveřejnil 30. září rozhodovací modely Clef a Clef-Flash, které místo textu vracejí pravděpodobnosti voleb. Počítá je zvláštní hlava se 128 miliony parametrů.…

  4. U sebe doma

    Ternární Bonsai 2 vyšel v baleních, která přečte jen fork llama.cpp

    Prism ML vydal druhou generaci svého ternárního přebalení modelu Qwen3.8-27B: 5,95 GB proti 53,8 GB u souboru v F16. Oba zveřejněné soubory ale nesou typy tenzorů, které…