Не само текст
Досега изпращахме на модела текст и получавахме текст. Но същите модели, които ползвахте в уроци 19 и 20, приемат и изображения, звук и видео. Снимка на бележка с домашно, аудиозапис на урок, екранна снимка на грешка — всичко това може да е вход в промпта.
Мултимодален модел (multimodal)
Модел, който работи с повече от един вид данни — например текст и изображение в един и същ промпт. Вътре всичко се превръща в токени (урок 16): изображението също се нарязва на парчета и получава номера.
| Вход | Изход | Пример за употреба |
|---|---|---|
| текст | текст | въпрос → отговор; текст → JSON (урок 20) |
| изображение + текст | текст | „Какво пише на тази табела?“, описание на снимка, четене на таблица от екран |
| звук + текст | текст | запис на разговор → протокол; диктовка |
| текст | изображение | илюстрация по описание (отделни модели за генериране) |
| текст | звук | синтез на реч — четене на текст на глас |
Изображение към модела от Python
Изображението се отваря с библиотеката PIL (Pillow, има я в Colab) и се подава в списък заедно с въпроса:
from PIL import Image
img = Image.open("snimka.jpg")
otgovor = client.models.generate_content(
model="gemini-2.5-flash",
contents=[img, "Опиши какво виждаш с две изречения на български."],
)
print(otgovor.text)В какво е добър и в какво не
- Добър: общо описание на сцена, четене на печатен и четлив ръкописен текст, разпознаване на обичайни предмети, обяснение на диаграма или екранна снимка.
- Несигурен: точен брой на много еднакви обекти, дребен текст, точни координати („на колко сантиметра“), фини детайли.
- Както при текста — може да „види“ нещо, което го няма. Отговорът се проверява.
Външни API: идеята на REST
Моделът е затворен в текста си: не знае колко е часът, какво е времето, какво има в календара ви. Но програмата ви може да го разбере — от друга услуга по мрежата — и да му го подаде. Повечето такива услуги говорят по един и същ начин.
REST API
Услуга, при която програмата изпраща HTTP заявка към адрес с параметри и получава отговор, обикновено JSON. Същото, което прави браузърът, когато отваря страница — само че отговорът е данни, а не HTML.
Пример без ключ и без регистрация — прогнозата за времето от Open-Meteo. Параметрите са в самия адрес след ?:
import requests
url = "https://api.open-meteo.com/v1/forecast"
parametri = {"latitude": 42.70, "longitude": 23.32, "current_weather": True}
otg = requests.get(url, params=parametri, timeout=10)
print(otg.status_code) # 200 = успех; 4xx/5xx = грешка (урок 19)
danni = otg.json() # JSON → речник
sega = danni["current_weather"]
print(sega["temperature"], sega["windspeed"], sega["weathercode"])requests.getизпраща заявката;paramsсе превръщат в?latitude=42.7&longitude=23.32&….status_codeе същият вид код като при AI услугата — 200 е добре, 429 е лимит, 404 е грешен адрес..json()прави от отговора речник — оттам нататък е урок 18.- Форматът на отговора се чете от документацията на услугата, не се налучква: кои ключове има, в какви единици са числата.
Карта, календар, имейл — потокът
Същата верига работи за всяка външна услуга. Разликата е, че картите, календарът и пощата искат ключ или вход с акаунт и имат права. Ето как изглежда потокът, описан без код:
- Календар. Потребителят пита „кога съм свободен утре следобед“ → програмата взима събитията за утре от API на календара → подава ги на модела с въпроса → моделът отговаря с едно изречение. Никой не му е дал право да създава събития.
- Карта. „Колко време е до училище с градски транспорт“ → програмата пита API за маршрути с двата адреса → получава минути и линии → моделът ги превръща в разбираем съвет.
- Имейл. Програмата взима последните пет писма → моделът ги обобщава в три точки → ако потребителят поиска отговор, моделът предлага чернова, а изпращането става само след потвърждение от човек.
Какво трябва да запомниш
- Мултимодалният модел приема текст, изображение и звук в един промпт; за програмиста разликата е, че contents е списък.
- Изображение се подава с PIL: contents=[img, "въпрос"]. Добър за описание и четене на текст, несигурен за точно броене и дребни детайли.
- REST API: HTTP заявка с параметри → JSON отговор → речник. requests.get, status_code, .json().
- Моделът не знае актуални данни — програмата ги взима от външно API и му ги подава в промпта.
- Веригата е API → програма → модел → потребител; необратимите действия (изпращане, запис) стават само с потвърждение от човек.
- Снимки с хора и лични данни не се качват към външни услуги.