Едно правило определя всичко
Ключът не напуска сървъра
Ако извикате модела направо от браузъра или от настолното приложение, ключът е в ръцете на потребителя. Всяко приложение, което го прави, плаща чужди сметки в рамките на дни.
Освен ключа на сървъра остават и всички други решения: кой има право да пита, колко пъти, какъв контекст се добавя, какво се записва.
Пътят на едно запитване
- Клиентът изпраща въпроса към вашия краен адрес (endpoint).
- Сървърът проверява кой е потребителят и има ли право.
- Проверява лимита му — брой запитвания за час или на ден.
- Търси контекст в базата (векторно и по ключови думи).
- Сглобява промпта: системно указание, контекст, история, въпрос.
- Извиква модела с таймаут.
- Проверява отговора (валиден JSON, липса на забранено съдържание).
- Записва разговора и разхода в базата.
- Връща отговора и източниците на клиента.
Само стъпка 6 е „изкуственият интелект“. Останалите осем са обикновено сървърно програмиране — и точно там се решава дали системата е използваема.
Синхронно или отложено
| Синхронно | Отложено (опашка) | |
|---|---|---|
| Как работи | заявката чака отговора | заявката връща номер, отговорът идва после |
| Подходящо за | чат, кратки отговори | обработка на 500 документа, дълги анализи |
| Риск | изтичане на времето при бавен модел | по-сложна реализация |
| Потребителят вижда | изчакване или поток | състояние: чака / готово |
Правилото за времето
Ако операцията може да отнеме над 30 секунди, тя не бива да е синхронна. Дълга HTTP заявка ще бъде прекъсната някъде по пътя — от браузъра, от прокси сървъра или от хостинга.
Слоевете в кода
Отделяйте работата с модела в собствен слой. Не разпръсквайте извикванията из целия проект.
Контролер (приема заявката)
→ Услуга „Помощник“ (сглобява промпта, вика модела, проверява отговора)
→ Клиент на модела (само HTTP: ключ, таймаут, повторни опити)
→ Хранилище (търсене в базата, запис на разговора)- Смяната на доставчик засяга само последния слой.
- Промените в промпта са на едно място и могат да се версионират (урок 22).
- Слоят с HTTP може да се замени с фалшив при тестване (урок 20).
Какво се записва
Задължително
- кой е питал и кога
- какъв промпт е изпратен (или поне версията му и входа)
- какъв е отговорът
- колко токена са изразходвани и колко е струвало
- коя версия на модела е отговорила
Внимателно
Записите съдържат това, което потребителите са писали — тоест потенциално лични данни. Определете срок на съхранение и кой има достъп още преди първия запис.