Наблюдаемость OpenAI
Ключ-АСТРОМ позволяет предприятиям автоматически собирать, визуализировать и настраивать оповещения о потреблении API‑запросов OpenAI, а также о задержках и стабильности работы — в сочетании со всеми другими сервисами, используемыми для создания AI‑приложения. Это включает как OpenAI, так и сервисы, такие как GPT‑3, Codex, DALL‑E или ChatGPT.
Ключ-АСТРОМ ЕдиныйАгент автоматически обнаруживает, отслеживает и защищает доступ к OpenAI — без какой‑либо ручной настройки. Он раскрывает полный контекст используемых технологий, показывает топологию взаимодействия сервисов, анализирует уязвимости безопасности, а также отслеживает метрики, трассировки, логи и бизнес‑события в режиме реального времени.
В следующих разделах показано:
- как отслеживать запросы к моделям OpenAI/GPT;
- как отображать «золотые сигналы» OpenAI на дашборде;
- как Ключ-АСТРОМ ИИ автоматически выявляет аномальное поведение сервисов (например, замедление запросов к OpenAI/GPT) в качестве первопричины масштабных инцидентов.
Отслеживание запросов к моделям OpenAI
Для пояснения того, как Ключ-АСТРОМ ЕдиныйАгент автоматически отслеживает запросы к моделям OpenAI, используется простой пример на Node.js. OpenAI предоставляет языковое связывание для Node.js, которое позволяет напрямую интегрировать запрос к модели, добавив следующие строки кода в ваше собственное AI‑приложение на Node.js:
| const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY }); const openai = new OpenAIApi(configuration); const response = await openai.createCompletion({ model: "text-davinci-003", prompt: "Say hello!", temperature: 0, max_tokens: 10, }); |
После запуска приложения ИИ на сервере, контролируемом ЕдинымАгентом, ЕдиныйАгент автоматически обнаруживает его и собирает трассировки и метрики для всех исходящих запросов.
Автоматическое внедрение кода мониторинга и трассировки работает не только для языковой привязки Node.js, но и при использовании необработанного HTTPS-запроса в Node.js.
Хотя OpenAI предлагает официальные языковые привязки только для Python и Node.js, существует длинный список языковых привязок, предоставляемых сообществом.
ЕдиныйАгент автоматически отслеживает все привязки C#, .NET, Java, Go и Node.js, но мы рекомендуем использовать инструментарий OpenTelemetry для мониторинга привязки OpenAI Python с помощью Ключ-АСТРОМ.
Для корректного разделения всех вызовов сервиса OpenAI необходимо настроить пользовательское устройство с доменом OpenAI в вашей среде Ключ-АСТРОМ.
- Перейдите в раздел Технологии.
- Выберите Пользовательские устройства.
- Выберите пункт Создать пользовательское устройство в меню в правом верхнем углу страницы.
После настройки пользовательского устройства OpenAI, Ключ-АСТРОМ ServiceFlow отображает поток ваших запросов, начиная с вашего сервиса Node.js и заканчивая вызовом модели OpenAI.
Ключ-АСТРОМ ЕдиныйАгент автоматически собирает всю информацию, связанную с задержкой и надежностью, а также все трассировки, показывающие, как ваши запросы OpenAI проходят через график вашего сервиса.
Бесперебойное отслеживание запросов моделей OpenAI позволяет операторам выявлять поведенческие закономерности в вашей среде сервисов ИИ и понимать типичную ситуацию нагрузки на вашу инфраструктуру.
Эти знания необходимы для дальнейшей оптимизации производительности и стоимости ваших сервисов. Добавив несколько строк кода ручной инструментации в ваш Node.js-сервис, вы также сможете отслеживать показатели стоимости с помощью ЕдиногоАгента, который собирает данные о количестве использованных разговорных токенов OpenAI. Ключ-АСТРОМ предлагает несколько способов сбора информации о содержимом запроса, например, о количестве токенов OpenAI.
Захват содержимого запроса с помощью Ключ-АСТРОМ может быть осуществлен следующим образом:
- Запись информации в логи, сбор метрик и трассировка непосредственно из записей логов.
- Отправка пользовательских метрик с использованием канала приема метрик ЕдиногоАгента.
- Захват частей полезной нагрузки запроса с помощью бизнес-событий.
Отслеживание стоимости запросов OpenAI с помощью логов
Использование логов для сбора и анализа стоимости запросов OpenAI — это одновременно простой и эффективный способ. Он позволяет владельцу сервиса записывать строки логов, используя стандартный фреймворк логирования Node.js, такой как Winston, и собирать и анализировать эти логи в Ключ-АСТРОМ.
Приведенный ниже фрагмент кода записывает в лог Winston строку, содержащую количество токенов запросов OpenAI.
| logger.log('info', `OpenAI response promt_tokens:${response.data.usage.prompt_tokens} completion_tokens:${response.data.usage.completion_tokens} total_tokens:${response.data.usage.total_tokens}`); |
Строки логов запросов OpenAI можно просмотреть в программе просмотра логов Ключ-АСТРОМ.
Мы рекомендуем также включить обогащение контекста трассировки для логов Node.js (перейдите в Настройки > Предпочтения > Функции ЕдиногоАгента и включите Node.js Trace/span context enrichment for logs), чтобы автоматически сопоставлять все строки логов с захваченными трассировками запросов.
При включенной функции Node.js Trace/span context enrichment for logs вы даже получаете удобное сопоставление всех трассировок OpenAI с соответствующими строками логов.
Используйте правило обработки логов для автоматического извлечения трех значений количества токенов в отдельные поля для записи в лог.
После определения правила обработки логов, дополнительные правила извлечения метрик помогают преобразовать эти три значения количества токенов в метрики, пригодные для построения графиков.
Отслеживание стоимости запросов OpenAI, отправляя пользовательские метрики
Каждый запрос к модели OpenAI, такой как text-davinci-003, gpt-3.5-turbo или GPT-4, сообщает, сколько токенов было использовано для запроса (длина вашего текстового вопроса) и сколько токенов модель сгенерировала в ответ.
Клиенты OpenAI оплачивают услуги исходя из общего количества токенов, израсходованных всеми отправленными ими запросами.
Извлекая эти измерения токенов из возвращаемой полезной нагрузки и передавая их через Ключ-АСТРОМ ЕдиныйАгент, пользователи могут отслеживать потребление токенов во всех своих сервисах с поддержкой OpenAI в своей среде мониторинга.
Для извлечения количества токенов из ответа OpenAI и передачи этих трёх показателей в локальный OneAgent требуется следующее инструментирование.
| function report_metric(openai_response) {
var post_data = "openai.promt_token_count,model=" + openai_response.model + " " + openai_response.usage.prompt_tokens + "\n"; post_data += "openai.completion_token_count,model=" + openai_response.model + " " + openai_response.usage.completion_tokens + "\n"; post_data += "openai.total_token_count,model=" + openai_response.model + " " + openai_response.usage.total_tokens + "\n"; console.log(post_data); var post_options = { host: 'localhost', port: '14499', path: '/metrics/ingest', method: 'POST', headers: { 'Content-Type': 'text/plain', 'Content-Length': Buffer.byteLength(post_data) } }; var metric_req = http.request(post_options, (resp) => {}).on("error", (err) => { console.log(err); }); metric_req.write(post_data); metric_req.end(); } |
После добавления этих строк в ваш Node.js-сервис в Ключ-АСТРОМстанут доступны три новых показателя потребления токенов OpenAI.
Ключ-АСТРОМ ИИ автоматически определяет GPT как первопричину проблем
Одна из ключевых возможностей Ключ-АСТРОМ — способность Ключ-АСТРОМ ИИ автоматически изучать типичное поведение отслеживаемых сервисов.
При обнаружении аномального замедления работы или роста числа ошибок Ключ-АСТРОМ ИИ запускает анализ первопричин для выявления источника сложных ситуаций.
В нашем простом примере сервис на Node.js полностью зависит от ответа модели ChatGPT. Всякий раз, когда увеличивается задержка ответа модели или запрос к модели завершается с ошибкой, Ключ-АСТРОМ ИИ автоматически фиксирует это.
На странице сведений о проблеме в ИИ отображаются:
- все затронутые сервисы;
- генеративный сервис OpenAI как первопричина замедления;
- эффект распространения (каскадное влияние) этого замедления.
Страница сведений о проблеме также содержит перечень всех целей уровня обслуживания (SLO), на которые негативно повлияло данное замедление.