Php ile Chatgpt yapay zeka sohbet botu sorgulama ve geçmişi hafızaya alarak cevap verme

PHP
77 lines
<?php
class ChatApp {
private $model;
private $messages;
public $api_key;
public function __construct($model = "gpt-3.5-turbo", $load_file = "") {
$this->model = $model;
$this->messages = array();
if ($load_file != '') {
$this->load($load_file);
}
}
public function chat($message) {
if ($message == "exit") {
$this->save();
exit();
} elseif ($message == "save") {
$this->save();
return "(saved)";
}
$this->messages[] = array("role" => "user", "content" => $message);
$post_fields = array(
"model" => $this->model,
"messages" => $this->messages
);
$header = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $this->api_key
);
$ch = curl_init();
$url = 'https://api.openai.com/v1/chat/completions';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
$response = json_decode($result, true);
$assistant_message = $response["choices"][0]["message"]["content"];
$this->messages[] = array("role" => "assistant", "content" => $assistant_message);
return $assistant_message;
}
public function save() {
try {
$ts = time();
$json_object = json_encode($this->messages, JSON_PRETTY_PRINT);
$filename_prefix = preg_replace('/[^0-9a-zA-Z]+/', '-', substr($this->messages[0]["content"], 0, 30));
$filename = "chat_model_" . $filename_prefix . "_" . $ts . ".json";
file_put_contents($filename, $json_object);
} catch (Exception $e) {
exit();
}
}
public function load($load_file) {
$json_data = file_get_contents($load_file);
$this->messages = json_decode($json_data, true);
}
}
//Not: Bu sınıf yüksek ücretlere sebep olabilir.
$chatApp = new ChatApp();
$chatApp->api_key="sk-lyaikhPwD73bPVtUMO5FT3BlbkFJ"; // OpenAI API anahtarını buraya girin
//Yazışma geçmişi
$assistant_message = $chatApp->chat("Merhaba, nasılsın?");
$assistant_message = $chatApp->chat("Hava durumu hakkında bilgi verir misin?");
$assistant_message = $chatApp->chat("Konya");
//Sonuç
echo $assistant_message;
/* Çıktısı
Tamam, şu anda Konya'da hava durumu nasıl diye bakayım. Konya' da hava parçalı bulutlu olarak devam ediyor. Sıcaklık ise yaklaşık 16 derece civarında. Bugün için yağış beklenmiyor. Ancak yarın öğleden sonra hafif yağmur tahmini yapılmaktadır.
*/
// Çıkış yapmak istediğinizde "exit" komutunu kullanabilirsiniz
$chatApp->chat("exit");
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fikstür Tarzında Takım Oluşturup Eşleştirmek

PHP
82 lines
<?php
class fikstur{
var $history=array();
var $sayi=8;
var $a=array();
function takimOlustur(){
for($i=1;$i<=$this->sayi;$i++){
$this->a[]="Takim ".$i;
}
}
function gecmisiTemizle($team1,$team2){
if(sizeof($this->history)>0){
foreach($this->history[$team1] as $key => $val){
if($val==$team2&&$val){
$this->history[$team1][$key]=0;
break;
}
}
}
}
function gecmisOlustur(){
for($i=0;$i<$this->sayi;$i++){
for($j=0;$j<$this->sayi;$j++){
if($i==$j) $this->history[$this->a[$i]][]=0;
else $this->history[$this->a[$i]][]=$this->a[$j];
}
}
}
function takimYazdir(){
print_r($this->teams);
}
function gemisKontrol($temphistory,$team){
if(sizeof($temphistory)>0){
foreach($temphistory as $val){
if($val==$team){
return false;
}
}
}
return true;
}
function tasi(){
$temphistory=array();
for($i=0;$i<$this->sayi;$i++){
if(sizeof($this->history)>0){
foreach($this->history[$this->a[$i]] as $key => $val){
if($val&&$this->gemisKontrol($temphistory,$val)&&$this->gemisKontrol($temphistory,$this->a[$i])){
$temphistory[]=$this->a[$i];
$temphistory[]=$val;
break;
}
}
}
}
$this->a=$temphistory;
}
function calistir(){
for($j=1;$j<$this->sayi;$j++){
for($i=0;$i<$this->sayi;$i+=2){
srand();
$r=rand(0,1);
if($r==1){
echo $this->a[$i]."-".$this->a[$i+1];
}
else{
echo $this->a[$i+1]."-".$this->a[$i];
}
echo "<br />";
$this->gecmisiTemizle($this->a[$i],$this->a[$i+1]);
$this->gecmisiTemizle($this->a[$i+1],$this->a[$i]);
}
echo "<hr>";
$this->tasi();
}
}
}
$s=new fikstur();
$s->sayi=8;
$s->takimOlustur();
$s->gecmisOlustur();
$s->calistir();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
28 lines
Takim 2-Takim 1
Takim 3-Takim 4
Takim 6-Takim 5
Takim 8-Takim 7
Takim 1-Takim 3
Takim 4-Takim 2
Takim 5-Takim 7
Takim 8-Takim 6
Takim 4-Takim 1
Takim 3-Takim 2
Takim 8-Takim 5
Takim 6-Takim 7
Takim 5-Takim 1
Takim 4-Takim 6
Takim 3-Takim 7
Takim 2-Takim 8
Takim 6-Takim 1
Takim 2-Takim 5
Takim 7-Takim 4
Takim 8-Takim 3
Takim 1-Takim 7
Takim 6-Takim 2
Takim 3-Takim 5
Takim 4-Takim 8
Takim 1-Takim 8
Takim 7-Takim 2
Takim 3-Takim 6
Takim 5-Takim 4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX