# Плагин ChatGPT для CRM "Руководитель"

#### Установка

1. Установите плагин в папку `plugins/` (у вас должен появиться путь `plugins/ChatGPT`).
2. Перейдите в папку `/config/server.php`, в файле добавьте плагин. У вас должно получиться так:

```php
define('AVAILABLE_PLUGINS', 'ext,ChatGPT');
```

3. Проверьте корректность отображения плагина в CRM.

<figure><img src="/files/qFLWMBPDEOTI7vIAjuyS" alt=""><figcaption></figcaption></figure>

Создайте таблицу в БД вашей CRM. Нажмите на кнопку "Создать таблицу" и программа автоматически это сделает.&#x20;

<figure><img src="/files/UfvRnXEq8k8I7GiYpCrD" alt=""><figcaption></figcaption></figure>

В итоге должно получится так:&#x20;

<figure><img src="/files/6uxyoBVRVd9pHUykStTB" alt=""><figcaption></figcaption></figure>

#### Настройка

Перед использованием плагина его нужно настроить: получить API ключ, создать ассистента, если ChatGPT не доступен в вашем регионе, настроить прокси-сервер.

1. Зарегистрируйтесь на сайте <https://platform.openai.com/playground> (если еще нет учетной записи) и создайте новый проект

<figure><img src="/files/4Jf1wbgwsVw6lU2TN3oj" alt=""><figcaption></figcaption></figure>

2. После создания проекта, перейдите на вкладку API keys и создайте ключ. Запишите его в секретное место

<figure><img src="/files/D0S8KC5tHp8Vr2ezut4R" alt=""><figcaption></figcaption></figure>

3. Перейдите на вкладку "assistants" и создайте его. Вы также можете написать для него инструкции по его поведению. Установите ползунок в положение "on" для разрешения искать ответы в ваших файлах.  Так же нам необходимо скопировать имя ассистента.&#x20;

<figure><img src="/files/CwBz9uVY4DQvo5QtQYw7" alt=""><figcaption></figcaption></figure>

4. Для обучения ассистента нам понадобится узнать ID адрес его хранилища файлов. Сделать это можно следующим образом:&#x20;

Переходим во вкладку storage&#x20;

<figure><img src="/files/ouIZhAHtV9QYlyGW7E4J" alt=""><figcaption></figcaption></figure>

Далее vector stores и создаем его

<figure><img src="/files/AjJrcumsOkCqybIJCwsL" alt=""><figcaption></figcaption></figure>

После создания, нам нужно привязать нашего ассистента и скопировать ID VECTOR STORE

<figure><img src="/files/jFEnaXV5wY8rkXugjrIL" alt=""><figcaption></figcaption></figure>

5. При успешных действиях у нас должна быть информация по API ключу, ID ассистента, ID VECTOR STORE.
6. Если на вашей территории ChatGPT не доступен, воспользуйтесь при регистрации VPN. Для дальнейшего использования плагина вам также понадобится прокси-сервер. (я использовал этот ресурс <https://panel.proxyline.net/> IPv4 )
7. Получите ключ плагина.
8. Настройка плагина. Заполните поля во кладке настройка плагина в вашей CRM. Вводим только настройки, поля в "Обучении модели" оставляем не заполненными

<figure><img src="/files/AdBG0bTAMosLWMGJklEc" alt=""><figcaption></figcaption></figure>

9. Проверяем результат: если номер ассистента оставить незаполненным, программа будет использовать общую модель ChatGPT-4; в случае, если номер ассистента присутствует, программа будет обращаться к вашему ассистенту.

<div><figure><img src="/files/QfgVPxScbhudSCovgevt" alt=""><figcaption></figcaption></figure> <figure><img src="/files/42ZSgZ58PWjSH3Ksqdkn" alt=""><figcaption></figcaption></figure></div>

#### Обучение

Для примера я создал сущность "Табель рабочих" и добавил туда записи

<figure><img src="/files/sYGhMWFEGZW4vH1rgmIJ" alt=""><figcaption></figcaption></figure>

Далее переходим в раздел Настройки -> Обучение модели. Заполняем поля: Наименование файла (который передастся в vector store), Номер сущности в нашей CRM системе (по умолчанию данные выбираются из всей таблицы сущности; если требуются определенные поля, зайдите в plugins/ChatGPT/classes/EntityHandler.php и настройте нужный параметр запроса).

```
// Some code
public function getEntityData($entity_number)
{
    $table_name = "app_entity_" . (int)$entity_number;
    $query = "SELECT * FROM $table_name"; // Укажите какие данные нужно выбирать из таблицы сущности 
    $result = db_query($query);
    $data = [];

    if ($result) {
        while ($row = mysqli_fetch_assoc($result)) {
            $data[] = $row;
        }
        return $data;
    } else {
        throw new Exception("Не удалось получить данные из таблицы $table_name");
    }
}
```

Отправляем данные&#x20;

<figure><img src="/files/R2uyrbO0ISYuDlQzMs6A" alt=""><figcaption></figcaption></figure>

Проверяем результат. Видим что обучение ассистента прошло и он выдает ответы основываясь на данных в сущности "Табель рабочих"

<figure><img src="/files/jvwXDn3q9iS8n8WZndpx" alt=""><figcaption></figcaption></figure>

#### Настройка доступа групп пользователей

Зайдите в файл plugins/ChatGPT/menu.php и укажите какие группы будет иметь доступ к разделу меню.

```
// Some code
<?php

$submenu = array();
//Укажите группы доступа к меню чата
if (in_array($app_user['group_id'], [0, 4])) {
    $submenu[] = array(
        'title' => 'ChatGPT',
        'url' => url_for('ChatGPT/page_chatgpt/gpt'),
        'class' => 'fa-comments'
    );
}
//Укажите группы доступа к настройкам чата
if ($app_user['group_id'] == 0) {
    // Администратор
    $submenu[] = array(
        'title' => 'Настройки',
        'url' => url_for('ChatGPT/page_chatgpt/settings'),
        'class' => 'fa-cogs'
    );
}

if (!empty($submenu)) {
    $app_plugin_menu['menu'][] = array(
        'title' => 'OpenAI',
        'url' => url_for(''),
        'class' => 'fa-rocket',
        'submenu' => $submenu
    );
}

```

В данных настройках мы видим, что администратор имеет доступ ко всем вкладкам меню, а группа доступа 4 имеет доступ только к чату.

Так же в файле plugins/ChatGPT/modules/page\_chatgpt/module\_top.php укажите доступ к страницам.

```
// Some code
<?php

//Укажите группы доступа к плагину
if (!in_array($app_user['group_id'], [0, 4])) {
    redirect_to('dashboard/access_forbidden');
}
```

Плагин настроен и готов к работе. По вопросам настройки плагина обращайтесь в телеграм <https://t.me/vertlm>


---

# 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://websoft-1.gitbook.io/manual_ru/plagin-chatgpt-dlya-crm-rukovoditel.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.
