xref: /plugin/aichat/Model/OpenAI/ChatModel.php (revision 2e22aefbcc83da0bc9ab21a2175b8ada4ba79826)
1<?php
2
3namespace dokuwiki\plugin\aichat\Model\OpenAI;
4
5
6class ChatModel extends AbstractOpenAIModel
7{
8    /** @inheritdoc */
9    public function getAnswer(array $messages): string
10    {
11        $data = [
12            'messages' => $messages,
13            'model' => $this->getModelName(),
14            'max_completion_tokens' => null,
15            'stream' => false,
16            'n' => 1, // number of completions
17        ];
18
19        // resoning models o1, o1-mini, o3-mini do not support setting temperature
20        // for all others we want a low temperature to get more coherent answers
21        if(!str_starts_with($this->getModelName(), 'o')) {
22            $data['temperature'] = 0.0;
23        }
24
25        $response = $this->request('chat/completions', $data);
26        return $response['choices'][0]['message']['content'];
27    }
28}
29