одиниці
1. Вступ до ШІ в мобільній розробці: ролі, межі, автентифікація та безпека 2. Генерація мобільного коду за допомогою штучного інтелекту: Kotlin, Swift і кросплатформна розробка 3. Дизайн інтерфейсу та генерація коду інтерфейсу за допомогою штучного інтелекту 4. Штучний інтелект на пристрої: Core ML, TensorFlow Lite та ML Kit 5. Інтеграція Cloud AI і LLM API: чат, потік і безпека 6. Генерація тестів за допомогою штучного інтелекту: Тести пристроїв, інтерфейсів та автоматизації 7. Налагодження та аналіз збоїв за допомогою штучного інтелекту 8. Оптимізація продуктивності та батареї: швидкі та ефективні програми зі штучним інтелектом 9. Конфіденційність, дозволи та безпечне використання 10. Випуск магазину: App Store, Google Play і сумісність зі штучним інтелектом 11. Наскрізний проект, відповідальне використання штучного інтелекту та дорожня карта в професії
одиниця 5 / 11

Інтеграція Cloud AI і LLM API: чат, потік і безпека

Прибуток:

  • Можливість створити захищену хмарну архітектуру 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
  • [ ] Я перевірив необхідність/маскування особистих даних перед переходом у хмару