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/>.
/**
* Plugin settings
*
* @package block_openai_chat
* @copyright 2024 Bryce Yoder <me@bryceyoder.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
if ($hassiteconfig) {
$ADMIN->add('reports', new admin_externalpage(
'openai_chat_report',
get_string('openai_chat_logs', 'block_openai_chat'),
new moodle_url("$CFG->wwwroot/blocks/openai_chat/report.php", ['courseid' => 1]),
'moodle/site:config'
));
if ($ADMIN->fulltree) {
require_once($CFG->dirroot .'/blocks/openai_chat/lib.php');
$type = get_type_to_display();
$assistant_array = [];
if ($type === 'assistant') {
$assistant_array = fetch_assistants_array();
}
global $PAGE;
$PAGE->requires->js_call_amd('block_openai_chat/settings', 'init');
$settings->add(new admin_setting_configtext(
'block_openai_chat/apikey',
get_string('apikey', 'block_openai_chat'),
get_string('apikeydesc', 'block_openai_chat'),
'',
PARAM_TEXT
));
$settings->add(new admin_setting_configselect(
'block_openai_chat/type',
get_string('type', 'block_openai_chat'),
get_string('typedesc', 'block_openai_chat'),
'chat',
['chat' => 'chat', 'assistant' => 'assistant', 'azure' => 'azure']
));
$settings->add(new admin_setting_configcheckbox(
'block_openai_chat/restrictusage',
get_string('restrictusage', 'block_openai_chat'),
get_string('restrictusagedesc', 'block_openai_chat'),
1
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/assistantname',
get_string('assistantname', 'block_openai_chat'),
get_string('assistantnamedesc', 'block_openai_chat'),
'Assistant',
PARAM_TEXT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/username',
get_string('username', 'block_openai_chat'),
get_string('usernamedesc', 'block_openai_chat'),
'User',
PARAM_TEXT
));
$settings->add(new admin_setting_configcheckbox(
'block_openai_chat/logging',
get_string('logging', 'block_openai_chat'),
get_string('loggingdesc', 'block_openai_chat'),
0
));
// Assistant settings //
if ($type === 'assistant') {
$settings->add(new admin_setting_heading(
'block_openai_chat/assistantheading',
get_string('assistantheading', 'block_openai_chat'),
get_string('assistantheadingdesc', 'block_openai_chat')
));
if (count($assistant_array)) {
$settings->add(new admin_setting_configselect(
'block_openai_chat/assistant',
get_string('assistant', 'block_openai_chat'),
get_string('assistantdesc', 'block_openai_chat'),
count($assistant_array) ? reset($assistant_array) : null,
$assistant_array
));
} else {
$settings->add(new admin_setting_description(
'block_openai_chat/noassistants',
get_string('assistant', 'block_openai_chat'),
get_string('noassistants', 'block_openai_chat'),
));
}
$settings->add(new admin_setting_configcheckbox(
'block_openai_chat/persistconvo',
get_string('persistconvo', 'block_openai_chat'),
get_string('persistconvodesc', 'block_openai_chat'),
1
));
} else {
// Chat settings //
if ($type === 'azure') {
$settings->add(new admin_setting_heading(
'block_openai_chat/azureheading',
get_string('azureheading', 'block_openai_chat'),
get_string('azureheadingdesc', 'block_openai_chat')
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/resourcename',
get_string('resourcename', 'block_openai_chat'),
get_string('resourcenamedesc', 'block_openai_chat'),
"",
PARAM_TEXT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/deploymentid',
get_string('deploymentid', 'block_openai_chat'),
get_string('deploymentiddesc', 'block_openai_chat'),
"",
PARAM_TEXT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/apiversion',
get_string('apiversion', 'block_openai_chat'),
get_string('apiversiondesc', 'block_openai_chat'),
"2023-09-01-preview",
PARAM_TEXT
));
}
$settings->add(new admin_setting_heading(
'block_openai_chat/chatheading',
get_string('chatheading', 'block_openai_chat'),
get_string('chatheadingdesc', 'block_openai_chat')
));
$settings->add(new admin_setting_configtextarea(
'block_openai_chat/prompt',
get_string('prompt', 'block_openai_chat'),
get_string('promptdesc', 'block_openai_chat'),
"Below is a conversation between a user and a support assistant for a Moodle site, where users go for online learning.",
PARAM_TEXT
));
$settings->add(new admin_setting_configtextarea(
'block_openai_chat/sourceoftruth',
get_string('sourceoftruth', 'block_openai_chat'),
get_string('sourceoftruthdesc', 'block_openai_chat'),
'',
PARAM_TEXT
));
}
// Advanced Settings //
$settings->add(new admin_setting_heading(
'block_openai_chat/advanced',
get_string('advanced', 'block_openai_chat'),
get_string('advanceddesc', 'block_openai_chat')
));
$settings->add(new admin_setting_configcheckbox(
'block_openai_chat/allowinstancesettings',
get_string('allowinstancesettings', 'block_openai_chat'),
get_string('allowinstancesettingsdesc', 'block_openai_chat'),
0
));
if ($type === 'assistant') {
} else {
$settings->add(new admin_setting_configselect(
'block_openai_chat/model',
get_string('model', 'block_openai_chat'),
get_string('modeldesc', 'block_openai_chat'),
'text-davinci-003',
get_models()['models']
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/temperature',
get_string('temperature', 'block_openai_chat'),
get_string('temperaturedesc', 'block_openai_chat'),
0.5,
PARAM_FLOAT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/maxlength',
get_string('maxlength', 'block_openai_chat'),
get_string('maxlengthdesc', 'block_openai_chat'),
500,
PARAM_INT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/topp',
get_string('topp', 'block_openai_chat'),
get_string('toppdesc', 'block_openai_chat'),
1,
PARAM_FLOAT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/frequency',
get_string('frequency', 'block_openai_chat'),
get_string('frequencydesc', 'block_openai_chat'),
1,
PARAM_FLOAT
));
$settings->add(new admin_setting_configtext(
'block_openai_chat/presence',
get_string('presence', 'block_openai_chat'),
get_string('presencedesc', 'block_openai_chat'),
1,
PARAM_FLOAT
));
}
}
}