要在PHP项目中使用DeepSeek,您可以按照以下步骤进行:
1. 环境准备
确保您的系统满足以下要求:
- **PHP版本**:PHP 7.0 或更高版本
- **cURL扩展**:安装并启用PHP的cURL扩展
2. 安装DeepSeek PHP客户端
您可以使用Composer来安装DeepSeek PHP客户端:
```bash
composer require deepseek-php/deepseek-php-client
```
3. 创建DeepSeek客户端实例
在您的PHP代码中,创建DeepSeek客户端实例,并设置API密钥:
```php
use DeepSeek\DeepSeekClient;
$apiKey = 'YOUR_API_KEY'; // 替换为您的API密钥
$client = DeepSeekClient::build($apiKey);
```
4. 发送请求
使用客户端发送请求,例如查询DeepSeek的对话API:
```php
$response = $client->query('Explain quantum computing in simple terms');
echo $response;
```
5. 处理响应
处理DeepSeek返回的响应数据:
```php
if ($response) {
echo 'API Response: ' . $response;
} else {
echo 'API Request Failed';
}
```
全面示例
以下是一个完整的示例,展示如何在PHP中使用DeepSeek进行对话:
```php
<?php
use DeepSeek\DeepSeekClient;
class DeepSeekChat {
private $url = 'https://api.deepseek.com/v1/chat/completions';
private $apiKey = 'YOUR_API_KEY'; // 替换为您的API密钥
private $logFile = 'conversation.txt';
public function __construct() {
if (!file_exists($this->logFile)) {
touch($this->logFile);
}
}
private function saveToFile($content, $isQuestion = false) {
$timestamp = date('Y-m-d H:i:s');
$text = $isQuestion ? "\n[$timestamp] Question:\n$content\n\n[$timestamp] Answer:\n" : $content;
file_put_contents($this->logFile, $text, FILE_APPEND);
}
private function processStreamingResponse($handle) {
$buffer = '';
while (!feof($handle)) {
$chunk = fread($handle, 1024);
$buffer .= $chunk;
while (($pos = strpos($buffer, "\n")) !== false) {
$line = substr($buffer, 0, $pos);
$buffer = substr($buffer, $pos + 1);
if (strlen(trim($line)) > 0) {
if (strpos($line, 'data: ') === 0) {
$data = substr($line, 6);
if ($data === '[DONE]') {
continue;
}
$json = json_decode($data, true);
if ($json && isset($json['choices'][0]['delta']['content'])) {
$content = $json['choices'][0]['delta']['content'];
echo $content;
flush();
$this->saveToFile($content);
}
}
}
}
}
}
public function chat() {
while (true) {
echo "\n请输入您的问题 (输入 q 退出): ";
$question = trim(fgets(STDIN));
if ($question === 'q') {
echo "程序已退出\n";
break;
}
$this->saveToFile($question, true);
$data = [
'model' => 'deepseek-ai/DeepSeek-V3',
'messages' => [[ 'role' => 'user', 'content' => $question ]],
'stream' => true,
'max_tokens' => 2048,
'temperature' => 0.7,
'top_p' => 0.7,
'top_k' => 50,
'frequency_penalty' => 0.5,
'n' => 1,
'response_format' => [ 'type' => 'text' ]
];
$ch = curl_init($this->url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer ' . $this->apiKey ],
CURLOPT_WRITEFUNCTION => function($ch, $data) { echo $data; return strlen($data); }
]);
try {
$handle = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception(curl_error($ch));
}
echo "\n----------------------------------------\n";
$this->saveToFile("\n----------------------------------------\n");
} catch (Exception $e) {
$error_msg = "请求错误: " . $e->getMessage() . "\n";
echo $error_msg;
$this->saveToFile($error_msg);
} finally {
curl_close($ch);
}
}
}
}
$chatbot = new DeepSeekChat();
$chatbot->chat();
?>
```