AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace aiprovider_openai;
use aiprovider_openai\model\base;
use core_ai\hook\after_ai_action_settings_form_hook;
use core_ai\hook\after_ai_provider_form_hook;
/**
* Hook listener for Open AI provider.
*
* @package aiprovider_openai
* @copyright 2024 Matt Porritt <matt.porritt@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class hook_listener {
/**
* Hook listener for the Open AI instance setup form.
*
* @param after_ai_provider_form_hook $hook The hook to add to the AI instance setup.
*/
public static function set_form_definition_for_aiprovider_openai(after_ai_provider_form_hook $hook): void {
if ($hook->plugin !== 'aiprovider_openai') {
return;
}
$mform = $hook->mform;
// Required setting to store OpenAI API key.
$mform->addElement(
'passwordunmask',
'apikey',
get_string('apikey', 'aiprovider_openai'),
['size' => 75],
);
$mform->addHelpButton('apikey', 'apikey', 'aiprovider_openai');
$mform->addRule('apikey', get_string('required'), 'required', null, 'client');
// Setting to store OpenAI organization ID.
$mform->addElement(
'text',
'orgid',
get_string('orgid', 'aiprovider_openai'),
['size' => 25],
);
$mform->setType('orgid', PARAM_TEXT);
$mform->addHelpButton('orgid', 'orgid', 'aiprovider_openai');
}
/**
* Hook listener for the Open AI action settings form.
*
* @param after_ai_action_settings_form_hook $hook The hook to add to config action settings.
*/
public static function set_model_form_definition_for_aiprovider_openai(after_ai_action_settings_form_hook $hook): void {
if ($hook->plugin !== 'aiprovider_openai') {
return;
}
$mform = $hook->mform;
if (isset($mform->_elementIndex['modeltemplate'])) {
$model = $mform->getElementValue('modeltemplate');
if (is_array($model)) {
$model = $model[0];
}
if ($model == 'custom') {
$mform->addElement('header', 'modelsettingsheader', get_string('settings', 'aiprovider_openai'));
$settingshelp = \html_writer::tag('p', get_string('settings_help', 'aiprovider_openai'));
$mform->addElement('html', $settingshelp);
$mform->addElement(
'textarea',
'modelextraparams',
get_string('extraparams', 'aiprovider_openai'),
['rows' => 5, 'cols' => 20],
);
$mform->setType('modelextraparams', PARAM_TEXT);
$mform->addElement('static', 'modelextraparams_help', null, get_string('extraparams_help', 'aiprovider_openai'));
} else {
$targetmodel = helper::get_model_class($model);
if ($targetmodel) {
if ($targetmodel->has_model_settings()) {
$mform->addElement('header', 'modelsettingsheader', get_string('settings', 'aiprovider_openai'));
$settingshelp = \html_writer::tag('p', get_string('settings_help', 'aiprovider_openai'));
$mform->addElement('html', $settingshelp);
$targetmodel->add_model_settings($mform);
}
}
}
}
}
}