Защита сообщений и анализ инсайтов с Amazon Bedrock и Amazon Nova
Прямая коммуникация между покупателями и продавцами вне утвержденных каналов может ежегодно приводить к значительным потерям выручки, при этом серьезно вредя репутации бренда и разрушая ценные деловые отношения. Хотя системы обмена сообщениями необходимы для современных бизнес-операций и помогают получать богатые клиентские инсайты, они создают существенные риски, когда стороны обходят брокерскую систему и переходят к прямому общению. Когда покупатели и продавцы обмениваются контактными данными и переводят сделки в офлайн, брокерские компании могут не только терять немедленную выручку, но и страдать от долгосрочного ущерба, поскольку ценность их marketplace снижается. Эта проблема особенно остра для брокерского бизнеса, где ключевая ценность сервиса состоит в обеспечении безопасных и надежных связей между сторонами. Хотя внутриплатформенный обмен сообщениями позволяет передавать важные детали сделки, такие как место доставки «оставьте у задней двери» или конкретное время «доставьте только после 16:00», обмен прямыми контактными данными, включая телефонные номера, названия компаний, веб-сайты или физические адреса, необходимо предотвращать, чтобы сохранить позицию брокера как доверенного посредника. Если не решить эту проблему, это может привести к каскаду негативных последствий. Среди них — потеря комиссионной выручки, снижение ценности сервиса, ухудшение отношений с партнерами и ослабление позиции в отрасли, на восстановление которой могут уйти годы.
В этой статье вы узнаете, как использовать Amazon Nova Foundation Models в Amazon Bedrock для применения генеративного ИИ как в защите бизнеса, так и в его развитии. Вы сможете выявлять как явные, так и замаскированные попытки прямого контакта, а также получать полезные инсайты о настроении клиентов и возможностях улучшения сервиса.
Регулярные выражения
Однако regex имеет серьезные ограничения при работе с современными текстовыми сложностями, такими как разбор HTML, распознавание эмодзи из-за особенностей Unicode и различий в их представлении между сервисами, а также с развивающимися шаблонами вроде аккаунтов в социальных сетях или изменяющихся URL. Regex плохо справляется и тогда, когда люди намеренно скрывают контактную информацию, используя постоянно меняющиеся методы обхода. Например, сообщение «Поздравляем. Вот еще немного деталей 555inches 555inches 5555inches» явно пытается замаскировать номер телефона под единицы измерения. Поскольку шаблон известен, более сложное regex-выражение вроде (\d+)inches\s+(\d+)inches\s+(\d+)inches может эффективно выявить номер телефона, скрытый с помощью слова «inches» в качестве ложной единицы измерения. Но что если шаблон не так прост и не опирается на известные обозначения измерений? Задача обнаружения скрытых контактных данных выходит за рамки простого сопоставления шаблонов и требует более динамичного подхода. Методы обхода постоянно меняются: числа заменяются словами, используются альтернативные единицы, меняются разделители, а leetspeak комбинируется с эмодзи. Традиционные regex-выражения плохо работают со словами, записанными прописью, креативным использованием символов (например, запись «@» как «at»), контекстно-зависимыми упоминаниями компаний и сложными комбинациями leetspeak.
Regex особенно непригоден для продвинутого анализа текста, например для определения тональности, понимания контекста или выявления действий и намерений пользователя. Например, regex может найти конкретные слова, но не способен понять эмоциональный тон или определить, требует ли сообщение дальнейшего действия. Когда шаблоны усложняются или требуют частых обновлений, сопровождение regex становится трудным и подверженным ошибкам, а решения — хрупкими и ломаются при изменении формата текста. Для таких сценариев стоит использовать решения на основе генеративного ИИ, например Amazon Bedrock. Amazon Bedrock предоставляет продвинутые языковые модели, которые понимают контекст, разбирают сложные структуры и адаптируются к меняющимся текстовым шаблонам без постоянных ручных обновлений.
Генеративный ИИ
Amazon Bedrock — это полностью управляемый serverless-сервис, предлагающий широкий набор высокопроизводительных AI foundation models от ведущих компаний. Вы можете использовать Amazon Bedrock, чтобы экспериментировать с генеративным ИИ, настраивать его и интегрировать в свои приложения с помощью знакомых сервисов AWS. Amazon Bedrock также предоставляет на консоли AWS playground для тестирования prompts и нескольких LLM.
Чтобы получить доступ к моделям Amazon Bedrock и создавать prompts в консоли AWS, вам понадобятся следующие условия:
- Активная учетная запись AWS
- Соответствующие разрешения IAM
- Знакомство с AWS Management Console
- Базовое понимание принципов prompt engineering
Используя Amazon Bedrock playground в AWS Management Console, можно экспериментировать с prompt engineering в Chat/Text playground в режиме Single Prompt. При работе с моделью Amazon Nova 2 Lite мы можем влиять на генерацию ответа с помощью параметров inference, изменяя длину ответа до 1 000 tokens и снижая значение temperature для более стабильных результатов.
Следующее примерное сообщение скрывает номер телефона с помощью эмодзи:
I can get that done for you directly :five: :five: :five:-:five: :five: :five:-:zero: :one: :one: :one: .
Для такого узкого сценария можно написать простой prompt, который найдет номер телефона, замаскированный эмодзи:
Analyze customer feedback regarding shipping orders for a brokerage and identify
if the supplier has provided phone numbers. The text may contain emoji to disguise
the original text.
Введите приведенный выше prompt вместе с входным текстом и нажмите кнопку Run.
Ответ модели объясняет, как Nova 2 Lite распознала эмодзи как номер телефона, как показано на следующем изображении:

В таком простом случае создать regex для той же задачи возможно, но давайте рассмотрим более сложное сообщение с несколькими методами маскировки.
Следующее сообщение содержит как очевидные контактные данные, так и попытки скрыть их с помощью эмодзи, leetspeak и ложных измерений.
Hello! I agree to the terms, look me up and let's make it happen Am@z0n, Inc.
Congratulations.
call mi 321inches 555inches 0177inches.
I'm with Whole Foods Market tylerh@anycompany.com.
Will include it all in one box 12"L X 12"W x 6" high under 10 lbs.
Tyler Huehmer 123...555....0123.
I can get that done for you directly :five: :five: :five:-:five: :five: :five:-:zero: :one: :one: :one: .
This is a great deal jesseatanycompany.com. we can get this done by next week.
I've got brown hair and am 6'2" see you there. 410 Terry Avenue North, Seattle, WA 98109
Prompt должен объяснять большой языковой модели (LLM), как определять контактную информацию, которая нарушает политики брокера. Поскольку почти невозможно предсказать все методы маскировки, нельзя полагаться на явное форматирование и синтаксис, чтобы обнаружить скрытую информацию. Модель Nova 2 Lite нужно направить на поиск номеров телефонов, названий компаний, email-адресов, почтовых адресов, имен и физических признаков в разных форматах. Реальные параметры доставки допустимы, поскольку это валидная информация.
You are a detective that must thoughtfully analyze buyer and seller correspondences
to discover contact information that violates policy by looking for emojis, leetspeak,
and other ways used to disguise contact information like spreading the contact
information across the text for categories phone number, business name, email,
mailing address, personal information such as name, appearance, etc.
Be aggressive and creative with how you identify phone numbers.
All contact information violates policy. Shipping measurements are to be ignored.
LLM даст развернутое объяснение того, почему она обнаружила те или иные фрагменты информации в тексте. Хотя это полезно на этапе проектирования prompt, для последующей обработки более удобен более краткий JSON-формат с полями explanation, category и confidence. Чтобы добиться этого, добавьте к исходному prompt следующее:
Group findings by category and provide a confidence level for each item on a
scale of 1 to 5, with 5 being the highest confidence. Explain your reasoning
for the categorization and confidence level. Format your response as a json
object.
Затем финальный prompt вводится в Amazon Bedrock Chat/Text playground как единый prompt и запускается следующим образом:

Ответ модели, показанный в следующем примере, корректно определил несколько типов явной и замаскированной информации: 3 номера телефона, 2 названия компаний, 2 email-адреса, почтовый адрес, личное имя и физические характеристики.
{
"findings": {
"business_name": [
{
"value": "Am@z0n, Inc.",
"confidence": 5,
"reasoning": "The text explicitly states 'Am@z0n, Inc.', which is a disguised version of 'Amazon, Inc.' using the symbol '@' and zero '0' instead of the letter 'o'. This is a clear attempt to obfuscate a well-known business name, violating policy."
},
{
"value": "Whole Foods Market",
"confidence": 5,
"reasoning": "The text explicitly states 'Whole Foods Market', a known business name. This is a direct mention of a business and violates policy."
}
],
"email": [
{
"value": "tylerh@anycompany.com",
"confidence": 5,
"reasoning": "The text contains a clear and properly formatted email address 'tylerh@anycompany.com'. This is a direct violation of policy."
},
{
"value": "jesseatanycompany.com",
"confidence": 4,
"reasoning": "The text contains 'jesseatanycompany.com', which is a clear attempt to disguise an email address. While it lacks the '@' symbol, the structure 'username@domain' is implied, making this a policy violation."
}
],
"phone_number": [
{
"value": "321 555 0177",
"confidence": 5,
"reasoning": "The text contains '321inches 555inches 0177inches', where 'inches' is used as a delimiter to spread out the phone number '321 555 0177'. This is a clear attempt to disguise a phone number and violates policy."
},
{
"value": "123 555 0123",
"confidence": 5,
"reasoning": "The text explicitly states '123...555....0123', which can be reconstructed as the phone number '123-555-0123'. This is a direct violation of policy."
}
],
"mailing_address": [
{
"value": "410 Terry Avenue North, Seattle, WA 98109",
"confidence": 5,
"reasoning": "The text contains a full, properly formatted mailing address '410 Terry Avenue North, Seattle, WA 98109'. This is a direct violation of policy."
}
],
"personal_information": [
{
"value": "Tyler Huehmer",
"confidence": 5,
"reasoning": "The text explicitly states 'Tyler Huehmer', which is a full name. This is personal information and violates policy."
},
{
"value": "brown hair",
"confidence": 3,
"reasoning": "The text mentions 'brown hair', which is a physical characteristic. While not as sensitive as a name or address, it still counts as personal information and violates policy."
},
{
"value": "6'2\"",
"confidence": 3,
"reasoning": "The text mentions '6'2"', which is a height measurement and can be considered personal information. While not as sensitive as a name or address, it still counts as personal information and violates policy."
}
],
"other": [
{
"value": ":five: :five: :five:-:five: :five: :five:-:zero: :one: :one: :one:",
"confidence": 4,
"reasoning": "The text contains a sequence of emojis and colons that spell out '5-5-5-5-5-5-0-1-1-1'. This could be an attempt to disguise a phone number or other contact information. While not definitive, it is suspicious and warrants investigation, hence the medium confidence level."
}
]
}
}
Хотя prompt работает, его можно улучшить. Инструмент prompt optimizer переписывает prompts так, чтобы результаты inference лучше соответствовали вашему сценарию и конкретной модели. Переписанные prompts также более читабельны и проще для понимания. Нажмите на значок волшебной палочки в нижней части экрана, обведенный красным на следующем изображении, чтобы открыть инструмент prompt optimizer.

Оптимизированный prompt структурирован с отдельными секциями, которые ясно определяют задачу модели, инструкции и формат вывода. Такая структура обеспечивает стабильный, полный и хорошо организованный результат.
## Task
You are a detective tasked with analyzing buyer and seller correspondences to identify
any contact information or cost details that violate policy.
Your goal is to be thorough and creative in detecting disguised or obfuscated contact
information across various categories.
## Instructions
1. Carefully analyze the provided text:
### Text
Hello! I agree to the terms, look me up and let's make it happen Am@z0n, Inc.
Congratulations. call mi 321inches 555inches 0177inches. I'm with Whole Foods Market
tylerh@anycompany.com. This will be $700. Will include it all in one box 12"L X 12"W x 6"
high under 10 lbs. Tyler Huehmer 123...555....0123. I can get that done for you
directly :five: :five: :five:-:five: :five: :five:-:zero: :one: :one: :one: .
This is a great deal jesseatanycompany.com. we can get this done by next week.
I've got brown hair and am 6'2" see you there. 410 Terry Avenue North, Seattle, WA 98109
2. Look for any instances of the following categories that may contain disguised
or obfuscated contact information:- Phone numbers (be aggressive and creative in
identifying phone numbers)- Business names- Email addresses- Mailing addresses- Personal information (e.g., names, appearances)- Cost details
3. Ignore any shipping measurements mentioned in the text.
4. For each identified item, categorize it appropriately and provide a confidence
level on a scale of 1 to 5, with 5 being the highest confidence.
5. Explain your reasoning for the categorization and confidence level assigned to
each item.
6. Format your response as a JSON object, grouping the findings by category.
7. Do not include any preamble or additional information in your response.
Format your response as follows:{{"category_1": [{"item": "identified_item_1","confidence": confidence_level,"reasoning": "reasoning_for_categorization_and_confidence"}},...],"category_2": [...],...}
Теперь, когда наш prompt успешно обнаруживает замаскированную контактную информацию, важно донастраивать и итеративно улучшать prompts специально под оцениваемую модель и тестировать их в масштабе (см. Amazon Bedrock Evaluations). Кроме того, учитывайте такие факторы, как стоимость, пропускная способность и соответствующие endpoints и quotas. При грамотном балансе этих параметров можно получить экономичное и производительное решение под ваши задачи.
Обнаружение нарушений политики общения — это первый шаг к защите бизнес-ценности и сохранению конкурентоспособности. После выявления нарушений политики мы извлекаем данные о тональности, чтобы улучшать поддержку поставщиков и отслеживать метрики лояльности. Наш prompt, разработанный и оптимизированный по best practices для Amazon Nova model, анализирует сообщения на наличие индикаторов тональности (см. Prompting best practices for Amazon Nova Models).
Task: Perform sentiment analysis on the given text to determine the sentiment
expressed towards the supplier or its apps and services, and provide a confidence
level for your reasoning.
Instructions:
1. Read and carefully analyze the text provided in <context> tags.
2. Determine if the sentiment expressed towards the supplier is:
<Option_list> <Option>Positive</Option> <Option>Neutral</Option> <Option>Negative</Option> </Option_list>
3. Provide a brief explanation, maximum 20 words, to justify your
sentiment analysis and confidence level.
4. Provide your sentiment analysis result in the following JSON format:
{{"Sentiment": "<Your chosen sentiment option>", "Confidence": <A number between 0-100 representing your confidence level>, "Reason": "<Your brief explanation
Text to analyze: <context>Dimensions are 4' x 4' x 2'. Brokerage app sucks, trying to get stage updated and cannot save.</context>
Provide your response immediately without any preamble.
Затем финальный prompt вводится в Amazon Bedrock Chat/Text playground и запускается:

Результаты показывают, что общая тональность негативная и указывают на наличие проблем или необходимости улучшений в messaging app:
{
"Sentiment": "Negative",
"Confidence": 90,
"Reason": "Words 'sucks' and 'cannot save' indicate clear dissatisfaction with the app."
}
Мы проанализировали сообщения поставщиков на предмет actionable insights, помогая брокерским командам выявлять точки вмешательства, устранять блокеры и улучшать сервисы. Используя prompt, Amazon Bedrock извлекает эти данные для backend ticketing system. Затем система направляет проблемы в customer care для немедленной обработки или в product team для потенциальной разработки новых функций.
Our final optimized prompt for detecting actionable insights:
Task: Perform analysis on the given text to determine if there are any action items
pending that may require the brokerage to investigate.
Instructions:
1. Read and carefully analyze the text provided in <context> tags.
2. Determine if there are any action items
3. Provide a brief explanation, maximum 20 words, to justify your analysis and
confidence level.
4. Provide your analysis result in the following JSON format:
{
{
"Action": "<Action Required>",
"Confidence": <A number between 0-100 representing your confidence level>,
"Reason": "<Your brief explanation>"
}
}
Text to analyze: <context>Dimensions are 4' x 4' x 2'. Brokerage app sucks,
trying to get stage updated and cannot save.</context> Provide your response
immediately without any preamble.
Затем финальный prompt вводится в Amazon Bedrock Chat/Text playground и запускается:

Результаты показывают проблему с brokerage app. Эту информацию затем можно использовать для создания support ticket, который будет отслеживаться до решения.
{
"Action": "Investigate brokerage app issue",
"Confidence": 95,
"Reason": "User reports inability to save stage updates, indicating a functional problem."
}
Мы сохранили финальные prompts (PolicyViolations, SentimentAnalysis, ActionItems Analysis) в Amazon Bedrock Prompt Management с version control. Этот подход позволяет командам разработки обновлять prompts, не затрагивая message orchestration, уже работающую в production. Эта функция также позволяет повторно использовать эффективные prompts в нескольких процессах.
Заключение
Практические тесты показали преимущество генеративного ИИ перед традиционными методами regex. При тестировании на небольшой выборке из 10 реальных брокерских сообщений подход на основе prompt для генеративного ИИ достиг 100% точности в выявлении замаскированной контактной информации. Эта возможность может распространяться на множество типов коммуникаций — от простых пользовательских сообщений, таких как отмены и обратная связь, до сложной broker orchestration.
Хотя regex достаточно для структурированных шаблонов, генеративный ИИ предлагает:
- Контекстное понимание: выявляет замаскированную информацию в сообщениях.
- Адаптивность: определяет эволюционирующие методы обхода без постоянных обновлений.
- Многомерный анализ: оценивает тональность, action items и нарушения политики.
- Оценку confidence: помогает принимать более тонкие решения.
- Обработку естественного языка: интерпретирует варианты вроде leetspeak и контекстно-зависимых ссылок.
Встраивая приложения с возможностями генеративного ИИ с помощью сервисов вроде Amazon Bedrock, разработчики могут создавать надежные и устойчивые к будущим изменениям решения, которые помогают защищать интересы компании в современных цифровых коммуникациях.
Следующие шаги
После разработки качественных пользовательских prompts интегрируйте их в существующие рабочие процессы с помощью Amazon Bedrock API. Такая интеграция позволяет выполнять inference-запросы в реальном времени для множества сценариев, включая отправку форм и обработку данных. Инструкции по реализации см. в материале Making a request to Amazon Bedrock via Amazon API Gateway.
Сложные AI-реализации часто требуют нескольких model inferences, обновлений систем и коммуникаций со стейкхолдерами. AWS Step Functions оркестрирует взаимодействия моделей Amazon Bedrock, координируя несколько workflow-процессов, управляя обработкой ошибок и поддерживая возможность параллельного выполнения. Такая интеграция позволяет взаимодействовать с внешними системами, сохраняя встроенные защитные механизмы, такие как автоматические повторные попытки. Подробнее см. в материале Build generative AI apps using AWS Step Functions and Amazon Bedrock.
Amazon EventBridge выступает как event router для оркестрации сложных рабочих процессов между сервисами AWS. Он использует заданные шаблоны и расписания для маршрутизации событий, обеспечивая автоматические реакции на бизнес-события, изменения системы и триггеры по времени. Такая event-driven архитектура упрощает коммуникацию приложений и управление workflow. Подробности реализации см. в материале Building an event-driven application with Amazon EventBridge.
Amazon Bedrock AgentCore позволяет разработчикам создавать автономные AI-системы через Agents SDK. Эта интеграция использует Strands для разделения нагрузок, помогая повысить производительность и безопасность. Система обеспечивает три ключевые возможности: автоматизированное обучение моделей, упрощенное развертывание и встроенную масштабируемость. Разработчики могут реализовать обработку данных в реальном времени и протоколы безопасности, чтобы обеспечить надежную работу agents. Чтобы начать разработку с Amazon Bedrock AgentCore, посетите материал Securely launch and scale your agents and tools on Amazon Bedrock AgentCore.
Материал — перевод статьи с английского.
Оригинал: Intelligence-driven message defense and insights using Amazon Bedrock