[021] ChatGPT Framework - Xenforo 2

Addon 2x [021] ChatGPT Framework - Xenforo 2

Addon 2x
021 ChatGPT Framework  Xenforo 2-1.webp



This add-on provides helper functions for working with ChatGPT.
It allows you to set an API key for add-ons that work with ChatGPT and avoid loading duplicate dependencies.


Developer usage guide
Get the OpenAI API key

PHP:
<span>$apiKey</span> <span>=</span> \<span>XF</span><span>:</span><span>:</span><span>options</span><span>(</span><span>)</span><span>-</span><span>&gt;</span><span>bsChatGptApiKey</span><span>;</span>

Get OpenAI API

Code:
<span>/** \Orhanerday\OpenAi\OpenAi $api */</span><br><span>$api</span> <span>=</span> \<span>XF</span><span>:</span><span>:</span><span>app</span><span>(</span><span>)</span><span>-</span><span>&gt;</span><span>container</span><span>(</span><span>'chatGPT'</span><span>)</span><span>;</span>

Get reply from ChatGPT

PHP:
<span>use</span> <span>BS<span>\</span>ChatGPTBots<span>\</span>Response</span><span>;</span><br><br><span>/** \Orhanerday\OpenAi\OpenAi $api */</span><br><span>$api</span> <span>=</span> \<span>XF</span><span>:</span><span>:</span><span>app</span><span>(</span><span>)</span><span>-</span><span>&gt;</span><span>container</span><span>(</span><span>'chatGPT'</span><span>)</span><span>;</span><br><br><span>$messages</span> <span>=</span> <span>[</span><br><span>[</span><span>'role'</span> <span>=</span><span>&gt;</span> <span>'user'</span><span>,</span> <span>'content'</span> <span>=</span><span>&gt;</span> <span>'Hello!'</span><span>]</span><br><span>]</span><span>;</span><br><span>$reply</span> <span>=</span> Response<span>:</span><span>:</span><span>getReply</span><span>(</span><br><span>$api</span><span>-</span><span>&gt;</span><span>chat</span><span>(</span><span>[</span><br><span>'model'</span>             <span>=</span><span>&gt;</span> <span>'gpt-3.5-turbo'</span><span>,</span><br><span>'messages'</span>          <span>=</span><span>&gt;</span> <span>$messages</span><span>,</span><br><span>'temperature'</span>       <span>=</span><span>&gt;</span> <span>1.0</span><span>,</span><br><span>'max_tokens'</span>        <span>=</span><span>&gt;</span> <span>420</span><span>,</span><br><span>'frequency_penalty'</span> <span>=</span><span>&gt;</span> <span>0</span><span>,</span><br><span>'presence_penalty'</span>  <span>=</span><span>&gt;</span> <span>0</span><span>,</span><br> <span>]</span><span>)</span><br><span>)</span><span>;</span>

Message repository

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

PHP:
<span>public</span> <span>function</span> <span>fetchMessagesFromThread</span><span>(</span><br>Thread <span>$thread</span><span>,</span><br>int <span>$stopPosition</span> <span>=</span> <span>null</span><span>,</span> <span>// Thread post position to which to load the context</span><br><span>?</span>User <span>$assistant</span> <span>=</span> <span>null</span><span>,</span> <span>// Bot user to mark his messages in context</span><br>bool <span>$transformAssistantQuotesToMessages</span> <span>=</span> <span>true</span><span>,</span> <span>// If false, bot message quote messages will not be transformed into his messages</span><br>int <span>$startPosition</span> <span>=</span> <span>null</span><span>,</span> <span>// Thread post position from which to load the context</span><br>bool <span>$removeQuotesFromAssistantMessages</span> <span>=</span> <span>true</span> <span>// Removes user post quotes from bot posts</span><br><span>)</span>

wrapMessage – Generates a message array, preparing content for the bot (removes unnecessary BB codes).

PHP:
<span>public</span> <span>function</span> <span>wrapMessage</span><span>(</span>string <span>$content</span><span>,</span> string <span>$role</span> <span>=</span> <span>'user'</span><span>)</span><span>:</span> <span>array</span><br> <br><span>/*<br>returns [<br>    'content' =&gt; $preparedContent,<br>    'role' =&gt; $role<br>]<br>*/</span>

prepareContent – Prepare message content for the bot (removes unnecessary BB codes).
getQuotes – Parses quotes from the text, bringing it to a convenient form.

PHP:
<span>public</span> <span>function</span> <span>getQuotes</span><span>(</span><br>string <span>$text</span><span>,</span><br>int <span>$userId</span> <span>=</span> <span>null</span><span>,</span> <span>// filter quotes by user id</span><br>int <span>$postId</span> <span>=</span> <span>null</span><span>,</span> <span>// filter quotes by post id</span><br>string <span>$postType</span> <span>=</span> <span>'post'</span> <span>// post type in quotes</span><br><span>)</span><span>:</span> <span>array</span><br><span>/*<br>returns [<br>    [<br>        'post_id' =&gt; int|null,<br>        'user_id' =&gt; int|null,<br>        'content' =&gt; string|null, (quote content)<br>        'message' =&gt; string|null, (reply on quote, text which located below quote)<br>        'match'   =&gt; string (full quote match)<br>    ]<br>]<br>*/</span>

removeQuotes – Remove quotes from the text. Can be remove quotes for specific posts or users.
PHP:
<span>public</span> <span>function</span> <span>removeQuotes</span><span>(</span><br>string <span>$text</span><span>,</span><br>int <span>$userId</span> <span>=</span> <span>null</span><span>,</span><br>int <span>$postId</span> <span>=</span> <span>null</span><span>,</span><br>string <span>$postType</span> <span>=</span> <span>'post'</span><br><span>)</span><span>:</span> string
 

Attachments

Back
Top