Zlepšuje Context7 výstupy AI nástrojů pro vývojáře?

ilustracni obrazek

Myšlenka je zhruba následující: Nástroje poháněné velkými jazykovými modely dostanou kontext v podobě příslušné dokumentace. Jimi generovaný kód pak bude kvalitnější. Bude obsahovat méně neaktuálních využití dotyčných jazyků, frameworků či knihoven. Zmizí neexistující knihovny, třídy, metody a funkce, které nezřídka bývají součástí nabízených řešení. Výsledek bude ještě lepší, když Context7 dostane konkrétní informaci, ze které dokumentace má čerpat.

Je to jasné jak facka - není důvod, aby to fungovalo jinak. Tak si neztrácejme čas a všichni si Context7 přidejme mezi MCP servery svých oblíbených AI nástrojů (viz dokumentaci). Nebo to tak jednoznačné není?

Informace k mému skromnému testu

  • Možná bych raději vybral TypeScript pro širší adopci a větší podobnost s ostatními rozšířenými C-like jazyky. Nicméně zrovna jsem měl k dispozici PHP + Symfony + Doctrine ORM projekt, který má dostatečně velkou codebase, a zároveň mě napadlo lehce pochopitelné zadání (pro LLM i čtenáře). Je realizovatelné formou vytvoření jednoho souboru bez zásahu do dalších - jinak by se výsledky testů daly obtížně prezentovat na GitHubu a také porovnávat mezi sebou. Úspěšné splnění zároveň vyžaduje orientaci v projektu. Úkol se blíží něčemu, co by skutečně mohlo být potřeba.
    Dle mého názoru to má podstatně větší vypovídací hodnotu, než kdybych nechal AI nástroje na zelené louce programovat piškvorky.
  • Test rozhodně není všeobjímající - zabývá se jedním use-case v nástrojích JetBrains AI Assistant, Gemini CLI a Junie ve spojení s několika modely. Už i v této podobě byl poměrně časově náročný. De facto primárně posloužil k mému vlastnímu rozhodnutí, zda Context7 budu používat.

Pár slov ke koncepci článku

Článek v běžné délce s popisem celého průběhu testu a hodnocení všech výsledků by nikdo nečetl. Výjimky by si ho nechaly shrnout svým oblíbeným jazykovým modelem. Rozhodl jsem se tedy ušetřit lidskou práci i výpočetní výkon a článek rovnou pojmout formou shrnutí.

K čemu jsem došel?

TL;DR: Předpoklad se nepotvrdil. Co se týče aktuálních modelů významných hráčů, výsledky se zapojením Context7 byly naopak horší. O lepším výsledku lze hovořit u nejstaršího dostupného modelu.

V případě ještě menších lokálně provozovaných modelů by mohl být pozitivní efekt Context7 ještě větší.

Výsledky by mohly být jiné, pokud by se místo rozšířených frameworků Symfony a Doctrine ORM jednalo o něco okrajovějšího. Nějaké pozitivní ohlasy v tomto duchu jsem už někde četl.

V žádném případě nechci vynášet paušální verdikt ve smyslu, že nástroj Context7 není užitečný. Jen se zkrátka neosvědčil v podmínkách, které jsou blízké mému běžnému využití AI nástrojů.

Prompt

  1. Vytvor mi (nejlepe v ShopBundle) Symfony command, ktery bude mazat vice nez mesic stare nakupni kosiky (entita Cart).
  2. Vytvor mi (nejlepe v ShopBundle) Symfony command, ktery bude mazat vice nez mesic stare nakupni kosiky (entita Cart). use context7
  3.  Shodný s předchozím, pouze byl Context7 nasměrován přímo na symfony-docs.

Pozn.: Dalo by se namítnout, že by prompt mohl být podrobnější, specifičtější, preciznější atd. Jenže požadovaného výsledku lze dosáhnout vygenerováním boilerplate kódu non-AI nástrojem Symfony Maker v pžíkazové řádce (případně díky Symfony pluginu i volbou v IDE) a jeho úpravami v řádu minut. AI generování tedy může přinést užitek pouze v případě, že se prompt prostě napíše a odpálí.

Generovaná řešení

Jediného výsledku, se kterým jsem byl spokojen, se (možná překvapivě) dobralo Gemini CLI s modelem Gemini 2.5 Pro - ale pouze bez Context7. Kód odpovídal aktuální dokumentaci (jednodušší a přehlednější zápis), ale především jeho jádro spočívalo v následujícím SQL dotazu sestaveném pomocí QueryBuilderu:

$qb->delete(Cart::class, 'c')
    ->where('c.updatedAt < :date')
    ->setParameter('date', $oneMonthAgo);

Ještě jsem něco podobného v o něco krkolomnější podobě viděl v řešení od Junie s Claude 4 Sonnet - opět pouze bez použití Context7.

Ostatní řešení (nevyjímaje to od 2.5 Pro ve spojení s Context7) se točila kolem vyselektování do pole ORM entit a následného procházení foreach cyklem. Zejména v případě opravdu velkého množství "opuštěných" košíků by tedy druhý způsob byl poměrně zatěžující.

Rozhodně bych z toho ale nevyvozoval nějaké pořadí použitelnosti jednotlivých modelů - to vůbec není účelem testu. Často vidím GPT-5 jít nad rámec přímého splnění instrukcí, dalo by se říct až přemýšlet za programátora. Někdy může být užitečné zjistit, že přání úplně nekoresponduje s tím, co člověk opravdu potřebuje. V tomto případě nevyžádané rozšiřující featury vypadaly spíš jako pokus mě přechytračit a ospravedlnit ten foreach.

Co se ale týče výsledků stejného nástroje se stejným modelem, výsledky s použitím Context7 byly horší než bez něho. To platilo pro segment aktuálních předních modelů od Googlu, OpenAI a Anthropicu.
Když jsem šel směrem dolů, až u modelu Gemini 2.0 Flash Lite (tedy staršího a ještě výrazně odlehčeného) se s Context7 ukázalo naopak viditelné zlepšení. Toto byl nejnižší model, se kterým se mi podařilo přimět k funkčnosti aspoň Gemini CLI. Do věcí jako instalace ještě menšího lokálního modelu a napojování na AI Assistant jsem se pouštět nechtěl - vložená energie by značně převážila nad hodnotou zjištění.

Přesné nasměrování Context7 na symfony-docs vedlo u vyšších modelů k dalšímu zhoršení výsledků. U modelu 2.0 Flash Lite pak obrátilo pozitivní efekt Context7 v pravý opak.

Je důležité zmínit, že v rámci JetBrains AI Assistant model Gemini 2.5 Pro fungoval v době mého testování (14.9. 2025) dost nestandardně. Tehdy byl v PhpStormu označen jako Beta a odpovědi byly ve srovnání s běžným fungováním 2.5 Pro příliš rychlé a nekvalitní. Naproti tomu například v Android Studiu označení Beta nebylo a model fungoval adekvátním způsobem. Aktuálně označení Beta nenajdete ani v PhpStormu a fungování již modelu 2.5 Pro odpovídá.


Jednotlivá řešení lze najít v repozitáři na GitHubu: https://github.com/petrspevak/context7_test


Anglická verze článku: Does Context7 improve the output of AI tools for developers?

 

Publikováno 20. 9. 2025