Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[3.2][3.3] AI Labs с поддержкой Midjourney, ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

[3.2][3.3] AI Labs с поддержкой Midjourney, ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

Название расширения: AI Labs

Автор: https://privet.fun

Описание расширения:
Добавьте искусственный интеллект на свою конференцию phpBB и приготовьтесь к захватывающему опыту.
В настоящее время поддерживаются ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI).
Поддержка Midjourney будет доступна скоро.

Демо URLs:
ChatGPT
ChatGPT, custom prompt
DALL-E
Stable Diffusion
Midjourney, coming soon 🚀
Stable Diffusion by Leonardo AI, coming soon 🚀 так-же доступен в виде Telegram bot https://t.me/stable_diffusion_superbot


Скачать: https://github.com/privet-fun/phpbb_ailabs

Язык:
Русский
Английский
Аватара пользователя
1smerch1
phpBB 2.0.4
Сообщения: 435
Стаж: 6 лет 5 месяцев
Откуда: Россия
Благодарил (а): 183 раза
Поблагодарили: 15 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение 1smerch1 »

PHPBB 3.3.5 PHP 7.4

Отправлено спустя 2 минуты 25 секунд:
Бот пишет и потом цитата с ошибкой
Спорт - сила
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 4 месяца
Благодарил (а): 278 раз
Поблагодарили: 65 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение Vlad__ »

1smerch1, должно работать. Это я правил, так как у меня антиквариат ;) Что в логах PHP?

Отправлено спустя 37 минут 51 секунду:
privet, ещё один момент. Или я что-то пропустил в настройках или что-то не срабатывает. Или же нужно дописать. При цитировании ответа бота, ему передается только сам вопрос без текста его цитаты. Из-за чего теряется контекст обсуждения. Насколько я понял, в аналогичном модуле в xenforo:

fetchMessagesFromThread – Loads the context for the bot from the topic. Bot quotes are transformed into his messages for the correct context.

Код: Выделить всё

public function fetchMessagesFromThread(
    Thread $thread,
    int $stopPosition = null, // Thread post position to which to load the context
    ?User $assistant = null, // Bot user to mark his messages in context
    bool $transformAssistantQuotesToMessages = true, // If false, bot message quote messages will not be transformed into his messages
    int $startPosition = null, // Thread post position from which to load the context
    bool $removeQuotesFromAssistantMessages = true // Removes user post quotes from bot posts
)
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

Vlad__ писал(а): 31.05.2023 22:31 privet, а что за параметры в конфиге?
"max_tokens": 4096,
"message_tokens": 1024,
Если вы отвечаете в тред из сообщении (делаете квотирование) то история сообщений тоже будет чтобы бот мог иметь весь контекст при ответе.
В такой ситуации приходится отслеживать момент когда число токенов станивится больше допустимого максимума (техническик лимит модели gpt 3.5 4096 токенов) плюс надо отвести место под ответ (1024 токенов выше).
Если вы будете использовать другие модели или например задать меньше лимит на размер ответа то вам надо будет подредактировать это цифы.
Vlad__ писал(а): 31.05.2023 22:31 "temperature": 0.9,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0.6,
Не уверен что смогу обьяснить лучше документации https://platform.openai.com/docs/api-re ... hat/create
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

Vlad__ писал(а): 01.06.2023 1:09 При цитировании ответа бота, ему передается только сам вопрос без текста его цитаты
Там есть код который вытаскивает сам ответ и цепочку предыдущих ответов ext/privet/ailabs/controller/chatgpt.php :

Код: Выделить всё

        if ($this->job['post_mode'] == 'quote') {
            $history = ['post_text' => $this->job['post_text']];

            $pattern = '/<QUOTE\sauthor="' . $this->job['ailabs_username'] . '"\spost_id="(.*)"\stime="(.*)"\suser_id="' . $this->job['ailabs_user_id'] . '">/';

            $this->log['history.pattern'] = $pattern;
            $this->log_flush();

            $history_tokens = 0;
            $round = -1;
            do {
                $round++;
                $matches = null;
                preg_match_all(
                    $pattern,
                    $history['post_text'],
                    $matches
                );

                $history = null;

                if ($matches != null && !empty($matches) && !empty($matches[1][0])) {
                    $postid = (int) $matches[1][0];

                    $sql = 'SELECT j.job_id, j.post_id, j.response_post_id, j.request, j.response, p.post_text, j.request_tokens, j.response_tokens ' .
                        'FROM ' . $this->jobs_table . ' j ' .
                        'JOIN ' . POSTS_TABLE . ' p ON p.post_id = j.post_id ' .
                        'WHERE ' . $this->db->sql_build_array('SELECT', ['response_post_id' => $postid]);
                    $result = $this->db->sql_query($sql);
                    $history = $this->db->sql_fetchrow($result);
                    $this->db->sql_freeresult($result);

                    if (!empty($history)) {
                        $count_tokens = $history['request_tokens'] + $history['response_tokens'];

                        $discard = $this->max_tokens < ($this->message_tokens + $history_tokens + $count_tokens);

                        $posts[] = [
                            'postid'                => $postid,
                            'request_tokens'        => $history['request_tokens'],
                            'response_tokens'       => $history['response_tokens'],
                            'runnig_total_tokens'   => $history_tokens + $count_tokens,
                            'discard'               => $discard
                        ];

                        if ($discard) {
                            $post_first_discarded = $postid;
                            break;
                        }

                        $post_first_taken = $postid;
                        $history_tokens += $count_tokens;

                        $post_messages = [
                            ['role' => 'user', 'content' => trim($history['request'])],
                            ['role' => 'assistant', 'content' => trim($history['response'])],
                        ];

                        $messages = [
                            ...$post_messages,
                            ...$messages
                        ];
                    }
                }
            } while (!empty($history));

            if (!empty($posts)) {
                $this->log['history.posts'] = $posts;
                $this->log_flush();
            }
        }
Возможно в 3.2.х $pattern выглядит иначе?

Вот пример такого поста https://privet.fun/viewtopic.php?p=355631#p355631

Код: Выделить всё

[quote=ChatGPT post_id=355629 time=1685309119 user_id=804]
Могу только предположить что код для сборки $messages в 7.1 что вы привели ранее не работает как надо, постромотрю сегодня завтра , думаю дело в этом.
Последний раз редактировалось privet 01.06.2023 2:06, всего редактировалось 1 раз.
Аватара пользователя
1smerch1
phpBB 2.0.4
Сообщения: 435
Стаж: 6 лет 5 месяцев
Откуда: Россия
Благодарил (а): 183 раза
Поблагодарили: 15 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение 1smerch1 »

privet, почему ошибка при ответе, а лог пустой?
Спорт - сила
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 4 месяца
Благодарил (а): 278 раз
Поблагодарили: 65 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение Vlad__ »

privet писал(а): 01.06.2023 2:05Там есть код
Тоже посмотрю. Понятно, у меня при цитировании кнопкой, когда тип сообщения 'quote' пишет ошибку:

PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/.../vendor/symfony/http-foundation/Response.php:383) in /var/www/.../includes/functions.php on line 1954

Там такая функция:

Код: Выделить всё

function send_status_line($code, $message)
{
	if (substr(strtolower(@php_sapi_name()), 0, 3) === 'cgi')
	{
		// in theory, we shouldn't need that due to php doing it. Reality offers a differing opinion, though
		header("Status: $code $message", true, $code);
	}
	else
	{
		$version = phpbb_request_http_version();
		header("$version $code $message", true, $code);
	}
}
Пришлось насильно ставить тип 'replay'.

Дело в другом, в основном у меня цитируют выделением текста мышью, "быстрый ответ", как здесь на форуме, тогда получающееся сообщение с цитатой тоже тип 'replay'. Бот на него отвечает, так как в тексте есть обращение к нему. Но свою цитату при ответе не захватывает, она удаляется. Потому что:

Код: Выделить всё

$message_parser->remove_nested_quotes(0;)
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 4 месяца
Благодарил (а): 278 раз
Поблагодарили: 65 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение Vlad__ »

Вот логи цитирования одного и того же сообщения бота.
Сообщение выглядит так: вопрос пользователя "назови фильмы", выделенный цитатой, и ответ бота в виде списка.
Первый раз это сообщение цитируется через "быстрый ответ" мышью, как я и говорил 'replay':

Код: Выделить всё

{
  "start": "2023-06-01 12:27:21",
  "request.messages": [
    {
      "role": "user",
      "content": "?"
    }
  ],
  "response": {
    "id": "xxxxxxxxxxxxxxxxxxxx",
    "object": "chat.completion",
    "created": 1685611641,
    "model": "gpt-3.5-turbo-0301",
    "usage": {
      "prompt_tokens": 9,
      "completion_tokens": 25,
      "total_tokens": 34
    },
    "choices": [
      {
        "message": {
          "role": "assistant",
          "content": "I'm sorry, I don't understand what you're asking. Can you please provide more information or ask a specific question?"
        },
        "finish_reason": "stop",
        "index": 0
      }
    ]
  },
  "response.codes": [
    200
  ],
  "finish": "2023-06-01 12:27:23"
}
Все нормально, бот читает ? и не знает, что ответить, так как цитаты со списком фильмов нет.
Второй раз это же сообщение цитируется по кнопке цитировать. Тип сообщения 'quote':

Код: Выделить всё

{
  "start": "2023-06-01 12:27:31",
  "history.pattern": "/<QUOTE\\sauthor=\"ChatGPT\"\\spost_id=\"(.*)\"\\stime=\"(.*)\"\\suser_id=\"2490\">/",
  "history.posts": [
    {
      "postid": 220810,
      "request_tokens": "67",
      "response_tokens": "266",
      "runnig_total_tokens": 333,
      "discard": false
    }
  ],
  "request.messages": [
    [
      {
        "role": "user",
        "content": "[ref]ChatGPT[/ref], Напиши список из 30 фильмов, которые ты советуешь посмотреть, которые вышли за последние 15 лет."
      },
      {
        "role": "assistant",
        "content": "1. Inception (2010)\n2. The Dark Knight (2008)\n3. Mad Max: Fury Road (2015)\n4. Interstellar (2014)\n5. Whiplash (2014)\n6. La La Land (2016)\n7. Birdman (2014)\n8. The Grand Budapest Hotel (2014)\n9. Inside Out (2015)\n10. The Social Network (2010)\n11. Roma (2018)\n12. Boyhood (2014)\n13. The Revenant (2015)\n14. Drive (2011)\n15. Arrival (2016)\n16. Her (2013)\n17. Moonlight (2016)\n18. The Handmaiden (2016)\n19. Parasite (2019)\n20. A Separation (2011)\n21. The Babadook (2014)\n22. The Witch (2015)\n23. Get Out (2017)\n24. Lady Bird (2017)\n25. Three Billboards Outside Ebbing, Missouri (2017)\n26. The Shape of Water (2017)\n27. Phantom Thread (2017)\n28. Blade Runner 2049 (2017)\n29. Dunkirk (2017)\n30. Call Me by Your Name (2017)"
      }
    ],
    {
      "0": [
        {
          "role": "user",
          "content": "[ref]ChatGPT[/ref],Напиши список из 30 фильмов, которые ты советуешь посмотреть, которые вышли за последние 15 лет."
        },
        {
          "role": "assistant",
          "content": "1. Inception (2010)\n2. The Dark Knight (2008)\n3. Mad Max: Fury Road (2015)\n4. Interstellar (2014)\n5. Whiplash (2014)\n6. La La Land (2016)\n7. Birdman (2014)\n8. The Grand Budapest Hotel (2014)\n9. Inside Out (2015)\n10. The Social Network (2010)\n11. Roma (2018)\n12. Boyhood (2014)\n13. The Revenant (2015)\n14. Drive (2011)\n15. Arrival (2016)\n16. Her (2013)\n17. Moonlight (2016)\n18. The Handmaiden (2016)\n19. Parasite (2019)\n20. A Separation (2011)\n21. The Babadook (2014)\n22. The Witch (2015)\n23. Get Out (2017)\n24. Lady Bird (2017)\n25. Three Billboards Outside Ebbing, Missouri (2017)\n26. The Shape of Water (2017)\n27. Phantom Thread (2017)\n28. Blade Runner 2049 (2017)\n29. Dunkirk (2017)\n30. Call Me by Your Name (2017)"
        }
      ],
      "role": "user",
      "content": "?"
    }
  ],
  "response": {
    "error": {
      "message": "[{'role': 'user', 'content': '[ref]ChatGPT[/ref], Напиши список из 30 фильмов, которые ты советуешь посмотреть, которые вышли за последние 15 лет.'}, {'role': 'assistant', 'content': '1. Inception (2010)\\n2. The Dark Knight (2008)\\n3. Mad Max: Fury Road (2015)\\n4. Interstellar (2014)\\n5. Whiplash (2014)\\n6. La La Land (2016)\\n7. Birdman (2014)\\n8. The Grand Budapest Hotel (2014)\\n9. Inside Out (2015)\\n10. The Social Network (2010)\\n11. Roma (2018)\\n12. Boyhood (2014)\\n13. The Revenant (2015)\\n14. Drive (2011)\\n15. Arrival (2016)\\n16. Her (2013)\\n17. Moonlight (2016)\\n18. The Handmaiden (2016)\\n19. Parasite (2019)\\n20. A Separation (2011)\\n21. The Babadook (2014)\\n22. The Witch (2015)\\n23. Get Out (2017)\\n24. Lady Bird (2017)\\n25. Three Billboards Outside Ebbing, Missouri (2017)\\n26. The Shape of Water (2017)\\n27. Phantom Thread (2017)\\n28. Blade Runner 2049 (2017)\\n29. Dunkirk (2017)\\n30. Call Me by Your Name (2017)'}] is not of type 'object' - 'messages.0'",
      "type": "invalid_request_error",
      "param": null,
      "code": null
    }
  },
  "response.codes": [
    400,
    400,
    400
  ]
}
Здесь вроде цитата со списком куда-то попадает, но почему-то два раза в цикле. В итоге, вся конструкция выдает ошибку, а у меня в php варнинги с заголовками.

Короче, нужно решить и исправить вопрос с цитированием по кнопке (у меня, на моих старых версиях). А затем (глобально, для всех) дописать код, чтобы брало цитаты и при цитировании мышью в быстром ответе. Ну там if в посте 'replay' есть цитата от бота, то запускаем код как при цитировании кнопкой.
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение ciiz1 »

Не сочтите за дерзость.
А хорошо бы если бы к сообщению которое отправляется в ChatGPT ещё можно бы ло бы добавлять промт (может неправильно выразился).
Например:
Ответь как эксперт, по цветочным делам.
Сообщение
p/s цитаты тоже не работают.

Да и ещё, никак не пойму
Укажите форумы, на которых AI будет отвечать на новые сообщения - В уже созданной теме на новые сообщения ChatGPT отвечает?(у меня почему то только на первое сообщение отвечает)
Аватара пользователя
Leo Angel
phpBB 2.0.4
Сообщения: 413
Стаж: 6 лет 3 месяца
Благодарил (а): 150 раз
Поблагодарили: 34 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение Leo Angel »

Не сочтите за дерзость. :D

А скажите, зачем это нужно?
Для написания эксклюзивного материала?
Так ИИ ещё не на том уровне, чтобы создавать такой контент без 100%-х подсказок и разъяснение ему что от него конкретно хотят.
Тут и профи не всегда интересный контент написать могут.
За время разъяснений и разжёвываний для ИИ можно и самому интересную статью написать!

Что это? Ещё одна игрушка? Эксперимент направленный на ЧТО?
Форумы, по-моему, тем и интересны, что на них идёт именно ЖИВОЕ общение!
Или и тут есть желание заменить всё и всех "роботами"?
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

Vlad__,
Поправил все что вы написали - попробуйте 1.0.2 https://github.com/privet-fun/phpbb_ailabs ?
Должно работать с php 7.1 и phpBB 3.2 без всяких модификаций
Список изменений https://github.com/privet-fun/phpbb_ailabs#changelog

Отправлено спустя 4 минуты 11 секунд:
ciiz1 писал(а): 01.06.2023 18:35 Не сочтите за дерзость.
А хорошо бы если бы к сообщению которое отправляется в ChatGPT ещё можно бы ло бы добавлять промт (может неправильно выразился).
Например:
Ответь как эксперт, по цветочным делам.
Сообщение
ChatGPT подхватит такой явный промпт из самого текста, ничего особенного делать не надо.
ciiz1 писал(а): 01.06.2023 18:35 p/s цитаты тоже не работают.
Исправлено в 1.0.2
ciiz1 писал(а): 01.06.2023 18:35 Да и ещё, никак не пойму
Укажите форумы, на которых AI будет отвечать на новые сообщения - В уже созданной теме на новые сообщения ChatGPT отвечает?(у меня почему то только на первое сообщение отвечает)
В настройкай конфигурации бота задайте имена форумов в "Ответ при цитировании", у вас там скорее всего пусто?
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение ciiz1 »

Leo Angel писал(а): 01.06.2023 20:40 А скажите, зачем это нужно?
У меня форум специалистов работающих по международному стандарту (аккредитованные лаборатории). В мире полно информации по этой теме.
Бота хотел использовать для помощи руководителей (много писанины приходится придумывать, всякие инструкции), а промтом хотел поэкспериментировать указать из какой конкретно области вопрос.
Сам кстати для работы пользовался ChatGPT нормально.
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

1smerch1 писал(а): 01.06.2023 8:03 privet, почему ошибка при ответе, а лог пустой?
Надо смотреть в логах серцера и php, какая у вас версия php/phpBB/SQL?
Попробуйте последний релиз с 1.0.2 https://github.com/privet-fun/phpbb_ailabs , там довольно много поправлено.
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение ciiz1 »

privet писал(а): 01.06.2023 20:47 В настройкай конфигурации бота задайте имена форумов в "Ответ при цитировании", у вас там скорее всего пусто?
Вернуться к началу
Ответ при цитировании и Ответ на сообщение выбрано, пробовал отключать быстрый ответ перезагрузка, вот ещё думаю что может мешать.
Аватара пользователя
privet
phpBB 1.4.1
Сообщения: 44
Стаж: 10 месяцев
Благодарил (а): 12 раз
Поблагодарили: 23 раза

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение privet »

Попробуйте 1.0.2 - там поправлена ошибка с reply
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2][3.3] AI Labs с поддержкой ChatGPT, DALL-E (OpenAI) и Stable Diffusion (Stability AI)

Сообщение ciiz1 »

C 1.0.2 работает только первое сообщение
PHP 7.4.33
MySQL(i) 5.7.21
Версия phpBB: 3.3.3
Отвечает только на первое сообщение в теме. В следующих надпись "Al отвечает", что то даже не появляется.

Вернуться в «Анонсы и поддержка расширений для phpBB»