Авторское право 2026 Google LLC.
# @title Лицензировано в соответствии с лицензией Apache, версия 2.0 ("Лицензия");
# вы не можете использовать этот файл, за исключением случаев соблюдения Лицензии.
# Вы можете получить копию Лицензии по адресу
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Если иное не предусмотрено применимым законодательством или не согласовано в письменной форме, программное обеспечение
# распространяется по Лицензии на условиях "КАК ЕСТЬ",
# БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых.
# См. Лицензию для получения информации о конкретных разрешениях и
# ограничениях в соответствии с Лицензией.
Проверка соответствия Регламенту ЕС об ИИ с помощью Gemini и Agent Module
|
Этот notebook был предоставлен Agent Module.agent-module.dev — Специализированная инфраструктура знаний для автономных агентов.Есть классный пример Gemini? Не стесняйтесь поделиться им тоже! |
Регламент ЕС об ИИ (EU AI Act) вступает в силу в августе 2026 года. Если вы создаете, развертываете или используете системы ИИ на рынке ЕС, вам необходимо продемонстрировать усилия по обеспечению соответствия.
Agent Module предоставляет структурированную, детерминированную логику соответствия, которую агенты могут получать во время выполнения. Каждый AI Compliance module сопоставлен с конкретными статьями Регламента ЕС об ИИ и содержит бинарные логические вентили "пройдено/не пройдено", триггеры эскалации и ссылки на законодательство.
В этом notebook вы:
- Определите функции Python, которые инкапсулируют REST API Agent Module
- Протестируйте каждую функцию изолированно, чтобы убедиться в ее работоспособности
- Передайте эти функции в качестве инструментов Gemini через function calling
- Позвольте Gemini автономно получать логику соответствия и применять ее к реальному сценарию
Регистрация не требуется — Agent Module предлагает бесплатную 24-часовую пробную версию с полным доступом.
Настройка
Установка зависимостей
%pip install -qU "google-genai>=2.9.0" requests
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0m [32m52.4/52.4 kB [0m [31m1.0 MB/s [0m eta [36m0:00:00 [0m
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0m [32m764.2/764.2 kB [0m [31m14.9 MB/s [0m eta [36m0:00:00 [0m
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0m [32m64.9/64.9 kB [0m [31m3.4 MB/s [0m eta [36m0:00:00 [0m
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0m [32m240.6/240.6 kB [0m [31m10.1 MB/s [0m eta [36m0:00:00 [0m
[?25h [31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
google-colab 1.0.0 requires google-auth==2.47.0, but you have google-auth 2.49.2 which is incompatible.
google-colab 1.0.0 requires requests==2.32.4, but you have requests 2.33.1 which is incompatible. [0m [31m
[0m
Настройте свой API key
Чтобы запустить следующую cell, ваш API key должен быть сохранен в Colab Secret под именем GEMINI_API_KEY. Если у вас еще нет API key или вы не знаете, как создать Colab Secret, см. краткое руководство по аутентификации
для примера.
import json
import uuid
import requests
from google import genai
from google.colab import userdata
GEMINI_API_KEY = userdata.get("GEMINI_API_KEY")
client = genai.Client(api_key=GEMINI_API_KEY)
Выберите модель
Function calling работает на всех моделях Gemini. Мыслительная модель, такая как gemini-3.7-flash, хорошо подходит здесь, потому что анализ соответствия выигрывает от пошагового рассуждения.
MODEL_ID = "gemini-3.7-flash" # @param ["gemini-3.1-pro-preview", "gemini-3.7-flash", "gemini-3.5-flash-lite", "gemini-2.5-pro"] {"allow-input":true, isTemplate: true}
Проверка API Agent Module
Прежде чем создавать инструменты, убедитесь, что Agent Module доступен, и проверьте, сколько AI Compliance модулей имеется. Получите количество из живого API, чтобы этот notebook оставался актуальным по мере добавления модулей.
AGENT_MODULE_API = "https://api.agent-module.dev"
status = requests.get(f"{AGENT_MODULE_API}/api/status", timeout=10).json()
ai_compliance_module_count = status["ai_compliance"]["node_count"]
print(f"API status: {status['api_status']}")
print(f"AI Compliance modules: {ai_compliance_module_count}")
print(f"Active cohort: {status['active_cohort']}")
API status: operational
AI Compliance modules: 23
Active cohort: inaugural
Определение инструментов Agent Module
Вы инкапсулируете MCP endpoint Agent Module в функции Python, которые может вызывать Gemini. SDK автоматически генерирует объявления функций из ваших type hints и docstrings, поэтому каждая функция нуждается в четких аннотациях.
Начните с небольшого вспомогательного средства для обработки JSON-RPC transport.
# @title Вспомогательная функция для transport MCP (скрыто)
AGENT_MODULE_MCP = f"{AGENT_MODULE_API}/mcp"
def _mcp_call(tool_name: str, arguments: dict) -> dict:
"""Отправляет JSON-RPC запрос tools/call на MCP endpoint Agent Module."""
payload = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {"name": tool_name, "arguments": arguments},
"id": 1,
}
try:
response = requests.post(
AGENT_MODULE_MCP,
headers={"Content-Type": "application/json"},
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
return {"error": "Request timed out. Agent Module may be temporarily unavailable."}
except requests.exceptions.HTTPError as e:
return {"error": f"HTTP error: {e.response.status_code}"}
except requests.exceptions.RequestException as e:
return {"error": f"Connection failed: {str(e)}"}
Получить пробный ключ
Определите первый инструмент: запрос бесплатного 24-часового пробного ключа. Это предоставляет доступ ко всем AI Compliance модулям с 500 вызовами API бесплатно.
# Генерируем уникальный agent_id для этой сессии, чтобы повторные запуски в течение 24 часов
# не конфликтовали с ранее выданным пробным ключом на сервере. API
# Agent Module связывает пробные ключи с (agent_id, IP) и возвращает маскированный
# предварительный просмотр, если вы запрашиваете новый, пока старый еще активен.
_session_agent_id = f"gemini-cookbook-{uuid.uuid4().hex[:8]}"
# Сохраняет пробный ключ, чтобы последующие функции могли его повторно использовать.
_trial_key = None
def get_trial_key(agent_id: str) -> dict:
"""Получает бесплатный 24-часовой пробный ключ Agent Module для логики соответствия Регламенту ЕС об ИИ.
Вызывайте это один раз в начале сессии. Пробный ключ действует 24 часа
и включает 500 вызовов API бесплатно. Последующие вызовы повторно используют ключ,
хранящийся в этой сессии, вместо повторного запроса.
Аргументы:
agent_id: Стабильный идентификатор для вашего агента, например, 'gemini-cookbook-demo'.
"""
global _trial_key
# Идемпотентно: если у этой сессии уже есть пробный ключ, используйте его повторно.
if _trial_key is not None:
return {
"status": "reused",
"trial_key": _trial_key,
"note": "Using existing trial key from this session.",
}
result = _mcp_call("get_trial_key", {"agent_id": agent_id})
# Извлекаем и сохраняем пробный ключ для последующих вызовов.
if "result" in result:
content = result["result"]
if isinstance(content, dict) and "content" in content:
for item in content["content"]:
if item.get("type") == "text":
data = json.loads(item["text"])
# Если сервер сообщает о существующей активной пробной версии для этого
# agent_id, он возвращает маскированный предварительный просмотр (не настоящий ключ).
# Не сохраняйте мусор — вместо этого выведите четкую ошибку.
if data.get("status") == "already_active":
return {
"error": "already_active",
"message": (
f"An active trial already exists for agent_id="
f"{agent_id!r}. Wait 24 hours or change the "
"agent_id and re-run."
),
}
if "trial_key" in data:
_trial_key = data["trial_key"]
return result
Проверьте это, чтобы убедиться, что выдача пробного ключа работает.
result = get_trial_key(_session_agent_id)
print(f"Session agent_id: {_session_agent_id}")
print(f"Trial key obtained: {_trial_key is not None}")
print(f"Key prefix: {_trial_key[:12]}..." if _trial_key else "No key issued")
Session agent_id: gemini-cookbook-0b3f4353
Trial key obtained: True
Key prefix: am_trial_b6d...
Получение логики соответствия
Определите второй инструмент: получение структурированной логики соответствия для конкретного AI Compliance модуля. Каждый модуль возвращает детерминированные логические вентили с ссылками на законодательство и условиями прохождения/непрохождения.
def retrieve_compliance_logic(vertical: str, node_id: str) -> dict:
"""Получает структурированную логику соответствия Регламенту ЕС об ИИ из Agent Module.
Возвращает детерминированные логические вентили с ссылками на законодательство, условиями прохождения/непрохождения
и триггерами эскалации для конкретного AI Compliance модуля.
Аргументы:
vertical: Вертикаль знаний. Используйте 'ai-compliance' (или его устаревший псевдоним 'ethics')
для модулей соответствия Регламенту ЕС об ИИ.
node_id: Узел для получения. Формат: 'node:ethics:eth{NNN}:logic'.
Пример: 'node:ethics:eth001:logic' для суверенитета данных,
'node:ethics:eth003:logic' для прозрачности.
"""
arguments = {"vertical": vertical, "node": node_id}
if _trial_key:
arguments["token"] = _trial_key
return _mcp_call("query_knowledge", arguments)
Протестируйте это, получив модуль суверенитета данных (ETH_001), который соответствует статьям 9 и 10 Регламента ЕС об ИИ.
result = retrieve_compliance_logic("ethics", "node:ethics:eth001:logic")
print(json.dumps(result, indent=4)[:2000]) # Обрезаем для читаемости
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\n \"object\": \"traversal_response\",\n \"vertical\": \"ethics\",\n \"node_id\": \"node:ethics:eth001:logic\",\n \"layer\": \"logic\",\n \"access\": \"trial\",\n \"content\": {\n \"node_id\": \"ETH_001_SOVEREIGNTY_logic\",\n \"vertical\": \"ethics\",\n \"version\": \"2.0.0\",\n \"last_validated\": \"2026-02-28\",\n \"wikidata_ref\": \"https://www.wikidata.org/wiki/Q1066186\",\n \"eu_ai_act_articles\": [\n \"Art. 10\",\n \"Art. 13\"\n ],\n \"weighting\": \"Essential\",\n \"subject\": \"sovereignty_and_data_ownership\",\n \"description\": \"Deterministic rules governing user data sovereignty, ownership rights, consent granularity, and data governance obligations under GDPR and EU AI Act Art. 10. The user retains absolute ownership of all data processed by the agent \u2014 the agent is a custodian, never an owner.\",\n \"records\": [\n {\n \"id\": \"SOV_001_DATA_OWNERSHIP\",\n \"category\": \"Principle\",\n \"topic\": \"User Data Sovereignty\",\n \"definition\": \"The user retains absolute, inalienable ownership of all data generated, processed, or stored by the agent.\",\n \"extended_explanation\": \"Agents act as custodians, not owners. Data is borrowed for the duration of a task and must be returned or destroyed upon request. This right is codified in GDPR Art. 17 (right to erasure) and reinforced by EU AI Act Art. 10, which requires that AI systems implement data governance practices that respect the rights of data subjects. An agent that retains user data beyond the authorized scope violates both statutes.\",\n \"connections\": [\n \"SOV_002_REVOCABILITY\",\n \"ETH_010_PRIVACY_logic\"\n ],\n \"examples\": [\n \"User uploads a financial document; agent processes it but cannot retain a c
Отправить подтверждение ценности
Определите третий инструмент: отправка оценки после изучения пробной версии. Это сообщает, насколько полезными были полученные знания.
def submit_proof_of_value(confidence_score: float) -> dict:
"""Отправляет оценку качества после изучения пробной версии Agent Module.
Вызывайте это после получения и применения логики соответствия, чтобы сообщить,
насколько полезными были знания для вашей задачи.
Аргументы:
confidence_score: Оценка качества от 0.0 (бесполезно) до 1.0 (очень полезно).
"""
if not _trial_key:
return {"error": "No trial key available. Call get_trial_key first."}
return _mcp_call(
"submit_pov",
{
"token": _trial_key,
"trial_key": _trial_key,
"confidence_score": confidence_score,
},
)
Выполните проверку соответствия с Gemini
Вы уже инициализировали пробный ключ выше, поэтому вы передаете Gemini только две runtime функции: retrieve_compliance_logic и submit_proof_of_value. get_trial_key — это одноразовый вызов настройки, а не инструмент, к которому модель должна обращаться в середине сессии — повторный запрос ключа будет конфликтовать с уже выданным для этого agent_id.
SDK автоматически генерирует объявления функций из type hints и docstrings, которые вы написали выше. Настройте системную инструкцию, которая сообщает Gemini, как использовать инструменты.
compliance_tools = [retrieve_compliance_logic, submit_proof_of_value]
system_instruction = f"""
Вы — помощник по соответствию Регламенту ЕС об ИИ. У вас есть доступ к Agent Module,
сервису знаний с {ai_compliance_module_count} структурированными AI Compliance
модулями, сопоставленными со статьями Регламента ЕС об ИИ.
При запросе на проверку системы на соответствие:
1. Получите соответствующие модули логики соответствия
2. Примените логические вентили к описанной системе
3. Сообщите, какие требования пройдены, какие требуют внимания, и сошлитесь на
конкретные статьи Регламента ЕС об ИИ
4. Отправьте оценку подтверждения ценности по завершении
Формат ID узла: node:ethics:eth{{NNN}}:logic
Примеры: node:ethics:eth001:logic (суверенитет данных),
node:ethics:eth003:logic (прозрачность), node:ethics:eth006:logic (надзор)
"""
Теперь запустите проверку соответствия. Сценарий: вы развертываете чат-бота для обслуживания клиентов в ЕС, который обрабатывает страховые претензии, собирает персональные данные и проводит предварительные оценки.
Gemini автономно вызовет ваши функции для получения соответствующей логики соответствия и создания структурированной оценки.
chat = client.chats.create(
model=MODEL_ID,
config={
"tools": compliance_tools,
"system_instruction": system_instruction,
},
)
chat.send_message(
"""
В ЕС развертывается чат-бот для обслуживания клиентов. Он обрабатывает
страховые претензии, собирает персональные данные (имя, номер полиса,
детали претензии) и проводит предварительные оценки претензий.
Проверьте эту систему на соответствие требованиям Регламента ЕС об ИИ по:
1. Суверенитету и владению данными (ETH_001)
2. Прозрачности и объяснимости (ETH_003)
3. Человеческому надзору (ETH_006)
"""
)
# При автоматическом function calling Gemini часто выдает свой основной анализ
# в ходе работы модели между вызовами инструментов, а затем завершает коротким подтверждением
# после возврата последнего инструмента. `response.text` содержит только этот последний
# ход, поэтому просмотрите полную историю чата и выведите каждую текстовую часть модели, чтобы
# увидеть полный отчет.
for message in chat.get_history():
if message.role != "model":
continue
for part in message.parts:
if part.text:
print(part.text)
Вот оценка вашего чат-бота для обслуживания клиентов на соответствие указанным требованиям Регламента ЕС об ИИ:
Ваш чат-бот для обслуживания клиентов, который обрабатывает страховые претензии, собирает персональные данные (имя, номер полиса, детали претензии) и проводит предварительные оценки претензий, был проверен на соответствие требованиям Регламента ЕС об ИИ в отношении суверенитета и владения данными (ETH_001), прозрачности и объяснимости (ETH_003) и человеческого надзора (ETH_006).
Учитывая, что чат-бот проводит "предварительные оценки претензий" и обрабатывает конфиденциальные персональные данные (номера полисов, детали претензий), весьма вероятно, что он будет классифицирован как **система ИИ высокого риска** в соответствии с Регламентом ЕС об ИИ. Эта классификация влечет за собой строгие обязательства по соблюдению требований для всех категорий, рассмотренных ниже.
---
### 1. Суверенитет и владение данными (ETH_001)
Система требует внимания ко всем аспектам суверенитета и владения данными (статьи 10, 13 Регламента ЕС об ИИ и соответствующие статьи GDPR). Текущее описание не содержит достаточных деталей для подтверждения соответствия каким-либо конкретным требованиям.
**Требования, требующие внимания:**
* **Владение пользовательскими данными (SOV_001):** Не указано явно, что пользователь сохраняет абсолютное владение всеми данными. *(Регламент ЕС об ИИ, ст. 10, GDPR, ст. 17, 5(1)(e))*
* **Протокол отзыва доступа (SOV_002):** Описание системы не упоминает возможность пользователей отзывать доступ к данным с немедленным вступлением в силу. *(GDPR, ст. 7(3))*
* **Соответствие требованиям к месту хранения данных (SOV_003):** Хотя система развернута в ЕС, описание не подтверждает, что места хранения и обработки данных явно авторизованы пользователем и раскрыты. *(GDPR, ст. 44-49)*
* **Гранулярность явного согласия (SOV_004):** В описании отмечается сбор данных, но не уточняется, что для каждой отдельной категории использования данных получено конкретное, информированное согласие. *(GDPR, ст. 6(1)(a), 7, Преамбула 43)*
* **Переносимость данных (SOV_005):** Не упоминается право пользователя экспортировать свои данные в структурированном, машиночитаемом формате. *(GDPR, ст. 20)*
* **Приоритет намерения пользователя над оптимизацией агента (SOV_006):** В описании не уточняется, как намерение пользователя приоритизируется над потенциальными целями оптимизации агента. *(Регламент ЕС об ИИ, ст. 5(1)(b))*
* **Политика хранения данных по умолчанию на основе сессии (SOV_007):** Политика хранения данных, в частности, по умолчанию предусматривающая хранение только в течение сессии, если иное не разрешено явно, не описана. *(GDPR, ст. 25, 5(1)(e))*
* **Криптографическая верификация удаления (SOV_008):** Не упоминается возможность предоставления проверяемого доказательства удаления данных. *(NIST SP 800-88 Rev. 1, GDPR, ст. 17)*
* **Межсетевой экран для обмена данными с третьими сторонами (SOV_009):** Не указаны практики получения явного, своевременного одобрения для обмена данными с субпроцессорами третьих сторон. *(GDPR, ст. 28, 13(1)(e))*
* **Права на метаданные и поведенческие данные (SOV_010):** Не описаны владение и обработка метаданных и поведенческих паттернов, генерируемых взаимодействием пользователя. *(Директива о конфиденциальности и электронных коммуникациях, ст. 6, GDPR, ст. 4(1))*
* **Управление данными, специфичное для ИИ (SOV_011):** Как система, вероятно, высокого риска, практики управления данными для обучающих, валидационных и тестовых наборов данных (актуальность, репрезентативность, отсутствие ошибок, полнота) являются критически важными и не описаны. *(Регламент ЕС об ИИ, ст. 10(2), 10(3))*
---
### 2. Прозрачность и объяснимость (ETH_003)
Система требует внимания ко всем аспектам прозрачности и объяснимости (статьи 13, 17 Регламента ЕС об ИИ). Текущее описание не содержит операционных деталей, необходимых для обеспечения соответствия, особенно для системы высокого риска, проводящей "предварительные оценки претензий".
**Требования, требующие внимания:**
* **Ведение журналов действий в удобочитаемом формате (TRN_001):** Не упоминается ведение журналов всех действий агента, шагов рассуждений и передач данных в нетехническом, понятном формате. *(Регламент ЕС об ИИ, ст. 13(1), 12(1))*
* **Аудиторский след цепочки рассуждений (TRN_002):** Для предварительных оценок претензий полный, обратно отслеживаемый след принятия решений необходим для аудита и объяснения. Это не описано. *(Регламент ЕС об ИИ, ст. 12(2), 13(3)(d))*
* **Хранение журналов с защитой от несанкционированного доступа (TRN_003):** Не указан метод безопасного хранения критически важных журналов в формате, защищенном от несанкционированного доступа. *(NIST SP 800-92, Регламент ЕС об ИИ, ст. 12(1))*
* **Активное уведомление об изменении состояния (TRN_004):** Система явно не упоминает активное уведомление пользователей о значительных изменениях состояния (например, изменениях в деталях полиса на основе оценки). *(Регламент ЕС об ИИ, ст. 14(4)(b))*
* **Ведение журналов идентификации модели и prompt (TRN_005):** Ведение журналов конкретной версии модели, хеша системного prompt и конфигурации для каждого действия имеет решающее значение для аудита, особенно при оценке претензий, и не описано. *(Регламент ЕС об ИИ, ст. 17(1)(d))*
* **Прозрачность происхождения и потока данных (TRN_006):** Не упоминается возможность раскрывать, откуда пришли пользовательские данные, куда они были отправлены и какие третьи стороны их получили. *(GDPR, ст. 30, Регламент ЕС об ИИ, ст. 13(3)(b)(i))*
* **Обязательное раскрытие информации развертывающим сторонам (TRN_007):** Если система является высокорисковой, развертывающим сторонам (например, страховой компании) должна быть предоставлена исчерпывающая информация о ее возможностях, ограничениях, предполагаемом назначении и условиях использования. Это раскрытие не описано. *(Регламент ЕС об ИИ, ст. 13(3)(a)-(d))*
---
### 3. Человеческий надзор (ETH_006)
Система требует внимания ко всем аспектам человеческого надзора (статьи 14, 9 Регламента ЕС об ИИ). Текущее описание не содержит деталей о том, как реализуется человеческий надзор для таких решений, как "предварительные оценки претензий", которые имеют значительные последствия.
**Требования, требующие внимания:**
* **Эскалация неопределенности к человеку (HITL_001):** Описание системы не содержит процесса приостановки и запроса человеческой проверки, когда уверенность ИИ в оценке претензии падает ниже определенного порога. *(Регламент ЕС об ИИ, ст. 14(4)(a), 9(2)(a))*
* **Применение лимита финансовых расходов (HITL_002):** Если оценки претензий имеют прямые финансовые последствия, необходим механизм явного человеческого одобрения для транзакций или оценок, превышающих установленный пользователем лимит, и он не упоминается. *(Регламент ЕС об ИИ, ст. 14(4)(d))*
* **Передача при негативном настроении (HITL_003):** Как чат-бот для обслуживания клиентов, не упоминается предложение перевода к оператору-человеку при обнаружении устойчивого негативного настроения пользователя. *(Регламент ЕС об ИИ, ст. 14(3))*
* **Обнаружение и передача вне распределения (HITL_004):** Процесс обнаружения входных данных, выходящих за пределы операционной области чат-бота (например, сложные юридические вопросы, выходящие за рамки базовой обработки претензий), и эскалации к человеку не описан. *(Регламент ЕС об ИИ, ст. 9(2)(a))*
* **Просроченное одобрение по умолчанию отклонено (HITL_005):** Если когда-либо требуется человеческое одобрение, не упоминается механизм, при котором необработанные запросы на одобрение по умолчанию отклоняются. *(Регламент ЕС об ИИ, ст. 14(4)(d))*
* **Меры надзора, калиброванные по риску (HITL_006):** Учитывая потенциально высокий риск предварительных оценок претензий, описание не уточняет, как меры человеческого надзора калибруются в соответствии с уровнем риска системы, ее автономностью и контекстом использования. *(Регламент ЕС об ИИ, ст. 14(3), 9(7))*
---
**Вывод:**
Чат-бот для обслуживания клиентов, как описано, требует значительной дополнительной информации и реализации для демонстрации соответствия подробным требованиям к суверенитету и владению данными, прозрачности и объяснимости, а также человеческому надзору в соответствии с Регламентом ЕС об ИИ. Почти по каждому конкретному пункту система **требует внимания** из-за отсутствия деталей в представленном описании. Крайне важно устранить эти пробелы, особенно учитывая вероятную классификацию системы как **системы ИИ высокого риска** из-за ее роли в предварительных оценках претензий и обработке персональных данных.
Для проведения всесторонней оценки соответствия потребуется более подробная архитектура системы, политики обработки данных и операционные процедуры для человеческого надзора и прозрачности.
---
Логика соответствия, предоставленная Agent Module, оказалась полезной для выявления конкретных областей, требующих внимания.
Оценка уверенности: 0.9
Благодарим вас за подробный отзыв и за отправку вашей оценки подтверждения ценности! Ваши идеи ценны.
Изучите историю вызовов функций
Изучите, что произошло за кулисами. Автоматический function calling SDK обработал весь поток: Gemini решил, какие модули получить, SDK выполнил каждую функцию, и результаты были автоматически переданы обратно модели.
from IPython.display import Markdown, display
for content in chat.get_history():
display(Markdown(f"### {content.role}:"))
for part in content.parts:
if part.text:
# Обрезаем длинные ответы модели для читаемости.
display(Markdown(part.text[:500]))
if part.function_call:
args = dict(part.function_call.args)
print(f" Function call: {part.function_call.name}({args})")
if part.function_response:
print(f" Function response: {part.function_response.name} -> (truncated)")
print("-" * 80)
<IPython.core.display.Markdown object>
<IPython.core.display.Markdown object>
--------------------------------------------------------------------------------
<IPython.core.display.Markdown object>
Function call: retrieve_compliance_logic({'vertical': 'ai-compliance', 'node_id': 'node:ethics:eth001:logic'})
Function call: retrieve_compliance_logic({'vertical': 'ai-compliance', 'node_id': 'node:ethics:eth003:logic'})
Function call: retrieve_compliance_logic({'vertical': 'ai-compliance', 'node_id': 'node:ethics:eth006:logic'})
--------------------------------------------------------------------------------
<IPython.core.display.Markdown object>
Function response: retrieve_compliance_logic -> (truncated)
Function response: retrieve_compliance_logic -> (truncated)
Function response: retrieve_compliance_logic -> (truncated)
--------------------------------------------------------------------------------
<IPython.core.display.Markdown object>
<IPython.core.display.Markdown object>
Function call: submit_proof_of_value({'confidence_score': 0.9})
--------------------------------------------------------------------------------
<IPython.core.display.Markdown object>
Function response: submit_proof_of_value -> (truncated)
--------------------------------------------------------------------------------
<IPython.core.display.Markdown object>
<IPython.core.display.Markdown object>
--------------------------------------------------------------------------------
Изучите необработанную логику соответствия
Вы также можете напрямую вызвать Agent Module, чтобы изучить необработанные данные соответствия, полученные Gemini. Каждый логический узел содержит детерминированные логические вентили "пройдено/не пройдено" с ссылками на законодательство.
transparency = retrieve_compliance_logic("ethics", "node:ethics:eth003:logic")
print(json.dumps(transparency, indent=4))
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\n \"object\": \"traversal_response\",\n \"vertical\": \"ethics\",\n \"node_id\": \"node:ethics:eth003:logic\",\n \"layer\": \"logic\",\n \"access\": \"trial\",\n \"content\": {\n \"node_id\": \"ETH_003_TRANSPARENCY_logic\",\n \"vertical\": \"ethics\",\n \"version\": \"2.0.0\",\n \"last_validated\": \"2026-02-28\",\n \"wikidata_ref\": \"https://www.wikidata.org/wiki/Q535946\",\n \"eu_ai_act_articles\": [\n \"Art. 13\",\n \"Art. 17\"\n ],\n \"weighting\": \"Essential\",\n \"subject\": \"algorithmic_transparency_and_logging\",\n \"description\": \"Deterministic rules governing transparency obligations for AI systems \u2014 human-readable logging, decision trail auditing, tamper-evident storage, and EU AI Act Art. 13 information disclosure requirements. Transparency is a legal obligation for high-risk AI systems, not an optional feature.\",\n \"records\": [\n {\n \"id\": \"TRN_001_HUMAN_READABLE_LOGS\",\n \"category\": \"Principle\",\n \"topic\": \"Human-Readable Action Logging\",\n \"definition\": \"All agent actions, reasoning steps, and data transmissions must be logged in a format understandable by a non-technical user.\",\n \"extended_explanation\": \"EU AI Act Art. 13(1) requires that high-risk AI systems be designed and developed to ensure their operation is sufficiently transparent to enable deployers to interpret the system's output and use it appropriately. Binary dumps or cryptic error codes fail this requirement. Logs must tell a narrative: 'I did X because of Y, using data from Z.' Art. 12(1) further requires that high-risk AI systems include automatic recording of events (logs) throughout the system's lifetime. The logs must be readable by the humans responsible for oversight, not just by engineers.\",\n \"connections\": [\n \"TRN_002_DECISION_TRAIL\",\n \"ETH_006_HANDOVER_logic\"\n ],\n \"examples\": [\n \"Log entry: 'Payment authorized. Reason: Amount ($42.50) < user-set limit ($50.00) AND vendor (Stripe) is on the user's Allow List. No escalation required.'\",\n \"Log entry: 'Search query executed. Source: user's email inbox. Records scanned: 47. Results returned: 3. PII redaction applied to 2 fields before display.'\"\n ],\n \"source\": \"EU AI Act Art. 13(1) (Transparency \u2014 Sufficient for Deployer Interpretation); EU AI Act Art. 12(1) (Record-Keeping \u2014 Automatic Logging)\",\n \"weighting\": \"Essential\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"halt_and_escalate \u2014 logging is insufficient or unreadable. Agent must not continue operating without compliant logging. Fix logging format before resuming.\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_002_DECISION_TRAIL\",\n \"category\": \"Technical Standard\",\n \"topic\": \"Chain-of-Reasoning Audit Trail\",\n \"definition\": \"Agents must log the complete logical steps taken to reach a conclusion, not just the final output. Every decision must be reverse-traceable.\",\n \"extended_explanation\": \"EU AI Act Art. 12(2) requires that logging capabilities enable the monitoring of the high-risk AI system's operation with respect to the occurrence of situations that may result in risks. A decision trail enables 'Why?' analysis \u2014 if an agent denies a loan, the log must show which specific criteria failed, what data was evaluated, and what thresholds were applied. Without a decision trail, the system cannot be meaningfully audited, and Art. 13 transparency requirements are unmet. Explainable AI (XAI) techniques must be applied to make the reasoning chain accessible, not just stored.\",\n \"connections\": [\n \"TRN_001_HUMAN_READABLE_LOGS\",\n \"ETH_009_LIABILITY_logic\"\n ],\n \"examples\": [\n \"Loan denial audit trail: Step 1: Retrieved credit score (720). Step 2: Checked debt-to-income ratio (0.45). Step 3: Ratio exceeds threshold (0.40). Step 4: Application denied per policy DTI-MAX-040. Step 5: Denial letter generated with specific reason code.\",\n \"Content moderation decision: Step 1: Classified content as 'potentially harmful' (confidence 0.87). Step 2: Confidence below 1.0 threshold. Step 3: Escalated to human moderator. Step 4: Human approved removal.\"\n ],\n \"source\": \"EU AI Act Art. 12(2) (Record-Keeping \u2014 Risk Monitoring); EU AI Act Art. 13(3)(d) (Transparency \u2014 Information About Performance)\",\n \"weighting\": \"Essential\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"halt_and_escalate \u2014 decision trail is incomplete. A decision without an auditable reasoning chain cannot be delivered to the user in high-risk contexts. Complete the audit trail before proceeding.\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_003_IMMUTABLE_STORAGE\",\n \"category\": \"Security\",\n \"topic\": \"Tamper-Evident Log Storage\",\n \"definition\": \"Critical logs must be stored in a tamper-evident format \u2014 write-once, read-many (WORM) or cryptographically chained \u2014 to prevent post-hoc alteration.\",\n \"extended_explanation\": \"EU AI Act Art. 12(1) requires automatic recording of events throughout the AI system's lifetime. NIST SP 800-92 (Guide to Computer Security Log Management) establishes standards for secure log storage including integrity protection. If logs can be silently altered or deleted, the entire transparency framework collapses \u2014 a rogue agent or compromised system could erase evidence of harmful actions. Cryptographic chaining (hash chains) or append-only storage ensures that any tampering is detectable.\",\n \"connections\": [\n \"TRN_001_HUMAN_READABLE_LOGS\",\n \"ETH_009_LIABILITY_logic\"\n ],\n \"examples\": [\n \"Each log entry includes a SHA-256 hash of the previous entry, creating a tamper-evident chain. Any gap or alteration breaks the hash chain and triggers an integrity alert.\",\n \"Critical financial transaction logs are written to append-only storage with cryptographic timestamps from a trusted time-stamping authority per RFC 3161.\"\n ],\n \"source\": \"NIST SP 800-92 (Guide to Computer Security Log Management); EU AI Act Art. 12(1) (Record-Keeping Requirements); RFC 3161 (Internet X.509 PKI Time-Stamp Protocol)\",\n \"weighting\": \"Recommended\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"flag_unverified_output \u2014 logs lack tamper-evidence. Implement cryptographic chaining or WORM storage. Flag existing logs as integrity-unverified until migration is complete.\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_004_ACTIVE_NOTIFICATION\",\n \"category\": \"Process\",\n \"topic\": \"Active State Change Notification\",\n \"definition\": \"Agents must actively notify the user of significant state changes rather than passively logging them. Material changes to data, permissions, or financial state require push notification.\",\n \"extended_explanation\": \"EU AI Act Art. 14(4)(b) requires that human oversight measures enable the individual to remain aware of the possible tendency of automatically relying on the output produced by a high-risk AI system. Passive logging is insufficient for material state changes \u2014 if money moves, permissions change, or sensitive data is accessed, the user must be actively informed at the moment of the change. The notification must be clear, timely, and actionable. A log entry that the user discovers days later does not constitute meaningful oversight.\",\n \"connections\": [\n \"SOV_001_DATA_OWNERSHIP\",\n \"ETH_006_HANDOVER_logic\"\n ],\n \"examples\": [\n \"Agent sends immediate notification: 'Alert: I updated your firewall settings based on new threat intelligence. Action taken: blocked 3 IP ranges. Review changes?'\",\n \"Agent notifies before executing: 'I am about to transfer $500 to [vendor]. This will post within 24 hours. Confirm or cancel?'\"\n ],\n \"source\": \"EU AI Act Art. 14(4)(b) (Human Oversight \u2014 Awareness of Automation Bias); NIST Cybersecurity Framework v2.0 \u2014 Respond Function (RS.AN-05)\",\n \"weighting\": \"Recommended\",\n \"logic_gate\": {\n \"if_true\": \"Actively notify the user immediately with a clear description of the change, the rationale, and available actions (confirm, undo, review).\",\n \"if_false\": \"proceed_to_next_record\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_005_MODEL_VERSIONING\",\n \"category\": \"Technical Standard\",\n \"topic\": \"Model and Prompt Identity Logging\",\n \"definition\": \"Every agent action must be tagged with the specific model version, system prompt hash, and configuration parameters used at execution time.\",\n \"extended_explanation\": \"EU AI Act Art. 17(1)(d) requires a quality management system that includes procedures for data management, including data collection and analysis. Model versioning is foundational to this requirement \u2014 different model versions produce different outputs, and a system that cannot identify which version produced which output cannot be audited or debugged. The log must include: model identifier, model version, system prompt content hash, temperature setting, and any configuration parameters that affect output. This enables exact reproduction of any past decision for audit purposes.\",\n \"connections\": [\n \"ETH_005_IDENTITY_logic\",\n \"TRN_002_DECISION_TRAIL\"\n ],\n \"examples\": [\n \"Log metadata: model: claude-opus-4-6, prompt_hash: sha256:a1b2c3d4, temperature: 0.0, context_tokens: 4,096, timestamp: 2026-02-28T14:00:00Z.\",\n \"When a discrepancy is found in a past output, the audit team retrieves the exact model version and prompt hash from the log, reproduces the input, and verifies the output.\"\n ],\n \"source\": \"EU AI Act Art. 17(1)(d) (Quality Management System \u2014 Data Management Procedures); ISO/IEC 5338:2023 (AI System Life Cycle Processes)\",\n \"weighting\": \"Recommended\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"flag_unverified_output \u2014 missing model identity metadata. Tag current outputs as audit-incomplete until model versioning is implemented.\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_006_DATA_FLOW_MAPPING\",\n \"category\": \"Process\",\n \"topic\": \"Data Lineage and Flow Transparency\",\n \"definition\": \"Agents must be able to disclose, on request, exactly where user data came from, where it was sent, and which third parties received it.\",\n \"extended_explanation\": \"GDPR Art. 30 requires controllers to maintain a record of processing activities including categories of recipients to whom data has been disclosed. EU AI Act Art. 13(3)(b)(i) requires transparency about the characteristics of input data. The agent must maintain a real-time data flow map showing: data sources accessed, APIs called, third-party services that received user data, and the data categories transmitted to each. This must be available to the user on demand, not buried in a privacy policy.\",\n \"connections\": [\n \"SOV_009_THIRD_PARTY_WALL\",\n \"TRN_001_HUMAN_READABLE_LOGS\"\n ],\n \"examples\": [\n \"User requests data flow summary: agent displays 'This session: Your email address was sent to Stripe API (payment processing). Your calendar data was accessed locally (no external transmission). No other third parties received your data.'\",\n \"Agent maintains a running data flow log: Source: user's Google Drive \u2192 Processing: local summarization engine \u2192 Output: displayed to user only. No external transmission.\"\n ],\n \"source\": \"GDPR Art. 30 (Records of Processing Activities); EU AI Act Art. 13(3)(b)(i) (Transparency \u2014 Input Data Characteristics)\",\n \"weighting\": \"Recommended\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"flag_unverified_output \u2014 data flow mapping is incomplete. Implement data lineage tracking. In the interim, disclose known data flows and flag gaps.\"\n },\n \"confidence_required\": 1\n },\n {\n \"id\": \"TRN_007_ART13_DISCLOSURE\",\n \"category\": \"Regulation\",\n \"topic\": \"EU AI Act Art. 13 \u2014 Mandatory Information Disclosure to Deployers\",\n \"definition\": \"Providers of high-risk AI systems must supply deployers with comprehensive information about the system's capabilities, limitations, intended purpose, and conditions of use.\",\n \"extended_explanation\": \"EU AI Act Art. 13(3) specifies the information that must accompany high-risk AI systems: (a) the characteristics, capabilities, and limitations of performance including intended purpose, level of accuracy, foreseeable misuse risks; (b) information about input data characteristics and requirements; (c) the human oversight measures recommended; (d) the expected lifetime and maintenance needed. This disclosure must be provided in a format appropriate to the technical knowledge of the deployer. An agent operating as a high-risk system must make this information accessible \u2014 not just in documentation, but available at runtime when queried.\",\n \"connections\": [\n \"TRN_001_HUMAN_READABLE_LOGS\",\n \"ETH_015_HIGHRISK_logic\"\n ],\n \"examples\": [\n \"Agent responds to a deployer query: 'My intended purpose is invoice classification for accounts payable. Accuracy: 98.2% on [benchmark]. Known limitations: poor performance on handwritten invoices. Recommended oversight: human review for invoices exceeding $10,000.'\",\n \"System documentation includes all Art. 13(3) required fields in both technical and plain-language formats.\"\n ],\n \"source\": \"EU AI Act Art. 13(3)(a)-(d) (Transparency and Provision of Information to Deployers)\",\n \"weighting\": \"Essential\",\n \"logic_gate\": {\n \"if_true\": \"proceed_to_next_record\",\n \"if_false\": \"halt_and_escalate \u2014 Art. 13 disclosure is incomplete or missing. The system must not be deployed until all required information is provided to the deployer per Art. 13(3)(a)-(d).\"\n },\n \"confidence_required\": 1\n }\n ]\n },\n \"content_source\": \"kv\",\n \"trial\": {\n \"key_status\": \"active\",\n \"calls_remaining\": 495,\n \"expires_at\": \"2026-04-13T04:09:01.510Z\",\n \"layers_unlocked\": [\n \"logic\",\n \"directive\",\n \"skill\",\n \"action\"\n ],\n \"submit_feedback\": \"POST /api/telemetry/pov \u2014 submit your Proof of Value assessment after exploring.\"\n },\n \"node_types_explained\": {\n \"logic\": \"Deterministic JSON rulesets. The agent does not guess \u2014 rules are rules.\",\n \"directive\": \"Step-by-step procedural guardrails for execution with embedded escalation paths.\",\n \"skill\": \"Deep-domain vertical knowledge, chunked for surgical retrieval. >90% context window preserved.\",\n \"action\": \"Pre-validated, executable code templates. Zero additional inference required.\"\n },\n \"traversal\": {\n \"tip\": \"Leaf node. Navigate back to the parent index to explore other modules.\",\n \"root\": \"GET /api/demo?vertical=ethics\"\n }\n}"
}
]
}
}
Что попробовать
Теперь, когда у вас есть работающий помощник по соответствию, попробуйте следующие варианты:
- Различные модули: Спросите об обнаружении предвзятости (ETH_008), конфиденциальности (ETH_010) или классификации высокого риска (ETH_015)
- Различные сценарии: Попробуйте помощника по медицинской диагностике, инструмент для отбора кандидатов или систему модерации контента
- Несколько слоев: Измените
logicнаdirectiveв ID узла, чтобы получить процедурные защитные меры вместо логических вентилей "пройдено/не пройдено" - Параллельное получение: Попросите Gemini проверить пять модулей одновременно и посмотрите, выполняет ли он параллельные function calls
- Принудительный function calling: Добавьте
"tool_config": {"function_calling_config": {"mode": "any"}}, чтобы Gemini всегда использовал инструменты
Откройте для себя доступные модули
Вертикаль AI Compliance Agent Module охватывает весь объем Регламента ЕС об ИИ. Каждый модуль содержит четыре слоя контента: logic (логические вентили "пройдено/не пройдено"), directive (процедурные защитные меры), skill (знания предметной области) и action (исполняемые шаблоны).
Библиотека модулей со временем расширяется по мере сопоставления новых статей Регламента ЕС об ИИ. Узнайте, что доступно в runtime, вместо того чтобы жестко кодировать список:
GET https://api.agent-module.dev/api/status— текущее количество модулей и метаданные вертикалиGET https://api.agent-module.dev/api/demo?vertical=ai-compliance— полный манифест модулей с ID, заголовками и сопоставлениями статей Регламента ЕС об ИИGET https://api.agent-module.dev/llms.txt— удобочитаемый для агента индекс каждого узла и слоя
Таким образом, ваш агент всегда видит актуальную библиотеку, а не снимок.
Дальнейшие шаги
Полезные ссылки на API
- Репозиторий Agent Module MCP — Полная документация по инструментам и руководства по настройке для Claude Desktop, Cursor и других
- Спецификация Agent Module OpenAPI — Импортируйте напрямую в Vertex AI Agent Builder
- Документация Gemini по function calling — Полная справочная информация по API для function calling
- Полный текст Регламента ЕС об ИИ — Регламент, которому соответствуют эти модули
Связанные примеры
- Краткое руководство по function calling — Изучите основы function calling Gemini
- Barista Bot — Агент function calling для заказа кофе
- Browser как инструмент — Еще один пример интеграции внешнего инструмента
Продолжите изучение Gemini API
- Узнайте, как управлять поведением function calling в Function calling config
- Изучите JSON mode для структурированных output
- Попробуйте Live API с инструментами для function calling в реальном времени