Онлайн час в Google Meet
Лого на 91. НЕГ „Проф. Константин Гълъбов“

12. клас · Избираем модул · Урок 19

Извикване на AI API от Python

От чат прозореца към кода: API ключ и защо не се споделя, заявка → отговор, модел и системна инструкция, обработка на грешки и лимитите на безплатното ниво.

От чат прозореца към кода

В уроци 16 и 17 отговорът на модела се четеше от човек. В програма отговорът трябва да влезе в друга функция — да се запише в база, да се покаже в интерфейс, да се провери. За това е нужно извикване по мрежата, а Python от урок 18 е инструментът.

API на езиков модел

Мрежова услуга, на която програмата изпраща промпт и настройки и получава отговор. „API“ е програмен интерфейс: набор от функции, които се извикват отдалечено, а не през бутони.

вашата програмаPython в Colabуслугатамоделът работи тукзаявка: ключ + модел + инструкция + промптотговор: текст (или грешка с код)Услугата не помни нищо между две заявки — всичко нужно пътува всеки път.
Една заявка, един отговор. Моделът е при доставчика; при вас е само кодът, който пита.

Ключът

Всяко извикване се придружава от API ключ — дълъг низ, който казва на услугата кой пита, кой плаща и чии лимити се използват. Ключът е като парола, и то такава, с която някой друг може да харчи от ваше име.

  • Никога не се записва в кода. Кодът се споделя, показва на проектор, качва в хранилище — ключът не бива да е в него.
  • Никога не влиза в git. Разкрит ключ в публично хранилище се намира и използва от чужди хора за минути.
  • В Colab се пази в „Secrets“ (иконата с ключето отляво) и се чете с userdata.get("GEMINI_API_KEY").
  • В истинско приложение стои в променлива на средата на сървъра и никога не стига до браузъра на потребителя.

Заявка → отговор

Ползваме безплатното ниво на Gemini през Google AI Studio и библиотеката google-genai. Най-късата работеща програма:

from google import genai
from google.colab import userdata

client = genai.Client(api_key=userdata.get("GEMINI_API_KEY"))

otgovor = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Какво е първичен ключ? Отговори с едно изречение.",
)
print(otgovor.text)
Какво изпращамеКакво правиКъде е в кода
ключудостоверява кой питаapi_key=…
моделкой модел да отговори; бърз и евтин за упражненияmodel=…
съдържаниепромптът — текст или списък от частиcontents=…
системна инструкцияроля и правила за целия разговор (урок 17)config=…system_instruction
температураколко разнообразен да е изходът (урок 16)config=…temperature
максимални токенитаван на дължината на отговораconfig=…max_output_tokens

Моделът няма памет

Услугата не помни предишните ви заявки. Ако искате разговор, вие изпращате цялата история всеки път. Оттам следва и че дългият разговор става все по-скъп — всяко ново съобщение носи със себе си всички предишни.

Грешките, които ще срещнете

Заявките по мрежа се провалят понякога — това е нормално. Услугата връща грешка с числов код, а библиотеката я превръща в изключение. Знаете изключенията от C# (try/catch); в Python са try/except.

КодЗначениеКакво да направим
400лоша заявка — грешна структура или параметърпроверете аргументите
401 / 403невалиден ключ или липсващо правопроверете ключа в Secrets и достъпа на тетрадката
404няма такъв моделвземете актуалното име от документацията
429твърде много заявки — лимитът е достигнатизчакайте и повторете след пауза
500 / 503проблем при услугатаповторете след кратко изчакване
— (празен отговор)моделът не е върнал текст, напр. спрян от филтърпроверете otgovor.text, преди да го ползвате
from google.genai import errors

try:
    otgovor = client.models.generate_content(model="gemini-2.5-flash", contents=vapros)
    tekst = otgovor.text or "(празен отговор)"
except errors.APIError as e:
    tekst = f"Грешка {e.code}: {e.message}"
print(tekst)

Цена и безплатното ниво

Услугите таксуват на токени — отделно за вход и за изход (урок 16). За курса ползваме безплатно ниво: ограничен брой заявки в минута и на ден. Стига за упражнения, но налага дисциплина:

  • Пробвайте промпта първо в чат прозореца (урок 17), чак после от код.
  • Не пускайте цикли по 100 заявки, докато не сте сигурни в кода — първо с една.
  • Ограничавайте дължината на отговора с max_output_tokens.
  • Пазете отговорите в променлива, вместо да питате пак за същото.
  • Ако лимитът за деня свърши — има резервен вариант със записан отговор (задача 5).

Какво трябва да запомниш

  • API е програмен интерфейс: програмата изпраща заявка по мрежата и получава отговор — без чат прозорец.
  • Ключът е парола, с която се харчи от ваше име: в Secrets на Colab или в променлива на средата, никога в кода и в git.
  • Заявката носи модел, съдържание и настройки (системна инструкция, температура, максимални токени); услугата не помни нищо между заявките.
  • Грешките са нормални: 401/403 ключ, 404 модел, 429 лимит, 5xx услугата; try/except ги хваща, а празният отговор се проверява.
  • Безплатното ниво има лимити в минута и на ден — първо една заявка, после цикъл; винаги с резервен вариант.