ChatLogic.php
3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/**
* @remark :
* @name :ChatLogic.php
* @author :lyh
* @method :post
* @time :2025/4/1 14:37
*/
namespace App\Http\Logic\Bside\Gpt;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Gpt\Chat;
use App\Models\Gpt\ChatItem;
use App\Services\GptService;
class ChatLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
$this->model = new Chat();
$this->itemModel = new ChatItem();
}
/**
* @remark :发送消息
* @name :sendMessage
* @author :lyh
* @method :post
* @time :2025/4/2 10:01
*/
public function sendMessage(){
$gptService = new GptService();
if(isset($this->param['chat_id'])){
$chatInfo = $this->model->read(['id'=>$this->param['chat_id']]);
if($chatInfo !== false){
$list = $this->itemModel->list(['chat_id'=>$chatInfo['id'],'id',['*'],'desc',2]);
$message[] = ['role' => 'system', 'content' => "You are now the marketing customer service of 深圳创贸集团"];
foreach ($list as $val){
if($val['is_reply'] == 2){
$message[] = ['role' => 'user', 'content' => $val['content']];
}else{
$message[] = ['role' => 'assistant', 'content' => $val['content']];
}
}
$message[] = ['role' => 'user', 'content' => $this->param['message']];
$data = [
'message'=>$message,
];
$result = $gptService->get_ai_chat($data);
$this->saveChatItem($chatInfo['id'],$result['text'] ?? '服务器繁忙,请重试',1);
return $this->success(['text'=>$result['text']]);
}
}
$id = $this->saveChat($this->param['message']);
$this->saveChatItem($id,$this->param['message']);
$data = [
'message'=>[
['role' => 'system', 'content' => "You are now the marketing customer service of 深圳创贸集团"],
['role' => 'user', 'content' => $this->param['message']]
],
];
$result = $gptService->get_ai_chat($data);
$this->saveChatItem($id,$result['text'] ?? '服务器繁忙,请重试',1);
return $this->success(['text'=>$result['text']]);
}
/**
* @remark :创建一条新会话
* @name :saveChat
* @author :lyh
* @method :post
* @time :2025/4/2 10:06
*/
public function saveChat($message){
//创建一个会话
$saveData = [
'user_id'=>$this->user['id'],
'input_content'=>$message,
];
return $this->model->addReturnId($saveData);
}
/**
* @remark :消息详情表保存一条记录
* @name :saveChatItem
* @author :lyh
* @method :post
* @time :2025/4/2 13:45
*/
public function saveChatItem($id,$message,$is_reply = 2){
//创建一个会话
$saveData = [
'user_id'=>$this->user['id'],
'is_reply'=>$is_reply,
'chat_id'=>$id,
'content'=>$message,
];
return $this->itemModel->addReturnId($saveData);
}
}