# Базы данных

* [База данных в виде Google таблицы](#baza-dannykh-v-vide-google-tablicy)
* [Создание записи в таблице Notion](#sozdanie-zapisi-v-tablice-notion)
* [Поиск строки в базе Notion и изменение значения нужного поля](#poisk-stroki-v-baze-notion-i-izmenenie-znacheniya-nuzhnogo-polya)
* [Чтение базы данных в Notion v.2](#chtenie-bazy-dannykh-v-notion-v.2)
* [Получение структуры полей базы данных в Notion](#poluchenie-struktury-polei-bazy-dannykh-v-notion)
* [Управление Google таблицей](#upravlenie-google-tablicei)
* [Получить поля таблицы из базы Airtable по имени таблицы](#poluchit-polya-tablicy-iz-bazy-airtable-po-imeni-tablicy)
* [Получение данных из таблицы Airtable](#poluchenie-dannykh-iz-tablicy-airtable)
* [Создание записи в Airtable](#sozdanie-zapisi-v-airtable)
* [Генератор ментальных карт](#generator-mentalnykh-kart)
* [Чтение страницы в Notion в формате .md](#chtenie-stranicy-v-notion-v-formate-.md)
* [Создание презентации PPTX + Яндекс.Картинки](#sozdanie-prezentacii-pptx--yandeks.kartinki)

## База данных в виде Google таблицы

Пример инструкции в роли бота:

```
Ты должна подбирать квартиры на основе данных в таблице: 
https://docs.google.com/spreadsheets/d/1wcKA2__qfMjImLUiEOhK-lHUf0_rt5tmc-dvYEqepro/edit?usp=sharing

Колонки для запроса из таблицы: A - H
Для фильтрации используй эти колонки:
`C` - Цена аренды (в сутки) - числовое поле
`D` - Размер квартиры в м2 - числовое поле
`G` - VIP сегмент - фиксированные значения: `Да`, `Нет`
```

```
{
    "name": "get_filtered_google_table",
    "description": "Получить отфильтрованные данные из Google таблицы по заданному URL и запросу фильтрации",
    "parameters": {
        "type": "object",
        "properties": {
            "url": {
                "type": "string",
                "description": "URL Google таблицы"
            },
            "sheet_index": {
                "type": "integer",
                "description": "Индекс листа (начиная с 1)",
                "default": 1
            },
            "filter_query": {
                "type": "string",
                "description": "Запрос фильтрации в формате SQL. Например: `SELECT A, C WHERE B=1`,  для поиска по ключевым словам используй: `SELECT B WHERE F MATCHES '(?s).*ключ.*'`",
                "default": ""
            }
        },
        "required": ["url"]
    },
},
```

## Создание записи в таблице Notion

Создание записи в таблице Notion

```
{
    "name": "create_notion_record",
    "description": "Добавление записи в базу данных Notion",
    "parameters": {
        "type": "object",
        "properties": {
            "databaseId": {
                "type": "string",
                "description": "Идентификатор базы данных в Notion или URL на базу"
            },
            "record_data": {
                "type": "string",
                "description": "Данные записи в формате: `Имя_колонки;;Тип;;Значение##Имя_колонки;;Тип;;Значение`. Типы колонок: `integer`, `string`, `title`, `date`. Даты передавай в формате ISO 8601: `1977-11-15`."
            },
            "token": {
                "type": "string",
                "description": "Токен авторизации для доступа к Notion API"
            },
            "reply": {
                "type": "string",
                "description": "Готовый ответ после выполнения функции"
            }
        },
        "required": ["databaseId", "record_data", "token"]
    },
},
```

## Поиск строки в базе Notion и изменение значения нужного поля

Поиск строки в базе Notion и изменение значения нужного поля

```
{  
    "name": "notion_find_and_update_database_cell",  
    "description": "Находит и обновляет ячейку в базе данных Notion",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "token": {  
                "type": "string",  
                "description": "Токен доступа к Notion API",  
            }, 
            "base_id": {  
                "type": "string",  
                "description": "ID базы данных Notion или URL страницы с базой в Notion",  
            }, 
            "field_name": {  
                "type": "string",  
                "description": "Имя поля для фильтрации",  
            }, 
            "field_type": {  
                "type": "string",  
                "description": "Тип поля для фильтрации",  
                "enum": ["title", "rich_text", "multi_select"], 
            }, 
            "field_filter": {  
                "type": "string",  
                "description": "Значение для фильтрации по полю",  
            }, 
            "cell_name": {  
                "type": "string",  
                "description": "Имя ячейки для обновления",  
            }, 
            "cell_type": {  
                "type": "string",  
                "description": "Тип ячейки для обновления",  
                "enum": ["multi_select", "text", "number"], 
            }, 
            "cell_value": {  
                "type": "string",  
                "description": "Новое значение для ячейки. Для `multi_select` это список значений через запятую.",  
            }, 
        }, 
        "required": ["token", "base_id", "field_name", "field_type", "field_filter", "cell_name", "cell_type", "cell_value"],  
    },  
},

```

## Чтение базы данных в Notion v.2

Чтение базы данных в Notion v.2

````
{ 
    "name": "read_notion_db_v2", 
    "description": "Чтение данных из базы данных Notion", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "token": { 
                "type": "string", 
                "description": "Токен", 
            }, 
            "base_id": { 
                "type": "string", 
                "description": "ID базы данных или ссылка на базу данных", 
            }, 
            "n": { 
                "type": "integer", 
                "description": "Количество записей", 
            }, 
            "filter": { 
                "type": "string", 
                "description": """JSON словарь вида:\n```JSON\n{"Column1": {"multi-select": ["value1", "value2"]}, "Column2": {"range": [0, 10]}, "Column3": {"search": "keyword"}}```\n\nМожет быть пустым словарем `{}`.""", 
            },         }, 
        "required": ["token", "base_id", "n", "filter"], 
    }, 
}, 
````

## Получение структуры полей базы данных в Notion

Получение структуры полей базы данных в Notion

```
{  
    "name": "get_notion_database_structure_from_url",  
    "description": "Получить структуру полей в базе данных Notion по ссылке",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "Ссылка на базу данных Notion",  
            }, 
            "token": {  
                "type": "string",  
                "description": "Токен доступа к API Notion",  
            }, 
        }, 
        "required": ["url", "token"],  
    },  
},
```

## Управление Google таблицей

Функция может внести изменения в таблицу Google. Нужно в промпте указать нейросети правило по которому идет запись в таблицу:

```
Записывай полученную информацию, ссылки и ID файлов в Google таблицу по этим правилам:
Row data to append at the end of Google Sheet formatted like this: value1;;value2;;value3
"value1" - Заголовок 
"value2" - Описание 
"value3" - URL фото
Ячейки, в которые тебе нечего записать заполни знаком `-` 
```

```
{
    "name": "ai_edit_google_sheet",
    "description": "Make changes in Google Sheet Document with AI",
    "parameters": {
        "type": "object",
        "properties": {
            "url": {
                "type": "string",
                "description": "URL of Google Sheet",
            },
            "request": {
                "type": "string",
                "description": "Here, pass 100% verbatim the task from the user without any changes",
            },
            "mode": {
                "type": "string",
                "enum" : ["+", "-", ".", "?"],
                "description": "`+` - add data in Google Sheet, `-` - delete data in Google Sheet, `.` - change data in Google Sheet, `?` - read data from Google Sheet",
            },
            "next_question": {
                "type": "string",
                "description": "Next question",
            },
        },
        "required": ["url", "request", "mode", "next_question"],
    },
},
```

## Получить поля таблицы из базы Airtable по имени таблицы

Получить поля таблицы из базы Airtable по имени таблицы

```
{  
    "name": "airtable_table_info",  
    "description": "Получить поля таблицы из базы Airtable по имени таблицы",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "base_id": {  
                "type": "string",  
                "description": "ID базы Airtable",  
            }, 
            "table_name": {  
                "type": "string",  
                "description": "Имя таблицы", 
            }, 
            "api_key": {  
                "type": "string",  
                "description": "API ключ для доступа к Airtable", 
            }, 
        }, 
        "required": ["base_id", "table_name", "api_key"],  
    },  
},
```

## Получение данных из таблицы Airtable

Функция получает данные из базы Airtable. Для этого вы должны передать в функцию API токен Airtable, ID базы, название таблицы, фильтр и название колонок из которых вам нужны данные.

````
{  
    "name": "filter_airtable_data",  
    "description": "Получить записи из базы данных по заданным фильтрам",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "api_key": {  
                "type": "string",  
                "description": "API ключ для доступа к базе данных",  
            }, 
            "base_id": {  
                "type": "string",  
                "description": "ID базы данных",  
            }, 
            "table_name": {  
                "type": "string",  
                "description": "Название таблицы для запроса",  
            }, 
            "filters": {  
                "type": "string",  
                "description": "Название таблицы для запроса",
            },  
            "max_records": {  
                "type": "integer",  
                "description": "Максимальное количество записей для возврата. По умолчанию 1",  
            },  
            "fields": {  
                "type": "string",  
                "description": """JSON массив вида:```JSON\n[{"field": "Column1", "value": "Value1", "type": "select"},{"field": "Column2", "value": "Value2", "type": "text"},{"field": "Column3", "value": Value3, "type": "percent"},{"field": "Column4", "value": 0, "type": "checkbox"},{"field": "Column5", "value": "Value5", "type": "multi-select"},{"field": "Column6", "min": Value6_1, "max": Value6_2, "type": "range"},{"field": "Column7", "min": Value7_1, "max": Value7_2, "type": "range_percent"}]```. Не обязательный параметр.""",  
            },  
            "columns": {  
                "type": "string",  
                "description": "Список колонок, которые получить из таблицы в виде: `column1;column2;column3`. Не обязательный параметр",  
            },  
        },  
        "required": ["api_key", "base_id", "table_name", "max_records"],  
    },  
},
````

## Создание записи в Airtable

Пример инструкции в боте:

Из присланной тебе информации создай запись в таблице Airtable с этими полями:

```
ИИ рейтинг (число от 0 до 100)
Название проекта
 Краткое описание проекта (до 280 символов)
 Тип проекта (выпадающий список: B2B, B2C, B2G)
 Отрасль (мульти-селект: Образование, Производство, ИТ, Искусство)
```

Твоя задача - создавать записи в базе Airtable.

После создания записи функция тебе вернет ID созданной записи, используй этот ID для выдачи мне такой ссылки: "<https://forms.fillout.com/t/s4EHXXXXXXXX?id=ID>" и предложи мне перейти по ней.

Параметры для работы с базой Airtable:

```
'base_id' : 'appFzXXXXXXXXXX',
'table_name' : 'Анкета',
'api_key' : 'patK0tMn7NB7MJEb4.ee211b6ee49de496643aXXXXXXXXXXXXXXXXXXXX',
```

Твои сообщения отправляются в Телеграм, поэтому оформляй все свои ответы согласно допустимым стандартам разметки HTML в Телеграм.

```
{  
    "name": "airtable_create_record",  
    "description": "Добавить запись в Airtable",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "base_id": {  
                "type": "string",  
                "description": "ID базы данных Airtable",  
            }, 
            "table_name": {  
                "type": "string",  
                "description": "Имя таблицы в Airtable",  
            }, 
            "api_key": {  
                "type": "string",  
                "description": "API ключ для доступа к Airtable",  
            }, 
            "data": {  
                "type": "string",  
                "description": "Данные для добавления в запись в формате JSON",  
            }, 
        }, 
        "required": ["base_id", "table_name", "api_key", "data"],  
    },  
},  
```

## Генератор ментальных карт

Функция создает ментальную карту в формате PNG.

````
{ 
    "name": "generate_mind_map", 
    "description": """Mind Map to PNG. For the task at hand, make a detailed mental map in Python in this form in Russian:
```python
{
    "Plan for a trip": {
        "Choose a country": {
            "Find tickets": "In process...",
            "Buy tickets": "In process...",
            "Book a hotel": "In progress..."
        }
    }
}
```
Don't use lists, just keys and values.""", 
    "parameters": { 
        "type": "object", 
        "properties": { 
           "mind_map_json": { 
                "type": "string", 
                "description": "Mind Map as JSON string", 
            },
        }, 
        "required": ["mind_map_json"], 
    }, 
},
````

## Чтение страницы в Notion в формате .md

Чтение страницы в Notion в формате .md

```
{  
    "name": "notion_to_markdown",  
    "description": "Преобразование Notion страницы в формат Markdown",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "token": {  
                "type": "string",  
                "description": "Токен для доступа к Notion",  
            }, 
            "page_url": {  
                "type": "string",  
                "description": "URL страницы в Notion", 
            }, 
        }, 
        "required": ["token", "page_url"],  
    },  
},
```

## Создание презентации PPTX + Яндекс.Картинки

Пример инструкции в роли бота:

```
Вот шаблон описания слайдов:
description = """
# Слайд 1
title: "Заголовок слайда"
title_color: "0000FF"
title_size: 48
text: "Ваш текст здесь"
text_color: "FF0000"
text_size: 24
image: "красивый пейзаж"
image_position: right
background: "абстрактный фон"

# Слайд 2
title: "Слайд с маркированным списком"
title_color: "008000"
bullet_points: Первый пункт; Второй пункт; Третий пункт
text_color: "800080"
text_size: 20
image: "бизнес график"
image_position: top

# Слайд 3
title: "Слайд с центральным изображением"
text: "Текст вокруг центрального изображения"
image: "логотип компании"
image_position: center
"""
```

```
{  
    "name": "create_pptx_yandex",  
    "description": "Создает презентацию на основе текстового описания каждого слайда",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "description": {  
                "type": "string",  
                "description": "Текстовое описание для каждого слайда презентации",  
            }, 
        }, 
        "required": ["description"],  
    },  
},
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iiagent.pro/funkcii/bazy-dannykh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
