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