"message required"]); exit; } $secrets=[]; foreach(file("/etc/weval/secrets.env",2|4) as $l){if(strpos($l,"=")!==false){list($k,$v)=explode("=",$l,2);$secrets[trim($k)]=trim($v," \t\"'");}} $providers = [ ["name"=>"cerebras","url"=>"https://api.cerebras.ai/v1/chat/completions","key"=>$secrets["CEREBRAS_API_KEY"]??"","model"=>"qwen-3-235b-a22b-instruct-2507"], ["name"=>"groq","url"=>"https://api.groq.com/openai/v1/chat/completions","key"=>$secrets["GROQ_KEY"]??$secrets["GROQ_API_KEY"]??"","model"=>"llama-3.3-70b-versatile"], ["name"=>"kimi","url"=>"https://api.groq.com/openai/v1/chat/completions","key"=>$secrets["GROQ_KEY"]??$secrets["GROQ_API_KEY"]??"","model"=>"moonshotai/kimi-k2-instruct"], ]; $mh = curl_multi_init(); $handles = []; foreach ($providers as $i => $p) { if (empty($p["key"])) continue; $ch = curl_init($p["url"]); curl_setopt_array($ch, [CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>json_encode(["model"=>$p["model"],"messages"=>[["role"=>"user","content"=>$msg]],"max_tokens"=>800,"temperature"=>0.3]),CURLOPT_HTTPHEADER=>["Content-Type: application/json","Authorization: Bearer ".$p["key"]],CURLOPT_RETURNTRANSFER=>true,CURLOPT_TIMEOUT=>15]); curl_multi_add_handle($mh, $ch); $handles[$i] = $ch; } do { curl_multi_exec($mh, $running); usleep(10000); } while ($running > 0); $responses = []; foreach ($handles as $i => $ch) { $d = json_decode(curl_multi_getcontent($ch), true); $c = $d["choices"][0]["message"]["content"] ?? ""; if ($c) $responses[] = ["provider"=>$providers[$i]["name"],"model"=>$providers[$i]["model"],"content"=>$c,"length"=>strlen($c)]; curl_multi_remove_handle($mh, $ch); curl_close($ch); } curl_multi_close($mh); $best = ""; $bestLen = 0; foreach ($responses as $r) { if ($r["length"] > $bestLen) { $best = $r["content"]; $bestLen = $r["length"]; } } echo json_encode(["consensus"=>$best,"providers_count"=>count($responses),"responses"=>array_map(function($r){return["provider"=>$r["provider"],"length"=>$r["length"]];}, $responses)], JSON_UNESCAPED_UNICODE);