Integrate OpenAI's state-of-the-art language model into your XenForo 2 forum with the ChatGPT Framework add-on.
This add-on provides a comprehensive framework for integrating the ChatGPT API into your forum, allowing you to enhance your users' experience with cutting-edge language processing technology. With ChatGPT, you can generate human-like responses to user queries, automatically moderate content, and more.The ChatGPT Framework add-on offers a range of features to help you customize and optimize your ChatGPT integration, including:
- Built-in message repository: Allows to load messages for ChatGPT from different places in the forum, such as threads or conversations. Also provides functions to prepare them.
- Error handling: Handle API errors and exceptions gracefully.
- Configurable response generation: Choose how responses are generated based on your preferences and use case.
Getting started
Get the OpenAI API key
Before using the ChatGPT API Framework, you'll need to obtain an API key from OpenAI. You can get your API key by registering at OpenAI.Initialize the OpenAI API
The ChatGPT API Framework provides a convenient way to initialize the OpenAI API. To get started, you can use the following code:PHP:
/** \Orhanerday\OpenAi\OpenAi $api */
$api = \XF::app()->container('chatGPT');
This code initializes the OpenAI API and assigns it to the $api variable.
Get a reply from ChatGPT
To get a reply from ChatGPT, you can use the Response::getReply() function provided by the ChatGPT API Framework. Here's an example code snippet:Code:
use BS\ChatGPTBots\Response;
$messages = [
['role' => 'user', 'content' => 'Hello!']
];
$reply = Response::getReply(
$api->chat([
'model' => 'gpt-3.5-turbo',
'messages' => $messages,
'temperature' => 1.0,
'max_tokens' => 420,
'frequency_penalty' => 0,
'presence_penalty' => 0,
])
);
This code initializes an array of messages to send to ChatGPT and uses the chat() function to get a response. The response is returned as the $reply variable.
Get a reply from ChatGPT with logging errors
The method attempts to get a reply from OpenAI's Chat API using the provided parameters, and logs any errors that occur during the process. It returns a reply if successful, or a default error message if not.Code:
use BS\ChatGPTBots\Response;
$messages = [
['role' => 'user', 'content' => 'Hello!']
];
$reply = Response::getReplyWithLogErrors(
$api->chat([
'model' => 'gpt-3.5-turbo',
'messages' => $messages,
'temperature' => 1.0,
'max_tokens' => 420,
'frequency_penalty' => 0,
'presence_penalty' => 0,
])
);
Message Repository \BS\ChatGPTBots\Repository\Message
The ChatGPT API Framework provides a message repository to manage messages for your bots. The repository has several useful functions, including:fetchMessagesFromThread()
Loads the context for the bot from the topic. Bot quotes are transformed into his messages for the correct context.PHP:
public function fetchMessagesFromThread(
Thread $thread,
int $stopPosition = null,
?User $assistant = null,
bool $transformAssistantQuotesToMessages = true,
int $startPosition = null,
bool $removeQuotesFromAssistantMessages = true
)
fetchMessagesFromConversation()
This function loads the context for a bot from a conversation. Bot quotes are transformed into his messages for the correct context.PHP:
public function fetchMessagesFromConversation(
ConversationMaster $conversation,
?ConversationMessage $beforeMessage = null,
?User $assistant = null,
int $limit = 0,
bool $reverseLoad = false,
bool $transformAssistantQuotesToMessages = true,
bool $removeQuotesFromAssistantMessages = true
)
wrapMessage()
Generates a message array, preparing content for the bot (removes unnecessary BB codes).PHP:
public function wrapMessage(string $content, string $role = 'user'): array
prepareContent()
Prepare message content for the bot (removes unnecessary BB codes).PHP:
public function prepareContent(string $content, bool $stripQuotes = true): string
getQuotes()
Parses quotes from the text, bringing it to a convenient form.PHP:
public function getQuotes(string $text, int $userId = null, int $postId = null, string $postType = 'post'): array
removeQuotes()
Remove quotes from the text. Can be remove quotes for specific posts or users.PHP:
public function removeQuotes(string $text, int $userId = null, int $postId = null, string $postType = 'post'): string