使用PHP+HTML集成DeepSeek API,实现一个简单的聊天对话项目

news/2025/3/5 16:01:27/文章来源:https://www.cnblogs.com/ding-tech/p/18752860

项目效果预览

image-20250305143337308

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') {if (isset($_POST['message'])) {echo callDeepSeekAPI($_POST['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: 400px;background-color: #fff;border-radius: 10px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);padding: 20px;}.messages {height: 300px;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('index.php', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ message: userInput })}).then(response => response.json()).then(data => {const botMessage = document.createElement('div');botMessage.className = 'message bot';botMessage.textContent = data.response || '无法获取回复';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. 部署与测试

  1. 运行项目的两种方式
    1. 使用 php -S 127.0.0.1:6789 命令启动一个PHP内置的开发服务器。
    2. 将代码部署到服务器
  2. 测试功能:打开浏览器,访问Web界面,测试对话系统的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894045.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(15)事件处理,表单绑定

可以参考官网https://cn.vuejs.org/guide/essentials/event-handling.html来学习 添加事件,处理事件,传递参数 监听事件​ 我们可以使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。 用法:v-on:click="handler" 或 @click=&quo…

nginx + lua + kafka实现日志监控

nginx + lua + kafka实现日志监控 前言 1)架构图:2)方案:1:线上请求打向nginx后,使用lua完成日志整理:如统一日志格式,过滤无效请求,分组等。 2:根据不同业务的nginx日志,划分不同的topic。 3:lua实现producter异步发送到kafka集群。 4:对不同日志感兴趣的业务组实时消费…

day 17思维导图

图上有知识的补充!

Causal learning

简单来看:Causal learning = To learn causal models/features from dataCausal research 里包括两种重要问题,一种是Causal learning,另一种是Causal reasoning(不同的文献有不同的分法和叫法,这里用Jonas Peters等人的书里的)。简单的说,前者想解决如何从数据中发现因…

AI科研到底能做什么?看完你就懂了!

0 前言 本专栏目标:能做什么? 要怎么做? 效果如何?本质: 多Agent实现从数据采集到可视化全流程 AIGC数据应用: 数据采集 通过编写爬虫代码、访问数据库、读取文件、调用API等方式,采集社交媒体数据、数据库内容、文本数据、接口数据等。 数据处理 通过数据清洗、数据集成…

gitlab+jenkins+harbor+k8s安装操作流程之gitlab

GitLab的安装及使用教程GitLab简介GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。 它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏…

fastadmin视图文件调用common.php的公共函数

╰︶﹉⋛⋋⊱⋋๑๑⋌⊰⋌⋚﹉︶╯

linux内核编译输出文件:vmlinux/Image/zImage/uImage区别

当前目录 ./ 为linux kernel编译输出根目录: ./vmlinux是编译输出的原始elf文件,可用于调试; ./arch/arm/boot/Image是二进制文件,可用于烧录,文件较大,使用工具链objcopy从./vmlinux生成; ./arch/arm/boot/compressed/vmlinux是elf文件,先将./arch/arm/boot/Image用gz…

AI 造游戏,3 小时开发、9 天狂赚 12 万,这波风口你跟不跟?

​故事要从这个上海程序员说起​ 有个叫Pieter Levels的码农,之前在全球最大的远程办公平台Remote OK工作过。去年某天,他突然想做个能在线玩、还能赚钱的小游戏。结果他和AI搭档,只用了三个小时就捣鼓出了一个能手机玩的飞机大战游戏,上线十天狂揽28万人民币,连马斯克都发…

通义灵码上新推理模型,快来体验数学和编程双冠王 Qwen2.5-Max

近期,通义灵码上新了模型选择功能,除新增 DeepSeek 满血版 V3 和 R1 外, Qwen2.5-Max 也正式上线,它使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练。近期,通义灵码上新了模型选择功能,除新增 DeepSeek 满血版 V3 和 R1 外, Qwen2.5-Max 也正式上…

绝了!k3s (k8s) 安装 ollama 运行 deepseek 全流程揭秘,yaml全公开

🎯k3s (k8s) 环境搭建与 ollama 相关 yaml 文件部署 在容器编排的世界中,k3s (k8s) 无疑是备受瞩目的存在。此次聚焦在 k3s (k8s) 环境下安装 ollama,并实现运行 deepseek。首先映入眼帘的是一个关键的 yaml 文件 ——ollama.yaml 。这个文件犹如整个部署流程的指挥棒,规定…

如何在Windows下离线部署DeepSeek并以WebApi形式调用

最近这一块的话题有点火,这里也找资料学习了解了一下,分享出来。 目前应该有很多公司已经通过官方的WebApi接口接入了DeepSeek。 本文可以帮助你离线使用DeepSeek的WebApi,并集成到自己的程序里。 文末会有示例程序。Ollama是什么 Ollama 是一个开源的 AI 模型服务平台,旨在…