From 5607b873d40cfed0c43b80525c6364adf7e3819b Mon Sep 17 00:00:00 2001 From: Marcus Green Date: Sat, 4 May 2024 19:52:33 +0100 Subject: [PATCH] Added get_models function designed for both Ollama and Openai --- classes/ai/ai.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/classes/ai/ai.php b/classes/ai/ai.php index b8b1b4c..2f21a3e 100644 --- a/classes/ai/ai.php +++ b/classes/ai/ai.php @@ -155,6 +155,30 @@ private function get_prompt_data($prompttext) : array { ]; return $data; } + public function get_models() : \stdClass { + $url = new \moodle_url($this->endpoint); + $ollama = true; + // Ollama url. + $modelquery = '/api/tags'; + if ($url->get_host() == 'api.openai.com') { + $modelquery = '/v1/models'; + $ollama = false; + } + + $modelsurl = $url->get_scheme().'://'.$url->get_host().':'.$url->get_port().$modelquery; + $curl = new curl(); + $options['CURLOPT_HTTPHEADER'] = ["Authorization: Bearer $this->apikey"]; + + $modeldata = json_decode($curl->get($modelsurl, null, $options)); + if (!$ollama) { + $modeldata->models = $modeldata->data; + foreach ($modeldata->models as $model) { + $model->name = $model->id; + } + } + + return $modeldata; + } }