Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/mageworx/module-open-ai/Model/Models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/mageworx/module-open-ai/Model/Models/AbstractChatGPTModel.php
<?php
/**
 * Copyright © MageWorx. All rights reserved.
 * See LICENSE.txt for license details.
 */
declare(strict_types = 1);

namespace MageWorx\OpenAI\Model\Models;

use MageWorx\OpenAI\Api\OptionsInterface;
use MageWorx\OpenAI\Api\RequestInterface;
use MageWorx\OpenAI\Api\ResponseInterface;

/**
 * Class AbstractChatGPTModel
 * Abstract class for chat GPT models.
 * Covers request data generation.
 */
abstract class AbstractChatGPTModel extends AbstractModel
{
    public function sendRequest(RequestInterface $request, OptionsInterface $options): ResponseInterface
    {
        $options->setModel($this->getType());
        $options->setPath($request->getPath());

        $data = $this->getRawDataForRequest($request, $options);

        $response = $this->messenger->send($data, $options);

        return $response;
    }

    /**
     * Generate request data as array using request and selected options
     *
     * @param RequestInterface $request
     * @param OptionsInterface $options
     * @return array
     */
    protected function getRawDataForRequest(RequestInterface $request, OptionsInterface $options): array
    {
        $data = [
            'model'       => $this->getType(),
            'n'           => $options->getNumberOfResultOptions(),
            'messages'    => $this->getMessagesDataFromRequest($request),
            'stream'      => false,
            'temperature' => $options->getTemperature()
        ];

        if ($options->getMaxTokens() && $this->useMaxTokens()) {
            $data['max_tokens'] = $options->getMaxTokens();
        }

        return $data;
    }

    /**
     * Get message and context as array
     *
     * @param RequestInterface $request
     * @return array
     */
    protected function getMessagesDataFromRequest(RequestInterface $request): array
    {
        $messages = [];

        $context = $request->getContext();
        foreach ($context as $contextItem) {
            $messages[] = [
                'role'    => RequestInterface::ROLE_SYSTEM,
                'content' => $this->prepareMessageContent($contextItem)
            ];
        }

        $messages[] = [
            'role'    => RequestInterface::ROLE_USER,
            'content' => $this->prepareMessageContent($request->getContent()),
        ];

        return $messages;
    }
}

Spamworldpro Mini