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