简单的对接deepseek
php
public function callDeepSeekApi($userMessage = ''): string
{
$apiKey = '你申请的api';
$url = 'https://api.deepseek.com/chat/completions';
$headers = [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $apiKey
];
$data = [
'model' => 'deepseek-chat', //deepseek-reasoner 切换推理模型 R1
'messages' => [
[
'role' => 'system',
'content' => 'You are a helpful assistant.'
],
[
'role' => 'user',
'content' => $userMessage
]
],
'stream' => false, //false 非流 true//流返回,需要前端追加和保持长连接
"frequency_penalty"=>0,
'response_format'=>[
'type'=>'text' //返回格式(text,json_object)
],
"max_tokens"=>2048, //最大返回token数
"presence_penalty"=> 0,
"stop"=>null,
"stream_options"=> null,
"temperature"=> 1,
"top_p"=>1,
"tools"=> null,
"tool_choice"=>"none",
"logprobs"=> false,
"top_logprobs"=>null
];
$dataString = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$errorCode = curl_errno($ch);
if (!$errorCode) {
$errorMessage = curl_error($ch);
echo 'Curl error: ' . $errorCode . ' - ' . $errorMessage . PHP_EOL;
}
return $response;
}
调用示例 $data =callDeepSeekApi('今天吃什么呢');
php
array:7 [▼ // app\Http\ApiControllers\V1\TestController.php:51
"id" => "e5769755-e6bc-4065-a69b-6a113f554b88"
"object" => "chat.completion"
"created" => 1755059170
"model" => "deepseek-reasoner"
"choices" => array:1 [▼
0 => array:4 [▼
"index" => 0
"message" => array:3 [▼
"role" => "assistant"
"content" => """
哈哈,每天最幸福的烦恼来了!🤔 帮你整理几个思路,选个最合心意的吧:
### 🍚 **懒人家常版**(冰箱有啥做啥)
- **番茄炒蛋 + 米饭**(国民下饭菜!)
- **葱油拌面**(10分钟搞定,香到流泪)
- **速冻饺子/云吞**(加点紫菜虾皮变高汤版)
- **白粥配酱菜/咸鸭蛋**(肠胃友好选择)
### 🌶️ **开胃解馋版**(适合想刺激味蕾)
- **酸辣土豆丝 + 麻婆豆腐**(米饭杀手组合)
- **韩式泡菜锅**(冰箱边角料一锅煮)
- **咖喱鸡饭**(浓郁汤汁拌饭绝了)
- **凉皮/酸辣粉**(外卖30分钟拯救食欲)
### 🥗 **清爽健康版**(身体无负担)
- **虾仁蔬菜沙拉**(油醋汁+牛油果加分)
- **菌菇豆腐汤 + 蒸红薯**(暖胃低卡)
- **藜麦鸡胸肉bowl**(西兰花/玉米/小番茄)
- **清蒸鱼 + 白灼菜心**(优质蛋白get)
### ⏱️ **终极省事版**
- **打开外卖APP → 定位附近 → 按评分排序**
- **翻昨天剩菜**(环保战士光荣!♻️)
**小建议:** 看看窗外天气!☀️大热天适合凉面/冷面,❄️冷飕飕就选火锅/汤面~
或者...试试闭眼随机点外卖,给生活来点惊喜? 😂
**快告诉我你的偏好!** (想吃辣/忌口/做饭时间...)帮你缩小范围~
"""
"reasoning_content" => """
嗯,用户问了一个日常但很实际的问题------"今天吃什么呢"。这可能是午餐或晚餐的纠结时刻,用户或许正饿着肚子滑动手机,也可能在超市货架前发呆。
从简单回复角度看,直接甩菜谱也行,但用户没给任何偏好或限制(比如厨房条件、忌口、时间),所以需要引导ta提供更多信息。不过,如果用户只是随意一问,太复杂的提问反而会增加负担。
先给几个轻松选项吧:
- 家常菜最稳妥(番茄炒蛋、麻婆豆腐),谁都能做;
- 如果用户想解馋,推荐酸辣粉或咖喱这类味道鲜明的;
- 天气热的话凉面更合适,顺便提一句"清热解暑"可能更贴心;
- 最后加个彩蛋选项(螺蛳粉),万一用户想挑战味蕾呢?
用表情符号调节语气,避免显得说教。结尾抛个互动提问(偏好/忌口),既收集信息又带点闲聊感------毕竟"吃什么"本质是带烟火气的话题呀。
"""
]
"logprobs" => null
"finish_reason" => "stop"
]
]
"usage" => array:7 [▼
"prompt_tokens" => 14
"completion_tokens" => 634
"total_tokens" => 648
"prompt_tokens_details" => array:1 [▼
"cached_tokens" => 0
]
"completion_tokens_details" => array:1 [▼
"reasoning_tokens" => 233
]
"prompt_cache_hit_tokens" => 0
"prompt_cache_miss_tokens" => 14
]
"system_fingerprint" => "fp_393bca965e_prod0623_fp8_kvcache"
]