[021] ChatGPT Framework

[021] ChatGPT Framework 1.5.0

Message repo: Ability to fetch comments from profile post
Stream replies support (Will be updated in dev guide later)
  • Like
Reactions: Rhody401
The group of settings has been renamed in accordance with the name of the add-on
New method removeMessageDuplicates in message repo
New method fetchMessagesFromConversation in message repo
Now \BS\ChatGPTBots\Response::getReplyWithLogErrors accept $throwExceptions argument to throw exceptions on error instead of returning default reply
Now the prepareContent method in message also converts mentions into hits

\BS\ChatGPTBots\Response class features

getReplyWithLogErrors(OpenAi $api, array $params): string – Receives a response and parse it to reply from the OpenAI API, logging the failure and adding the necessary information to the log.

Usage example
$reply = Response::getReplyWithLogErrors($api, [
    'model'             => 'gpt-3.5-turbo',
    'messages'          => [],
    'temperature'       => 1.0,
    'frequency_penalty' => 0,
    'presence_penalty'  => 0,


\BS\ChatGPTBots\Repository\Message::fetchMessagesFromThread – the startPosition and stopPosition arguments were ignored if they were 0

Other changes​

The add-on has been renamed to [021] ChatGPT Framework.
  • Like
Reactions: McAtze and rdn
Message repository

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

wrapMessage – Generates a message array, preparing content for the bot (removes unnecessary BB codes).
public function wrapMessage(string $content, string $role = 'user'): array
returns [
    'content' => $preparedContent,
    'role' => $role

prepareContent – Prepare message content for the bot (removes unnecessary BB codes).
getQuotes – Parses quotes from the text, bringing it to a convenient form.
public function getQuotes(
    string $text,
    int $userId = null, // filter quotes by user id
    int $postId = null, // filter quotes by post id
    string $postType = 'post' // post type in quotes
): array
returns [
        'post_id' => int|null,
        'user_id' => int|null,
        'content' => string|null, (quote content)
        'message' => string|null, (reply on quote, text which located below quote)
        'match'   => string (full quote match)
removeQuotes – Remove quotes from the text. Can be remove quotes for specific posts or users.
public function removeQuotes(
    string $text,
    int $userId = null,
    int $postId = null,
    string $postType = 'post'
): string