Context Engineering: Nová disciplína, která mění pravidla AI
Jak jsem se naučil, že úspěch AI aplikací nezávisí na dokonalém promptu, ale na tom, co model "vidí" kolem něj
Před třemi lety jsem trávil hodiny ladění promptů. Psal jsem stránkové instrukce, experimentoval s různými formulacemi, testoval desítky variant. A přesto můj AI asistent zapomínal klíčové informace z předchozích konverzací, můj kódovací pomocník ztrácel přehled o architektuře projektu a RAG systém nedokázal propojit souvislosti napříč dokumenty.
Pak jsem pochopil zásadní věc: problém nebyl v tom, jak jsem se modelu ptal, ale v tom, co všechno model věděl v okamžiku, kdy odpovídal. Objevil jsem context engineering – disciplínu, která překračuje hranice prompt engineeringu a mění celou hru.
Proč prompt engineering přestal stačit
Když poprvé otevřete ChatGPT, připadá vám to jednoduché: napíšete otázku, dostanete odpověď. Jenže reality produkčních AI aplikací je jiná. Představte si, že stavíte AI asistenta pro zákaznický servis. Potřebuje:
- Znát historii všech předchozích interakcí s klientem
- Mít přístup k aktuálním informacím o produktech
- Rozumět firemním procesům a pravidlům
- Pamatovat si kontext celé konverzace
- Umět zavolat externí API pro ověření dat
Žádný prompt, ať je sebevíc dokonalý, to sám nezvládne. Potřebujete systém, který modelu poskytne správný kontext ve správný čas. To je podstata context engineeringu.
Co je context engineering v praxi
Context engineering je disciplína navrhování a budování systémů, které orchestrují všechny informace, nástroje a paměť potřebné k tomu, aby AI dokázala řešit složité, real-world úkoly.
Nejde jen o prompt. Jde o celý informační ekosystém kolem modelu.
Reálný příklad z mé praxe
Nedávno jsem stavěl AI asistenta pro právní kancelář. Klasický přístup by byl:
Jsi právní expert. Odpovídej na otázky klientů o smluvním právu.
Context engineering přístup vypadal takto:
1. Systémový kontext:
Role: Senior právní poradce specializující se na obchodní právo
Firma: [název], 15 let praxe, focus na SaaS a tech startupy
Regulatory environment: České právo, EU regulace
2. Dynamický retrieval:
# Při každé otázce systém:
query = user_question
relevant_cases = vector_search(query, case_database)
current_legislation = api_call("legal_updates", query)
client_history = get_client_context(client_id)
firm_templates = search_templates(query)
3. Paměťový systém:
# Kontext se skládal z:
- Dlouhodobé paměti klienta (preference, předchozí případy)
- Krátkodobé paměti konverzace (co už probrali dnes)
- Faktual knowledge base (zákony, judikáty)
- Tool access (kalkulačky poplatků, termíny soudů)
- Meta-context (urgence, složitost případu)
Výsledek? Místo obecných právních rad model poskytoval konkrétní doporučení založená na historii klienta, aktuální legislativě a firemních postupech.
Anatomie profesionálního context systému
1. Multi-layer memory architecture
Immediate context - co model "vidí" právě teď:
- Aktuální prompt a konverzace
- Výsledky z právě provedených nástrojů
- Dočasný stav úkolu
Session memory - co si pamatuje během práce:
- Historie kroků a rozhodnutí
- Předchozí výsledky a chyby
- Evoluce strategie řešení
Long-term memory - trvalé znalosti:
- User profily a preference
- Learnt patterns a insights
- Firemní knowledge base
2. Intelligent retrieval orchestration
Nejsložitější část. Systém musí v real-time rozhodnout:
- Které dokumenty jsou relevantní
- Jaké externí API zavolat
- Kolik kontextu použít (token limits)
- V jakém pořadí informace poskytovat
Můj workflow:
def build_context(user_query, session_state):
# 1. Analýza query
intent = classify_intent(user_query)
entities = extract_entities(user_query)
# 2. Multi-source retrieval
docs = semantic_search(user_query, weight=0.4)
tools = suggest_tools(intent, weight=0.3)
memory = get_relevant_memory(session_state, weight=0.3)
# 3. Context assembly
context = assemble_context(
system_prompt=get_system_prompt(intent),
retrieved_docs=docs[:5], # Top 5 to stay within limits
available_tools=tools,
conversation_memory=memory,
user_profile=get_user_context()
)
return context
3. Dynamic context optimization
Context není statický. Mění se podle:
Task complexity - složité úkoly potřebují víc kontextu
User expertise - expert vs. beginner potřebuje jiné informace
Performance feedback - učení se z úspěchů a chyb
Resource constraints - tokens, latency, costs
Praktické techniky z praxe
Context Layering
Místo jednoho obřího promptu stavím kontext po vrstvách:
# Layer 1: Core identity
system_role = """
Senior business analyst s 10+ lety zkušeností
Specializace: SaaS metriky, customer analytics
Styl: Data-driven, konkrétní doporučení
"""
# Layer 2: Current task context
task_context = f"""
Aktuální projekt: {project_name}
Deadline: {deadline}
Stakeholders: {stakeholder_list}
Previous insights: {session_memory}
"""
# Layer 3: Dynamic information
dynamic_context = f"""
Relevantní data: {retrieved_data}
Dostupné nástroje: {available_tools}
Aktuální metrics: {live_metrics}
"""
Context Chaining
Pro komplexní úkoly rozdělím práci do kroků, kde výstup jednoho kroku se stává kontextem pro další:
# Krok 1: Analýza problému
problem_analysis = llm_call(
context=base_context + user_problem,
task="Analyzuj problém a identifikuj klíčové otázky"
)
# Krok 2: Sběr dat s kontextem z kroku 1
data_context = base_context + problem_analysis
retrieved_data = gather_data(problem_analysis.key_questions)
# Krok 3: Řešení s full kontextem
solution = llm_call(
context=data_context + retrieved_data,
task="Navrhni řešení založené na analýze a datech"
)
Adaptive Context Compression
Když se blížím k token limitu, používám kompresní strategie:
def compress_context(context_items, max_tokens):
if calculate_tokens(context_items) <= max_tokens:
return context_items
# Prioritizace podle důležitosti
prioritized = rank_by_relevance(context_items)
# Postupná komprese
compressed = []
token_budget = max_tokens
for item in prioritized:
if item.type == "critical":
compressed.append(item) # Vždy zahrnout
elif item.type == "supporting":
if token_budget > estimate_tokens(item):
compressed.append(summarize(item)) # Komprese
return compressed
Časté problémy a jejich řešení
Context Poisoning
Problém: Chyba se dostane do kontextu a pak se propaguje dál.
Řešení z praxe:
def validate_context(context_item):
# Fact-checking pro kritické informace
if context_item.type == "factual":
confidence = fact_check(context_item.content)
if confidence < 0.8:
context_item.add_disclaimer("Unverified information")
# Timestamp check pro časově citlivé info
if context_item.age > MAX_STALENESS:
refresh_data(context_item)
return context_item
Context Overload
Problém: Příliš mnoho informací rozptyluje model.
Mé řešení:
- Používám "attention hints" - explicitně říkám, na co se zaměřit
- Strukturuji kontext hierarchicky (nejdůležitější nahoře)
- Implementuji "context budgeting" - každý typ info má limit
context_budget = {
"system_instructions": 500, # tokens
"user_input": 1000,
"retrieved_docs": 2000,
"tool_outputs": 1500,
"memory": 1000
}
Tool Confusion
Problém: Model si vybírá špatné nástroje.
Moje strategie:
def smart_tool_selection(user_intent, available_tools):
# Jen relevantní nástroje pro daný typ úkolu
if user_intent == "data_analysis":
return [tools.python_executor, tools.data_visualizer]
elif user_intent == "web_research":
return [tools.web_search, tools.summarizer]
# Nikdy nedávat všechny nástroje najednou
return filter_tools_by_relevance(available_tools, max_count=5)
Frameworky a nástroje
LangChain/LangGraph
Skvělé pro orchestraci workflows, ale pozor na over-engineering:
from langgraph import StateGraph
# Definuji workflow s explicitním context flow
workflow = StateGraph()
workflow.add_node("analyze", analyze_with_context)
workflow.add_node("retrieve", smart_retrieval)
workflow.add_node("synthesize", synthesize_response)
# Context se propaguje mezi kroky
workflow.add_edge("analyze", "retrieve")
workflow.add_edge("retrieve", "synthesize")
LlamaIndex
Exceluje v knowledge management:
from llama_index import VectorStoreIndex, ContextBuilder
# Automatické budování kontextu
context_builder = ContextBuilder()
context_builder.add_memory_layer(user_profile)
context_builder.add_retrieval_layer(document_index)
context_builder.add_tool_layer(available_functions)
Anthropic MCP
Nejnovější standard pro propojení AI s externí systémy:
# MCP server pro firemní data
mcp_server = MCPServer()
mcp_server.register_resource("customer_db", CustomerDatabase())
mcp_server.register_tool("send_email", EmailTool())
# AI má strukturovaný přístup k firemním systémům
Budoucnost context engineeringu
Vidím tři hlavní trendy:
1. Automated Context Assembly
AI začíná samo rozpoznávat, jaký kontext potřebuje. Experiments s "self-reflective agents" ukazují zajímavé výsledky.
2. Multi-Modal Context Integration
Kombinace textu, obrázků, audio, video do jednotného kontextu. Pracuji na projektu, kde AI analyzuje video cally a extrahuje kontext pro další rozhodnutí.
3. Collaborative Context Networks
Více AI agentů sdílí kontext a buduje kolektivní "paměť" týmu.
Co si odnést domů
Context engineering není jen technická disciplína – je to nový způsob myšlení o AI aplikacích. Moje klíčová doporučení:
1. Začněte s auditem kontextu
Podívejte se na vaše současné AI aplikace. Co všechno model "nevidí", ale měl by?
2. Investujte do memory systémů
Dlouhodobá paměť je game-changer. AI, které si pamatuje vaše preference a zkušenosti, je kvalitativně jiné.
3. Experimentujte s context compression
Naučte se čistit a komprimovat kontext. Méně může být více.
4. Měřte context effectiveness
Trackujte, které části kontextu model skutečně používá. Optimalizujte na základě dat.
5. Myslĕte systémově
Context engineering je systémová disciplína. Nejde o izolované prompty, ale o architekturu informačních toků.
A především: context engineering je budoucnost AI aplikací. Kdo ho zvládne dřív, získá obrovskou výhodu.
Po několika letech experimentování s LLM si myslím, že context engineering je nejdůležitější skill pro AI builders. Není to jen o tom dát modelu správné informace – je to o pochopení toho, jak AI "myslí" a jak navrhnout systémy, které s tímto myšlením spolupracují. Je to fascinující kombinace software architecture, cognitive science a trochy magie.
![]()






