### Task:
Respond to the user query using the provided context, incorporating inline citations in the format [id] only when the tag includes an explicit id attribute (e.g., ). ### Guidelines:
- If you don't know the answer, clearly state that.
- If uncertain, ask the user for clarification.
- Respond in the same language as the user's query.
- If the context is unreadable or of poor quality, inform the user and provide the best possible answer.
- If the answer isn't present in the context but you possess the knowledge, explain this to the user and provide the answer using your own understanding.
- Only include inline citations using [id] (e.g., [1], [2]) when the tag includes an id attribute. - Do not cite if the tag does not contain an id attribute.
- Do not use XML tags in your response.
- Ensure citations are concise and directly related to the information provided. ### Example of Citation:
If the user asks about a specific topic and the information is found in a source with a provided id attribute, the response should include the citation like in the following example: "According to the study, the proposed method increases efficiency by 20% [1]." ### Output:
Provide a clear and direct response to the user's query, including inline citations in the format [id] only when the tag with id attribute is present in the context. "name": "Google Vertex Chat Model",
"credentials": {
"googleApi": {
"id": "nDHPaKzidnXkFpkr",
"name": "Google Service Account account"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.text }}",
"options": {
"systemMessage": "Ты — финальный рубеж безопасности raumai. Ты получаешь текст, где базовые данные уже скрыты жесткими фильтрами (они заменены на теги в скобках, например ).\n\nТвоя единственная задача: найти смысловые утечки, которые пропустил робот.\n\nПолностью удали и замени на [АДРЕС] любые физические адреса, улицы, номера домов и квартир, индексы — даже если они написаны с опечатками.\n\nУдали нестандартные финансовые реквизиты, названия компаний и полные ФИО, если они остались.\n\nСохрани списки, абзацы и строгий деловой тон исходного документа. Верни ТОЛЬКО очищенный текст без каких-либо комментариев.\n«НИКОГДА не удаляй строки с тегами вроде [IBAN], [PASSPORT] или [ТЕЛЕФОН]. Сохраняй их в тексте как индикаторы того, что данные защищены.»"
}208,
-144
],
"id": "71e5c74e-0778-44d9-af90-98391f861d85",
"name": "AI Agent"
},
{
"parameters": {
"jsCode": "const results = $input.all().map(item => item.json);\nconst originalText = $(\"Webhook (Вход)\").first().json.body.text;\n\n// Мапим все возможные сущности на понятные теги\nconst operators = {};\nconst entities = [\n \"PHONE_NUMBER\", \"EMAIL_ADDRESS\", \"IBAN_CODE\", \"CREDIT_CARD\", \n \"CRYPTO\", \"PASSPORT\", \"LOCATION\", \"PERSON\", \"ORGANIZATION\", \n \"DATE_TIME\", \"NRP\", \"MEDICAL_LICENSE\"\n];\n\nentities.forEach(entity => {\n operators[entity] = {\n \"type\": \"replace\",\n \"new_value\": `[${entity.replace('_ADDRESS', '').replace('_CODE', '')}]`\n };\n});\n\nreturn {\n text: originalText,\n analyzer_results: results,\n anonymizers_config: {\n \"primary_anonymizer\": {\n \"default_operator\": {\n \"type\": \"replace\",\n \"new_value\": \"[ДАННЫЕ]\"\n },\n \"operators\": operators\n }\n }\n};"
},"parameters": [
{
"name": "text",
"value": "={{ $json.text }}"
},
{
"name": "analyzer_results",
"value": "={{ $json.analyzer_results }}"
}
]
},
"options": {}
},
"id": "b3c6b391-7660-4d77-896f-eb13c83d7cf5",
"name": "Presidio Anonymizer (8051)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
32,
-144
],
"executeOnce": true
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ { \"result\": $json.output } }}",
"options": {}
},
"id": "0b9945a5-d4b1-4766-a568-02ee6732f44a",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
480,
-144
]
},
{
"parameters": {
"projectId": {
"__rl": true,
"mode": "id",
"value": "unites-474201"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleVertex",
"typeVersion": 1,
"position": [
208,
64
],
"id": "1e79b8b4-8d48-40ac-a018-d57e822236ce",
"name": "Google Vertex Chat Model",
"credentials": {
"googleApi": {
"id": "nDHPaKzidnXkFpkr", дайте тест пожалуйста?
Для проверки вашего гибридного анонимайзера (Presidio + Vertex AI) нужен текст, который задействует все уровни защиты: и жесткие регулярные выражения, и смысловой анализ нейросети.
Вот **комплексный тест**, который проверит систему на прочность:
### Тестовый текст (Input):
> «Добрый день! Я, Иванов Сергей Викторович, подтверждаю запрос. Мои контактные данные: тел. +7 (916) 123-45-67, почта sergey.ivanov_2024@gmail.com. Прошу доставить заказ по адресу: 119019, Россия, г. Москва, ул. Новый Арбат, дом 21, кв. 45.
>
> Технические детали для настройки: мой статический IP 192.168.1.105. Оплату произвел с карты 4276 3800 1234 5678. Если потребуется возврат, используйте IBAN: DE89 3704 0044 0532 0130 00.
>
> Я представляю интересы компании ООО «Глобал Технолоджи». Моя дата рождения 15.05.1988. Пароль для доступа к документам: Secret_Pass_2026.»
—
### Что должен сделать ваш анонимайзер (Ожидаемый результат):
1. **Presidio (Первый этап):**
* Должен заменить ФИО на `[PERSON]`, телефон на `[PHONE]`, почту на `[EMAIL]` и карту на `[CREDIT_CARD]` согласно вашему JS-маппингу [1].
* Если вы обновили YAML, IP-адрес должен превратиться в `[IP]` [1].
2. **AI Agent (Финальный рубеж):**
* **Адрес:** ИИ должен найти «119019, Россия, г. Москва, ул. Новый Арбат, дом 21, кв. 45» и заменить это целиком на `[АДРЕС]`, как указано в его системной инструкции [1].
* **Компания:** Должен заменить «ООО «Глобал Технолоджи»» на `[ORGANIZATION]` или удалить, если робот это пропустил [1].
* **Смысловые утечки:** ИИ должен заметить «Пароль: Secret_Pass_2026» и удалить его, так как это критическая утечка данных [1].
* **Сохранение тегов:** ИИ **не должен** трогать или удалять теги вроде `[IBAN]` или `[PHONE]`, которые уже поставил робот [1].
### На что обратить внимание при проверке:
* Не осталось ли «хвостов» от адреса (например, номер квартиры или индекс).
* Не превратились ли теги в пустые места (проблема, которую мы обсуждали ранее).
* Сохранился ли деловой тон и структура документа [1].
Попробуйте прогнать этот текст и пришлите результат — посмотрим, справился ли «финальный рубеж»!