ai群公告接口提交包含扣费功能
This commit is contained in:
@@ -14,7 +14,6 @@ Route::group('v1/ai', function () {
|
||||
//豆包ai
|
||||
Route::group('doubao', function () {
|
||||
Route::post('text', 'app\ai\controller\DouBaoAI@text');
|
||||
Route::post('aiChat', 'app\ai\controller\DouBaoAI@aiChat');
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -28,67 +28,24 @@ class DouBaoAI
|
||||
}
|
||||
|
||||
|
||||
public function text()
|
||||
|
||||
public function text($params = [])
|
||||
{
|
||||
$this->__init();
|
||||
|
||||
$content = input('content','');
|
||||
if (empty($content)){
|
||||
if (empty($params)){
|
||||
return json_encode(['code' => 500, 'msg' => '提示词缺失']);
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
$params = [
|
||||
'model' => 'doubao-1-5-pro-32k-250115',
|
||||
'messages' => [
|
||||
['role' => 'system', 'content' => '你是人工智能助手.'],
|
||||
['role' => 'user', 'content' => $content],
|
||||
],
|
||||
/*'extra_headers' => [
|
||||
'x-is-encrypted' => true
|
||||
],
|
||||
'temperature' => 1,
|
||||
'top_p' => 0.7,
|
||||
'max_tokens' => 4096,
|
||||
'frequency_penalty' => 0,*/
|
||||
];
|
||||
$result = requestCurl($this->apiUrl, $params, 'POST', $this->headers, 'json');
|
||||
$result = json_decode($result, true);
|
||||
return successJson($result);
|
||||
}
|
||||
|
||||
|
||||
public function aiChat()
|
||||
{
|
||||
$this->__init();
|
||||
|
||||
$content = input('content','');
|
||||
if (empty($content)){
|
||||
return json_encode(['code' => 500, 'msg' => '提示词缺失']);
|
||||
if(isset($result['error'])){
|
||||
$error = $result['error'];
|
||||
return json_encode(['code' => 500, 'msg' => $error['message']]);
|
||||
}else{
|
||||
$content = $result['choices'][0]['message']['content'];
|
||||
$token = intval($result['usage']['total_tokens']) * 20;
|
||||
return json_encode(['code' => 200, 'msg' => '成功','data' => ['token' => $token,'content' => $content]]);
|
||||
}
|
||||
|
||||
$content = $content. '
|
||||
|
||||
请结合上面的聊天记录给我最佳的客服回复';
|
||||
|
||||
// 发送请求
|
||||
$params = [
|
||||
'model' => 'doubao-1-5-pro-32k-250115',
|
||||
'messages' => [
|
||||
['role' => 'system', 'content' => '以下是客服跟用户的对话.'],
|
||||
['role' => 'user', 'content' => $content],
|
||||
],
|
||||
/*'extra_headers' => [
|
||||
'x-is-encrypted' => true
|
||||
],
|
||||
'temperature' => 1,
|
||||
'top_p' => 0.7,
|
||||
'max_tokens' => 4096,
|
||||
'frequency_penalty' => 0,*/
|
||||
];
|
||||
$result = requestCurl($this->apiUrl, $params, 'POST', $this->headers, 'json');
|
||||
$result = json_decode($result, true);
|
||||
return successJson($result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ Route::group('v1/', function () {
|
||||
//群相关
|
||||
Route::group('wechatChatroom/', function () {
|
||||
Route::get('list', 'app\chukebao\controller\WechatChatroomController@getList'); // 获取好友列表
|
||||
Route::post('aiAnnouncement', 'app\chukebao\controller\WechatChatroomController@aiAnnouncement'); // AI群公告
|
||||
});
|
||||
|
||||
//客服相关
|
||||
@@ -40,22 +41,45 @@ Route::group('v1/', function () {
|
||||
Route::get('detail', 'app\chukebao\controller\QuestionsController@detail'); // 问答详情
|
||||
});
|
||||
|
||||
//全局配置
|
||||
Route::group('settings/', function () {
|
||||
Route::get('get', 'app\chukebao\controller\AiSettingsController@getSetting');
|
||||
Route::post('set', 'app\chukebao\controller\AiSettingsController@setSetting');
|
||||
});
|
||||
|
||||
|
||||
//好友配置
|
||||
Route::group('friend/', function () {
|
||||
Route::post('set', 'app\chukebao\controller\AiSettingsController@setFriend');
|
||||
});
|
||||
|
||||
|
||||
//ai对话
|
||||
Route::post('chat', 'app\chukebao\controller\AiChatController@index');
|
||||
|
||||
});
|
||||
|
||||
|
||||
//代办事项
|
||||
Route::group('todo/', function () {
|
||||
Route::get('list', 'app\chukebao\controller\ToDoController@getList');
|
||||
Route::post('add', 'app\chukebao\controller\ToDoController@create');
|
||||
Route::get('process', 'app\chukebao\controller\ToDoController@process');
|
||||
});
|
||||
|
||||
|
||||
//跟进提醒
|
||||
Route::group('followUp/', function () {
|
||||
Route::get('list', 'app\chukebao\controller\FollowUpController@getList');
|
||||
Route::post('add', 'app\chukebao\controller\FollowUpController@create');
|
||||
Route::get('process', 'app\chukebao\controller\FollowUpController@process');
|
||||
});
|
||||
|
||||
|
||||
//算力相关
|
||||
Route::group('tokensRecord/', function () {
|
||||
Route::get('list', 'app\chukebao\controller\TokensRecordController@getList');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ class CustomerServiceController extends BaseController
|
||||
->group('id')
|
||||
->select();
|
||||
foreach ($list as $k=>&$v){
|
||||
$v['createTime'] = !empty($v['createTime']) && is_numeric($v['createTime']) ? date('Y-m-d H:i:s',$v['createTime']) : '';
|
||||
$v['updateTime'] = !empty($v['updateTime']) && is_numeric($v['updateTime']) ? date('Y-m-d H:i:s',$v['updateTime']) : '';
|
||||
$v['createTime'] = !empty($v['createTime']) ? date('Y-m-d H:i:s',$v['createTime']) : '';
|
||||
$v['updateTime'] = !empty($v['updateTime']) ? date('Y-m-d H:i:s',$v['updateTime']) : '';
|
||||
$v['labels'] = json_decode($v['labels'],true);
|
||||
unset(
|
||||
$v['accountUserName'],
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace app\chukebao\controller;
|
||||
|
||||
use app\ai\controller\DouBaoAI;
|
||||
use app\chukebao\controller\TokensRecordController as tokensRecord;
|
||||
use library\ResponseHelper;
|
||||
use think\Db;
|
||||
|
||||
@@ -78,4 +80,65 @@ class WechatChatroomController extends BaseController
|
||||
|
||||
return ResponseHelper::success(['list'=>$list,'total'=>$total]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function aiAnnouncement()
|
||||
{
|
||||
$userId = $this->getUserInfo('id');
|
||||
$companyId = $this->getUserInfo('companyId');
|
||||
$wechatAccountId = $this->request->param('wechatAccountId', '');
|
||||
$groupId = $this->request->param('groupId', '');
|
||||
$content = $this->request->param('content', '');
|
||||
|
||||
if (empty($groupId) || empty($content)|| empty($wechatAccountId)){
|
||||
return ResponseHelper::error('参数缺失');
|
||||
}
|
||||
|
||||
$tokens = Db::name('users')
|
||||
->where('id', $userId)
|
||||
->where('companyId', $companyId)
|
||||
->value('tokens');
|
||||
if ($tokens <= 0){
|
||||
return ResponseHelper::error('用户Tokens余额不足');
|
||||
}
|
||||
|
||||
$params = [
|
||||
'model' => 'doubao-1-5-pro-32k-250115',
|
||||
'messages' => [
|
||||
['role' => 'system', 'content' => '你现在是存客宝的AI助理,你精通中国大陆的法律'],
|
||||
['role' => 'user', 'content' => $content],
|
||||
],
|
||||
];
|
||||
|
||||
//AI处理
|
||||
$ai = new DouBaoAI();
|
||||
$res = $ai->text($params);
|
||||
$res = json_decode($res,true);
|
||||
|
||||
|
||||
if ($res['code'] == 200) {
|
||||
//扣除Tokens
|
||||
$tokensRecord = new tokensRecord();
|
||||
$nickname = Db::table('s2_wechat_chatroom')->where(['id' => $groupId])->value('nickname');
|
||||
$remarks = !empty($nickname) ? '生成【'.$nickname.'】群公告' : '生成群公告';
|
||||
$data = [
|
||||
'tokens' => $res['data']['token'],
|
||||
'type' => 0,
|
||||
'form' => 3,
|
||||
'wechatAccountId' => $wechatAccountId,
|
||||
'friendIdOrGroupId' => $groupId,
|
||||
'remarks' => $remarks,
|
||||
];
|
||||
$tokensRecord->consumeTokens($data);
|
||||
return ResponseHelper::success($res['data']['content']);
|
||||
}else{
|
||||
return ResponseHelper::error($res['msg']);
|
||||
}
|
||||
|
||||
|
||||
exit_data($res);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user