Skip to content

Blog

prof. Jiří Horáček o stavu duševního zdraví v České republice

Jsme nešťastní, říká nový ředitel Národního ústavu duševního zdraví: Podle slov prof. Horáčka je situace je vážná a volá po koordinované akci. Hlavní důvody jsou podle něj 3:

  1. Za posledních 20 let přichází jedna krize za druhou: migrace, finanční krize, válka (na Ukrajině), covid.
  2. Žijeme převážně v digitálním světě, který má svá specifika a složitosti světa výrazně amplifikuje.
  3. Posledních 20 let jsme v geopolitické válce s Ruskem, které se snaží štěpit západní společnosti a tím posílit svoji pozici a vliv.

Všechny 3 body se mi zdají dost propojené a navzájem se negativně posilují. Vezměme si, jak se za poslední cca 20 let změnil přístup ke zprávám a zpravodajství. Dříve bývalo zvykem si dopoledne přečíst noviny, večer v osm se podívat zprávy, sem tam na nějaký související pořad, a to bylo vše. Dnesní zpravodajství (někdo ho dokonce nazývá "infotainment", neboli zabavení se zprávami) se vyznačuje neustálým proudem nových a nových informací, detailů, pitvání událostí "minutu po minutě", dostupných 24 hodin denně, 7 dní v týdnu, ihned po ruce. Dokonce nám můžou chodit notifikace, že se něco důležitého stalo a musíme to rychle zkontrolovat. A tím, jak je řada zpráv podbarvena strachem, strašením a pocitem ohrožení, máme přirozeně tendenci jim věnovat více a více pozornosti.

Prof. Horáček říká, že lidská psychika zatím není adaptovaná na život v digitálním světě, a proto je buď potřeba se přizpůsobit, nebo digitální svět regulovat.

Seberegulace je první skupina, to co můžeme udělat my, každý z nás, hned, ode dneška, od těďka. Třeba vypínat [telefon], koukat se chvilku do zeleně místo do obrazovky. To myslím zcela vážně. Je jasně prokázáno, že v okruhu asi 3 kilometrů množství zeleně se kterou se setkáváme má pozitivní a profylaktický efekt na deprese a úzkosti. Takto se prostě musíme naučit žít a tím vykompenzovat ten složitý svět.

Claude Code přes LiteLLM

Nedávno jsme s pomocí kolegů z e-INFRA CZ rozjeli univerzitní instanci LiteLLM ve funkci AI API Gateway. Dají se tak poskytovat různé modely generativní AI přes API. Návod v dokumentaci LiteLLM je vcelku přímočary, nicméně jsem narazil na pár detailů.

Aby bylo možné používat Claude Code bez předplatného, je potřeba nastavit následující proměnné prostředí:

export ANTHROPIC_AUTH_TOKEN="<GATEWAY-API-KEY>"
export ANTHROPIC_BASE_URL="<GATEWAY-URL>"

Vytvořil jsem si virtuální API klíč, který může volat všechny modely od Anthropic jako anthropic/*, což je jednodužší, než každý model přidávat manuálně. Jednotlivé modely je pak nutné volat např. jako anthropic/claude-sonnet-4-5-20250929. Nestačí jen claude-sonnet-4-5-20250929, což je defaultní chování Claude Code a vrátí se tím pádem error, že model nebyl na gateway nalezen. Vyřešit se to dá buď explicitním nastavením modelu přes přepínač:

claude --model anthropic/claude-sonnet-4-5-20250929l

Nebo pohodlně přes příslušnou proměnnou prostředí. Model pak není třeba uvádět.

export ANTHROPIC_MODEL="anthropic/claude-sonnet-4-5-20250929"

Poznámka

Nově používám Fish shell, a nastavení těchto proměnných persistentním způsobem (obdobou záznamu v .bashrc) mi dalo trochu zabrat. Fish je velmi ergonomický, nicméně některé věci jsou oproti Bashi celkem nezvyk. Pomohl mi opět Claude:

set -Ux ANTHROPIC_AUTH_TOKEN <GATEWAY-API-KEY>
set -Ux ANTHROPIC_BASE_URL <GATEWAY-URL>
set -Ux ANTHROPIC_MODEL anthropic/claude-sonnet-4-5-20250929

Hotnoty proměných se uloží a následně exportují ze souboru .config/fish/fish_variables.

AI asistent v Open WebUI

Update: Optimálnější řešení s pomocí Claude Code a Agent Skills popisuji v novém článku.

Množství příspěvků na mém blogu utěšeně roste a začíná dávat smysl je seskupovat pomocí tagů. Zároveň si říkám, že vymýšlení tagů je přesně úkol pro nějaký jazykový model: předhodit mu text článku a nechat si tagy vygenerovat, alespoň jako návrh. Z pohledu konzistentnosti by bylo zároveň dobré modelu poskytnout i seznam již existujících tagů, aby se jich držel a negeneroval nové varianty téhož (např. ai-tutor, ai-tutors, ai-tutoring apod.).

Toto se dá jistě vyřešit pomocí jednoduchého skriptu do příkazové řádky, nicméně mě napadlo vytvořit si takového asistenta v Open WebUI, které slouží jako webové rozhraní pro náš univerzitní AI Sandbox. Asistenti (podobní GPTs v ChatGPT; v Open WebUI nesou označení Models) mohou volat nástroje (Tools) implementované jako třídy v programovacím jazyce Python. Níže je příklad nástroje pro získání aktuálního data a času:

import datetime

class Tools:
    def __init__(self):
        pass

    def get_current_time(self) -> str:
        """Get the current time in a more human-readable format."""

        now = datetime.now()
        current_time = now.strftime("%I:%M:%S %p")  # Using 12-hour format with AM/PM
        current_date = now.strftime("%A, %B %d, %Y")  # Full weekday, month name, day, and year

        return f"Current Date and Time = {current_date}, {current_time}"

Asistent si pak může dostupné nástroje volat sám.

AI a velká očekávání (2)

Well, the types of computers we have today are tools. They’re responders: you ask a computer to do something and it will do it. The next stage is going to be computers as “agents.” In other words, it will be as if there’s a little person inside that box who starts to anticipate what you want. Rather than help you, it will start to guide you through large amounts of information. It will almost be like you have a little friend inside that box. I think the computer as an agent will start to mature in the late '80s, early '90s.
-- Steve Jobs, 1984 interview (via)

Stanford CS221 AI tutoring

Stanford CS221 Autumn 2025 (via): Studenti jsou v rámci hodnocených úkolů motivováni využít interaktivní AI tutory (viz níže). (Mimochodem, netriviálním problémem této pomůcky je ověření, že AI tutor je skutečně pedagogicky užitečný. V tomto případě student přikládá odkaz na celou konverzaci.)

Learn basic NumPy operations with an AI tutor! Use an AI chatbot (e.g., ChatGPT, Claude, Gemini, or Stanford AI Playground) to teach yourself how to do basic vector and matrix operations in NumPy (import numpy as np). AI tutors have become exceptionally good at creating interactive tutorials, and this year in CS221, we're testing how they can help you learn fundamentals more interactively than traditional static exercises.

AI a velká očekávání (1)

From the beginning, AI researchers were not shy about making predictions of their comming successes. The following statement by Herbert Simon in 1957 is often quoted:

It is not my aim to surprise or shock you - but the simplest way I can summarize is to say that there are now in the world machines that think, that learn and that create. Moreover, their ability to do these things is going to increase rapidly until - in a visible future - the range of problems they can handle will be coextensive with the range to which the human mind ha been applied.

The term "visible future" is vague, but Simon also made more concrete predictions: that within 10 years a computer would be chess champion and a significant mathematical theorem would be proved by machine. These predictions came true (or approximately true) within 40 years rather than 10. Simon's overconfidence was due to the promising performance of early AI systems on simple examples. In almost all cases, however, these early systems failed on more difficult problems.
-- Artificial Intelligence: A Modern Approach (4th Edition) (1.3.3 A dose of reality (1966-1973))

Brains and Computers

Brains and digital computers have somewhat different properties. [...] computers have a cycle time that is a million times faster than a brain. The brain makes up for that with far more storage and interconnection than even a high-end personal computer, although the largest supercomputers match the brain on some metrics. Futurists make much of these numbers, [...] But the comparisons of raw numbers are not especially informative. Even with a computer of virtually unlimited capacity, we still require further conceptual breakthroughs in our understanding of intelligence. [...] Crudely put, without the right theory, faster machines just give you the wrong answer faster.
-- Artificial Intelligence: A Modern Approach (4th Edition) (1.2.4 Neuroscience)

Intelligence Augmentation

Doug Endelbart, one of the pioneers of [human-computer interaction] championed the idea of intelligence augmentation - IA rather then AI. He believed that computers should augment human abilities rather than automate away human tasks. In 1968, Engelbart's "mother of all demos" showed off for the first time the computer mouse, a windowing system, hypertext, and video conferencing - all in an effort fot demonstrate what human knowledge workers could collectively accomplish with some intelligence augmentation.
-- Artificial Intelligence: A Modern Approach (4th Edition) (1.2.5 Neuroscience)

Aspekty osobního účetnictvi

Osobní účetnictví je v podstatě monitoring pro kritickou oblast jménem osobní finance, která ovlivňuje řadu dalších životních oblastí, hladinu stresu apod. Umožňuje vyvozovat závěry a klást si otázky: "Tady něco chybí.", "Tahle výše výdajů je neudržitelná.", "Jak lépe alokovat tyhle prostředky?". Osobní účetnictví ze mě boháče neudělá, na druhou stranu mi ale pomáhá vidět varovné signály, rizika i příležitosti. Pomáhá mi být aktivní a díky tomu zažívat větší finanční pohodu.

Volitional Muscles

[...] You learn best and most effectively when you are learning something that you care about. Your work becomes meaningful and something you can be proud of only when you have chosen it for yourself. This is why our second self-directive is to build your volitional muscles. Your volition is your ability to make decisions and act on them. To set your own goals, choose your own path, and decide what matters to you. Like physical muscles, you build your volitional muscles by exercising them, and in doing so you can increase your sense of what’s possible.

LLMs are good at giving fast answers. They’re not good at knowing what questions you care about, or which answers are meaningful. Only you can do that. You should use AI-powered tools to complement or increase your agency, not replace it.
-- Recurse Center: Our position on AI (via)

Limity programování s asistencí AI

Nedávno jsem psal o tom, jak se díky nástupu jazykových modelů postupně mění role vývojáře. Jon Gjengset, autor knihy Rust for Rustaceans, nabízí pohled na jeden z limitů, na které umělá intelince, resp. algoritmy strojového učení, naráží (viz jeho lednové Q&A (zvýraznění níže je moje)):

I think in particular where [machine learning] works really well is when you have either pattern matching or pattern recognition, where you have a lot of data to source those patterns from. So I don’t generally think of machine learning as being smart. I think of it as being really good at spotting patterns that people have seen before, or replicating patterns that have been seen before. And that could include combining patterns in—let’s call them—novel ways, but at least combining them in some way that might appear novel.

I think there are a number of maybe surprising areas where this works really well. One of them is code generation. I don’t use it a lot for my coding, and there are a couple of reasons for that, but one that I’ve touched on in the past is that the code I tend to write now, and the code I was writing at AWS, and the code I was writing during my PhD, was not very standard, for lack of a better word. Like, most of the code—it is unclear if anyone had written quite that code before. That’s not the case for a lot of software development.

Upgrade blogu pomocí Material for MkDocs

Jak už jsem psal dříve, Simon Willison mě inspiroval začít psát blog. Jelikož jsem si nebyl jistý, jestli u toho dlouhodobě vydržím, snažil jsem se celou akci maximálně zjednodušit. Pro hosting jsem využil GitHub Pages, protože jsou zdarma, a dokáží pěkně vyrendrovat obyčejný Markdown. Není tedy třeba psát žádný HTML kód, řešit šablony apod. Člověk se může hned soustředit na psaní a na celý blog ve finále stačí README.md.

Zároveň jsem v té době řešil problém se svým CVčkem: měl jsem ho sice pěkně vysázené pomocí Scribusu (open-source obdoba Adobe InDesign), ale upravovat ten dokument byla docela pruda. Hodil by se mi nějaký formát - obyčejný texťák, který by šel snadno verzovat, a zároveň by vypadal slušně při tisku. Zde se opět osvědčil Markdown, který je navíc v souladu s filozofií, že soubor je víc než aplikace. Do hlavičky blogu mi tedy přibyl odkaz na cv.md, které jde pomocí webového prohlížeče snadno převést do PDF i vytisknout. Skvělé.

Jak se ale blog začal rozrůstat, bylo na čase začít řešit jednotný vzhled stránek, prolinkování, tvorbu náhledů, tagování apod. Při hraní si s knihovnou Textual (tvorba sofistikovaných TUI) jsem narazil na jejich blog, který využívá Material for MkDocs.

Měnící se role vývojáře

V diskusích z vývojáři občas zaznívá, že se místo psaní kódu stávají spíše 'prompt operátory'. Níže přidávám několik souvisejících postřehů z blogu Simona Willisona. Případná zvýraznění jsou ode mě.

Nejprve komentář k odporu zaměstanců Amazonu více využívat generativní AI:

“It’s more fun to write code than to read code,” said Simon Willison, an A.I. fan who is a longtime programmer and blogger, channeling the objections of other programmers. “If you’re told you have to do a code review, it’s never a fun part of the job. When you’re working with these tools, it’s most of the job.” [...]

It took me about 15 years of my career before I got over my dislike of reading code written by other people. It's a difficult skill to develop! I'm not surprised that a lot of people dislike AI-assisted programming paradigm when the end result is less time writing, more time reading!

“If you’re a prototyper, this is a gift from heaven,” Mr. Willison said. “You can knock something out that illustrates the idea.”

Rapid prototyping has been a key skill of mine for a long time. I love being able to bring half-baked illustrative prototypes of ideas to a meeting - my experience is that the quality of conversation goes up by an order of magnitude as a result of having something concrete for people to talk about.

These days I can vibe code a prototype in single digit minutes.
-- Simon Willison

Využít vibe coding k prototypování mi přijde jako skvělý nápad. Myslím, že jedním z důvodů, proč lidé tuto možnost nevidí, a automaticky jej zavrhují, je jakási nejasnost nebo zmatení pojmů. Dokonce jsem se setkal s názorem (na konferenci o generativní AI ve vzdělávání), že vibe coding je nebezpečný, protože vede k nasazování software s potenciálními bezpečnostními chybami, klidně i na produkci. Když jsem se snažil vysvětlit, že jej přece můžu využít jen na rychlou tvorbu prototypů, kde jsou rizika minimální, bylo mi odpovězeno, že to není vibe coding. Myslím, že jakékoliv diskusi týkající se umělé inteligence by hodně pomohlo nejprve si ujasnit pojmy, abychom si rozuměli.

Systém je důležitější než model

The first observation is really that language models are awesome, but often they're only 20% of a much bigger system. If you have an Enterprise AI deployment, usually that means it's a RAG system. [...] RAG is really kind of the standard way that you get generative AI to work on your data.

What happens very often these days is a new language model comes out, and everybody goes, "Whoa, new language model, it's great!" Everybody starts to think just about the language model, but very few people actually think about the system around the language model. That system needs to solve the problem. You can have a relatively mediocre language model but an amazing RAG pipeline around it, and that's going to be much better than an amazing language model with a terrible RAG pipeline around it.

The basic observation here or the lesson is that you should be thinking about systems, not about models. The model is only a small part of the system, and the system is the thing that solves the problem.
-- Douwe Kiela: "RAG Agents in Prod: 10 Lessons We Learned"

Chatbot jako partner při čtení

How I use LLMs: Andrej Karpathy mě inspiroval využít chatbota jako partnera/pomocníka při čtení nějakého složitějšího textu. Důležité je nespoléhat na znalosti daného modelu, ale poskytnout mu kontext, např. uvést, co čtu a rovnou poskytnout text konkrétní kapitoly. V tomto případě jsem se pustil do knihy The Intelligent Investor od Benjamina Grahama, která mi dlouhodobě odolávala. (Text knihy není volně k dispozici. Na druhou stranu, knihu jsem si koupil a společnost Anthropic tvrdí, že v rámci předplatného Claude Pro své modely na vstupech netrénuje, takže, pragmaticky, v tom až takový nevidím problém.)

Některá místa 50 let starého textu nejsou snadná na porozumění. Chatbot může dodat dobový kontext nebo varianty vysvětlení. Hodně mi pomáhá možnost se na různé věci doptávat, nebo se na obsah podívat z jiného úhlu. Např. jsem Clauda (3.7, extended thinking) požádal, aby zkusil aplikovat principy inteligentního investování (v protikladu k emočnímu, impulzivnímu spekulování) na oblast vzdělání a osobního rozvoje:

Prompt (v rámci delší konverzace):

Let's consider [the concept of] tangible-asset value and margin of safety when investing into non-financial stuff, like education. For example, I'm considering an investment of my time and effort into the area of artificial intelligence. Can you find any paralels?