Прибуток:
- Можливість створити захищену хмарну архітектуру LLM, яка не зберігає ключ API на клієнті, а проходить через внутрішній проксі-сервер
- Можливість створювати надійні інтеграції, які збільшують сприйняту швидкість за допомогою потокового передавання та обережно впораються з такими ситуаціями, як тайм-аути, помилки мережі та обмеження швидкості
- Можливість зменшити вартість шляхом скорочення надісланого токена та поставити під сумнів необхідність персональних даних перед тим, як вони потраплять у хмару
Штучний інтелект на пристрої потужний, але обмежений. Якщо ви хочете додати до програми справді «розумного помічника в чаті», довгий текстовий підсумок або складну творчу продукцію, вам потрібні моделі, які завеликі, щоб поміститися на телефон. Ось тут вступає в дію хмарний штучний інтелект: ваша програма підключається до великої мовної моделі (LLM) через API (інтерфейс програмування додатків – стандартний інтерфейс, через який два програмні засоби надсилають і отримують дані одне одному). У цьому розділі ми навчимося безпечно, швидко та економно інтегрувати хмарний LLM у мобільний додаток. Критичний акцент буде на безпеці: неправильно встановлена інтеграція LLM може призвести до витоку вашого ключа API та призвести до рахунків на тисячі фунтів.
Золоте правило архітектури: тримати ключ за клієнтом
Найнебезпечніша помилка, яку можна зробити під час інтеграції хмарного штучного інтелекту, — це вставити API-ключ (секретний пароль, який дозволяє використовувати сервіс) безпосередньо в код мобільного додатку. Мобільні програми завантажуються на пристрій користувача, і код можна прочитати за допомогою зворотного проектування — аналізу скомпільованої програми та перегляду того, що в ній міститься. Якщо ваш ключ знаходиться в програмі, хтось може витягнути його та робити необмежену кількість запитів із вашого облікового запису.
Правильна архітектура така: мобільна програма надсилає запити на ваш внутрішній сервер (проксі-сервер, яким ви керуєте); Ключ знаходиться лише на сервері; Сервер переходить до служби LLM і повертає відповідь додатку. Це проміжне програмне забезпечення також забезпечує обмеження швидкості, запобігання зловживанням і контроль витрат.
Підхід
де ключ
Безпека
Ключ знаходиться в додатку (НЕПРАВДА)
У клієнті, публічно
Витікає, купюра вибухає
Ключ у серверній частині (ІСТИНА)
На сервері, приховано
Безпечний, керований
Застереження: коли ви просите AI для хмарної інтеграції LLM, він може створити приклад, який записує ключ безпосередньо в код програми для вашої зручності. Ніколи не знімайте це вживу. Обов’язково включите в підказку речення «Ключ API не повинен бути на клієнті, перейдіть через серверний проксі».
Потокове передавання: збільшення сприйнятої швидкості
Відповіді на LLM можуть бути довгими, і їх повне створення може займати кілька секунд. Залишати користувача чекати на порожньому екрані – поганий досвід. Рішення є потоковим — відображення відповіді слово за словом у міру її створення. Користувач стежить за правописом тексту, як у ChatGPT; це різко підвищує швидкість і плавність сприйняття. Flow on mobile означає додавання фрагментів (токенів — фрагмент тексту, створений моделлю) із сервера до інтерфейсу, щойно вони надходять. Явно запитуйте потік під час друку інтеграції в AI.
Порада: додайте кнопку «пауза» у відповідь на потокову передачу. Користувач повинен мати можливість зупинити виробництво, коли він отримає потрібну відповідь; Це одночасно покращує досвід і знижує витрати за рахунок усунення непотрібної генерації токенів. У середині довгої відповіді користувач, можливо, вже знайшов свою відповідь.
Управління вартістю, затримками та помилками
Cloud LLM несе грошову вартість (плата за токен) і вартість часу (затримка) з кожним запитом. Необхідні три дисципліни. Cost: limit prompt and response length, do not send unnecessarily long system instructions, default to small and cheap model if possible. Затримка: використовуйте потокове передавання, установіть час очікування, повідомте користувача, якщо мережа повільна. Помилка: збій мережі, служба може повернути 429 (забагато запитів) або 500 (помилка сервера); поводьтеся з кожним обережно, не виводьте з ладу програму. Крім того, LLM іноді дає безглузді або неправильні (галюцинації) відповіді; Додайте рівень перевірки відповіді в критичних областях.
три міні-чохла
Випадок 1 — витік ключа. Стартап вставив ключ OpenAI безпосередньо у свій додаток React Native, щоб швидко вийти. Через три тижні після випуску додатка ключ було оброблено, і за одну ніч було використано 2400 доларів США. Команді довелося відкликати ключ і налаштувати серверний проксі-сервер. Урок: ярлик, обраний для зручності, став найдорожчим маршрутом.
Випадок 2 — Випадання зменшується разом із потоком. Освітня програма вперше випустила функцію запитань і відповідей без потокового передавання; користувачі виходили після 6 секунд очікування бездіяльності. Після додавання потоку перше слово почало з’являтися через 0,8 секунди, а відсоток залишення впав з 48% до 12%. Та сама модель, та сама швидкість — лише різниця в презентації.
Кейс 3 — Контроль витрат. Одна програма надсилала моделі всю історію чату з кожним повідомленням користувача; У довгих розмовах один запит досягав 8000 токенів, що завищувало вартість. Надіславши лише кілька останніх повідомлень і підсумок, команда зменшила кількість жетонів на запит на 70%, зменшивши щомісячний рахунок на третину. Урок: вимірюйте те, що надсилаєте.
Слабка підказка / Сильна підказка
Слабка підказка: «Додайте чат, як ChatGPT, до моєї програми».
Потужна підказка: «Додайте помічника в чаті до моєї програми iOS/Swift. Архітектура: програма надсилає запит до моєї власної серверної частини, ключ API LLM НЕ на КЛІЄНТІ, він проходить через проксі. - Відповідь надходить потоковою, відображається слово за словом - Кнопка «Зупинити» перериває виробництво - Витончено обробляйте тайм-аут, помилку мережі, ситуації 429 і 500 - Скоротіть історію чату: надішліть останні 6 повідомлень + підсумок (контроль вартості) Спочатку поясніть архітектурну схему, а потім надайте код клієнта та проксі окремо."
Шаблони, які можна копіювати
Шаблон безпечної архітектури: «Розробити хмарну інтеграцію LLM у мою [платформу] програму. Правило: ключ API лише у серверній частині. Клієнт -> мій проксі -> LLM. У проксі: автентифікація, обмеження кількості користувачів, журналювання запитів. Окремо вкажіть обов’язки клієнта та проксі, а потім експортуйте код».
Шаблон потокового передавання: «Додайте потокову відповідь на цей екран чату: – Додавайте фрагменти до спливаючої підказки повідомлення, щойно вони надходять – Показуйте курсор/анімацію під час введення тексту – Кнопка «Зупинити» скасовує потік – Зберігайте частковий текст і попереджайте, якщо виникає помилка під час завершення потоку [існуючий код]»
Шаблон із затримкою витрат: «Зменшіть вартість і затримку в цій інтеграції LLM: – Як мені зменшити надісланий маркер (абревіатура історії, підсумок)? – У якому випадку достатньо меншої/дешевшої моделі? – Запропонуйте тайм-аут і повторіть стратегію [код]»
Шаблон відмовостійкості: «Зробіть цей виклик LLM стійким: - Окрема поведінка для відсутності мережі, тайм-ауту, 429 (обмеження швидкості), 500 (сервер) - Нетехнічне, ввічливе повідомлення для користувача - Примітка щодо перевірки ризику галюцинації в критичних відповідях [код]"
Поширені помилки
- Вбудовування ключа API в додаток. Найдорожчий і поширений баг безпеки; Ключ, безумовно, лежить на задній частині.
- Не використовує потік. Залишаючи користувача довго чекати відповіді, ви відженете користувача.
- Надсилання всієї історії чату з кожним запитом. Це збільшує вартість токена та затримку.
- Обхід умов помилки. Якщо 429/500/тайм-аут не вирішено, програма вийде з ладу або зависне.
- Вважаючи відповідь LLM правильною без питань. Галюцинація справжня; Додайте рівень перевірки в критичну область.
- Надсилання даних користувача непотрібному LLM. Запитайте, чи потрібні особисті дані, чи їх потрібно маскувати, перш ніж вони перейдуть у хмару.
Підсумовуючи
Cloud LLM надає великі можливості, які не підходять для мобільних пристроїв, але вимагає безпеки та дисципліни витрат. Золоте правило: ключ API ніколи не знаходиться на клієнті, він проходить через серверний проксі. Потік значно збільшує сприйняту швидкість і утримання; Підтримується кнопкою «стоп». Вартість визначається скороченням надісланого токена; Стійкість досягається шляхом витонченої обробки всіх випадків помилок. Відповіді LLM можуть включати галюцинації; У критичних областях перевірка є важливою, а особисті дані перевіряються перед надсиланням у хмару.
Аплікаційне завдання
Запитуйте дизайн клієнта + серверного проксі-сервера в ШІ за допомогою «шаблону безпечної архітектури» для функції «резюмування тексту» або «чату». Переконайтеся, що ключ API знаходиться лише у серверній частині створеного дизайну. Потім витягніть принаймні два способи зменшення токена, надісланого за допомогою шаблону «Вартість-затримка», і напишіть ввічливе повідомлення, яке відображатиметься користувачеві в разі виникнення помилки (наприклад, 429).
контрольний список
- [ ] Я переконався, що ключ API знаходиться у серверній частині, а не на клієнті
- [ ] Я зробив відповідь потоковим і додав кнопку «пауза».
- [ ] Я впорався з тайм-аутом, помилкою мережі, ситуаціями 429 і 500
- [ ] Я зменшив поданий маркер із минулим скороченням/резюмем
- [ ] Я розглянув перевірку ризику галюцинацій у відповіді LLM
- [ ] Я перевірив необхідність/маскування особистих даних перед переходом у хмару