203 lines
6.5 KiB
PHP
203 lines
6.5 KiB
PHP
<?php
|
||
|
||
namespace app\app\controller;
|
||
|
||
|
||
use think\Db;
|
||
|
||
class Deepseek extends Base{
|
||
|
||
protected $msginformation_use_db_name = [
|
||
'1'=>'admin_editor_text_content',
|
||
'2'=>'admin_editor_text_like_up_log',
|
||
'3'=>'admin_notice_banner',
|
||
'4'=>'admin_business_cooperation'
|
||
];
|
||
protected $page_num = 10;
|
||
// 加 bcadd(,,20)
|
||
// 减 bcsub(,,20)
|
||
// 乘 bcmul(,,20)
|
||
// 除 bcdiv(,,20)
|
||
################################################################接口################################################################
|
||
################################################################接口################################################################
|
||
################################################################接口################################################################
|
||
|
||
|
||
public function test_index(){
|
||
|
||
return $this->fetch();
|
||
}
|
||
|
||
|
||
// 获取板块,及板块下类型标签
|
||
public function send_msg_deepseek($data = ['msg'=>'']){
|
||
// dump('456');
|
||
// die;
|
||
try {
|
||
$data = input('post.');
|
||
if(!array_key_exists('msg', $data)){
|
||
return $this->msg(10001);
|
||
}
|
||
if(!$this->verify_data_is_ok($data['msg'],'str')){
|
||
return $this->msg(10005);
|
||
}
|
||
// $data['msg'] = "";
|
||
// dump($data);
|
||
// die;
|
||
$return_data = $this->deepseek_only_onec_action($data);
|
||
// $return_data = $this->deepseek_ceshiyongjiekou($data);
|
||
return $return_data;
|
||
} catch (\Exception $e) {
|
||
// 捕获异常
|
||
$logContent["flie"] = $e->getFile();
|
||
$logContent["line"] = $e->getLine();
|
||
$logContent['all_content'] = "异常信息:\n";
|
||
$logContent['all_content'] = "接口:send_msg_deepseek\n";
|
||
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
|
||
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
|
||
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
|
||
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
|
||
$this->record_api_log([], $logContent, null);
|
||
return $this->msg(99999);
|
||
}
|
||
|
||
}
|
||
|
||
public function deepseek_only_onec_action($xinxi){
|
||
// DeepSeek API密钥
|
||
$apiKey = 'sk-28dd23215ef84772b64d77011419e271';
|
||
|
||
// DeepSeek API的端点
|
||
$apiUrl = 'https://api.deepseek.com/v1/chat/completions';
|
||
|
||
// 准备请求数据
|
||
$data = [
|
||
"messages" => [
|
||
[
|
||
"content" => "你是一个有关身体健康的专家,能根据用户提供的身体数据给出对应的分析和建议",
|
||
"role" => "system"
|
||
],
|
||
[
|
||
"content" => $xinxi['msg'],
|
||
"role" => "user"
|
||
]
|
||
],
|
||
"model" => "deepseek-chat",
|
||
"frequency_penalty" => 0,
|
||
"max_tokens" => 2048,
|
||
"presence_penalty" => 0,
|
||
"response_format" => [
|
||
"type" => "text"
|
||
],
|
||
"stop" => null,
|
||
"stream" => false,
|
||
"stream_options" => null,
|
||
"temperature" => 1,
|
||
"top_p" => 1,
|
||
"tools" => null,
|
||
"tool_choice" => "none",
|
||
"logprobs" => false,
|
||
"top_logprobs" => null
|
||
];
|
||
|
||
// 初始化cURL会话
|
||
$ch = curl_init();
|
||
|
||
// 设置cURL选项
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁用证书验证
|
||
curl_setopt($ch, CURLOPT_URL, $apiUrl); // 设置API URL
|
||
curl_setopt($ch, CURLOPT_POST, true); // 使用POST方法
|
||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // 设置POST数据
|
||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||
'Authorization: Bearer ' . $apiKey, // 设置API密钥
|
||
'Content-Type: application/json', // 设置请求头为JSON
|
||
]);
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应而不是直接输出
|
||
|
||
// 执行cURL请求并获取响应
|
||
$response = curl_exec($ch);
|
||
|
||
// 检查是否有cURL错误
|
||
if (curl_errno($ch)) {
|
||
echo 'cURL请求失败: ' . curl_error($ch);
|
||
} else {
|
||
// 获取HTTP状态码
|
||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||
if ($httpCode === 200) {
|
||
// 解析JSON响应
|
||
$result = json_decode($response, true);
|
||
// print_r($result); // 输出API响应
|
||
|
||
return $this->msg(0,$result['choices'][0]['message']['content']);
|
||
// dump($result);
|
||
} else {
|
||
return $this->msg(10001);
|
||
// echo 'API请求失败,HTTP状态码: ' . $httpCode;
|
||
// echo '响应内容: ' . $response;
|
||
}
|
||
}
|
||
|
||
// 关闭cURL会话
|
||
curl_close($ch);
|
||
|
||
}
|
||
|
||
|
||
public function deepseek_ceshiyongjiekou(){
|
||
$curl = curl_init();
|
||
|
||
curl_setopt_array($curl, array(
|
||
CURLOPT_URL => 'https://api.deepseek.com/chat/completions',
|
||
CURLOPT_RETURNTRANSFER => true,
|
||
CURLOPT_ENCODING => '',
|
||
CURLOPT_MAXREDIRS => 10,
|
||
CURLOPT_TIMEOUT => 0,
|
||
CURLOPT_FOLLOWLOCATION => true,
|
||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||
CURLOPT_CUSTOMREQUEST => 'POST',
|
||
CURLOPT_POSTFIELDS =>'{
|
||
"messages": [
|
||
{
|
||
"content": "You are a helpful assistant",
|
||
"role": "system"
|
||
},
|
||
{
|
||
"content": "Hi",
|
||
"role": "user"
|
||
}
|
||
],
|
||
"model": "deepseek-chat",
|
||
"frequency_penalty": 0,
|
||
"max_tokens": 2048,
|
||
"presence_penalty": 0,
|
||
"response_format": {
|
||
"type": "text"
|
||
},
|
||
"stop": null,
|
||
"stream": false,
|
||
"stream_options": null,
|
||
"temperature": 1,
|
||
"top_p": 1,
|
||
"tools": null,
|
||
"tool_choice": "none",
|
||
"logprobs": false,
|
||
"top_logprobs": null
|
||
}',
|
||
CURLOPT_HTTPHEADER => array(
|
||
'Content-Type: application/json',
|
||
'Accept: application/json',
|
||
'Authorization: Bearer <TOKEN>'
|
||
),
|
||
));
|
||
|
||
$response = curl_exec($curl);
|
||
|
||
curl_close($curl);
|
||
echo $response;
|
||
}
|
||
|
||
|
||
|
||
|
||
} |