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

    llama.cpp sloučil pro DeepSeek V4 zhruba 137 uzlů do jednoho spuštění

    Backend Vulkan v llama.cpp dostal tři sloučené operace pro hyperpropojení DeepSeeku V4. Při dekódování na Strix Halo naměřil autor změny 16,77 místo 11,16 tokenu za…

  2. U sebe doma

    llama.cpp počítal u sedmi architektur normalizaci jinak než jejich referenční kód

    Vektory dotazů a klíčů v hybridní vrstvě Gated DeltaNet dělil llama.cpp odmocninou ořezanou zdola, kdežto knihovna, ke které se jejich referenční kód hlásí, k té…

  3. U sebe doma

    llama.cpp nechá některé velké vkládací tabulky na disku místo v operační paměti

    Projekt llama.cpp vydal 4. září 2026 verzi 0.4.0 s volbou --lazy-mode: vybraná vkládací tabulka zůstane v souboru na disku a program z ní čte řádky až ve chvíli, kdy je…

  4. U sebe doma

    Ollama 0.33.3 čte doporučené hodnoty vzorkování přímo ze souboru modelu

    Ollama do teď používala vlastní výchozí teplotu a top_p vždycky, když je nepřepsal Modelfile nebo požadavek. Verze 0.33.3 z 2. září 2026 se nejdřív podívá, co si o sobě…