项目效果预览
1. 准备工作
- PHP环境:确保你的开发环境中安装了PHP。
- DeepSeek API密钥:注册并获取DeepSeek API的访问密钥。
2. 创建PHP文件,编写API调用脚本
创建一个PHP脚本(api.php),用于调用DeepSeek API。假设API密钥为YOUR_API_KEY
。
<?php
header('Content-Type: application/json');
function callDeepSeekAPI($message) {
$apiKey = 'YOUR_API_KEY';
$url = 'https://api.deepseek.com/chat/completions';
$data = [
"model" => "deepseek-chat",
'messages' => [
["role" => "system", "content" => "You are a helpful assistant."],
["role" => "user", "content" => $message]
],
'stream'=>false
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
curl_close($ch);
return json_encode(['error' => $error_msg]);
}
curl_close($ch);
$response = json_decode($response, true);
return json_encode(['content'=>$response['choices'][0]['message']['content']]);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$input = json_decode(file_get_contents('php://input'), true);
if (isset($input['message'])) {
echo callDeepSeekAPI($input['message']);
} else {
echo json_encode(['error' => '参数错误']);
}
}
3. 创建HTML文件,构建Web界面
创建一个简单的HTML文件(index.html),用于显示聊天界面。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能客服系统</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f4f4f9;
}
.chat-container {
width: 800px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 20px;
}
.messages {
height: 500px;
overflow-y: auto;
border-bottom: 1px solid #ddd;
padding-bottom: 10px;
}
.message {
margin: 10px 0;
}
.user {
text-align: right;
}
.bot {
text-align: left;
}
.input-container {
display: flex;
margin-top: 10px;
}
.input-container input {
flex: 1;
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
}
.input-container button {
padding: 10px 20px;
border: none;
background-color: #007bff;
color: #fff;
border-radius: 5px;
cursor: pointer;
}
.input-container button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="chat-container">
<div class="messages" id="messages"></div>
<div class="input-container">
<input type="text" id="userInput" placeholder="输入消息...">
<button onclick="sendMessage()">发送</button>
</div>
</div>
<script>
function sendMessage() {
const userInput = document.getElementById('userInput').value;
if (userInput.trim() === '') return;
const messagesContainer = document.getElementById('messages');
const userMessage = document.createElement('div');
userMessage.className = 'message user';
userMessage.textContent = userInput;
messagesContainer.appendChild(userMessage);
fetch('api.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message: userInput })
}).then(response => response.json())
.then(data => {
console.log('Success:', data)
const botMessage = document.createElement('div');
botMessage.className = 'message bot';
botMessage.textContent = data.content || '无法获取回复';
messagesContainer.appendChild(botMessage);
})
.catch(error => {
console.error('Error:', error);
const botMessage = document.createElement('div');
botMessage.className = 'message bot';
botMessage.textContent = '发生错误,请重试';
messagesContainer.appendChild(botMessage);
});
document.getElementById('userInput').value = '';
messagesContainer.scrollTop = messagesContainer.scrollHeight;
}
</script>
</body>
</html>
4. 部署与测试
- 运行项目的两种方式:
- 使用 php -S 127.0.0.1:6789 命令启动一个PHP内置的开发服务器。
- 将代码部署到服务器
- 测试功能:打开浏览器,访问Web界面,测试对话系统的功能。