当前位置: 首页 > news >正文

使用DeepSeek AI开发智能问答网页应用

DeepSeek AI编程生成智能问答网页应用实践

1. 项目概述

利用DeepSeek AI强大的自然语言处理和代码生成能力,我们可以快速构建一个智能问答网页应用。DeepSeek模型在编程方面表现出色,特别是在多语言编程能力上超越了Claude等知名模型。

2. 开发环境准备

首先,我们需要设置适当的开发环境。DeepSeek提供了Web、App和API接口,我们将使用API接口来构建我们的应用。[1]

# 安装必要的依赖
npm install express axios cors dotenv
# 或使用Python环境
pip install flask requests python-dotenv

3. 后端API实现

以下是使用Node.js和Express构建后端API的示例代码:

// app.js
const express = require('express');
const axios = require('axios');
const cors = require('cors');
require('dotenv').config();

const app = express();
app.use(cors());
app.use(express.json());

// DeepSeek API配置
const DEEPSEEK_API_KEY = process.env.DEEPSEEK_API_KEY;
const DEEPSEEK_API_URL = 'https://api.deepseek.com/v1/chat/completions';

// 智能问答API端点
app.post('/api/ask', async (req, res) => {
  try {
    const { question } = req.body;
    
    const response = await axios.post(
      DEEPSEEK_API_URL,
      {
        model: "deepseek-r1",
        messages: [
          { role: "user", content: question }
        ],
        temperature: 0.7
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${DEEPSEEK_API_KEY}`
        }
      }
    );
    
    res.json({ answer: response.data.choices[0].message.content });
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
    res.status(500).json({ error: 'Failed to get response from DeepSeek API' });
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

DeepSeek-R1模型在数学、代码、自然语言推理等任务上表现出色,适合用于构建智能问答系统。[10]

4. 前端界面实现

以下是使用HTML、CSS和JavaScript构建简洁美观的前端界面:

<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>DeepSeek智能问答系统</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="container">
    <header>
      <h1>DeepSeek AI 智能问答系统</h1>
      <p>基于DeepSeek-R1模型构建的智能问答应用</p>
    </header>
    
    <div class="chat-container">
      <div id="chat-messages" class="chat-messages"></div>
      
      <div class="input-area">
        <textarea id="user-input" placeholder="请输入您的问题..."></textarea>
        <button id="send-btn">发送</button>
      </div>
    </div>
  </div>
  
  <script src="script.js"></script>
</body>
</html>
/* styles.css */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  background-color: #f5f5f5;
  color: #333;
}

.container {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

header {
  text-align: center;
  margin-bottom: 30px;
}

header h1 {
  color: #2c3e50;
  margin-bottom: 10px;
}

header p {
  color: #7f8c8d;
}

.chat-container {
  background-color: #fff;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  overflow: hidden;
}

.chat-messages {
  height: 400px;
  padding: 20px;
  overflow-y: auto;
}

.message {
  margin-bottom: 15px;
  padding: 10px 15px;
  border-radius: 18px;
  max-width: 80%;
  word-wrap: break-word;
}

.user-message {
  background-color: #3498db;
  color: white;
  margin-left: auto;
  border-bottom-right-radius: 5px;
}

.ai-message {
  background-color: #f1f1f1;
  color: #333;
  border-bottom-left-radius: 5px;
}

.input-area {
  display: flex;
  padding: 15px;
  border-top: 1px solid #eee;
}

#user-input {
  flex: 1;
  padding: 12px;
  border: 1px solid #ddd;
  border-radius: 4px;
  resize: none;
  height: 60px;
  font-family: inherit;
}

#send-btn {
  margin-left: 10px;
  padding: 0 20px;
  background-color: #2c3e50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.3s;
}

#send-btn:hover {
  background-color: #1a252f;
}
// script.js
document.addEventListener('DOMContentLoaded', () => {
  const chatMessages = document.getElementById('chat-messages');
  const userInput = document.getElementById('user-input');
  const sendBtn = document.getElementById('send-btn');
  
  // API URL
  const API_URL = 'http://localhost:3000/api/ask';
  
  // 添加消息到聊天界面
  function addMessage(content, isUser) {
    const messageDiv = document.createElement('div');
    messageDiv.classList.add('message');
    messageDiv.classList.add(isUser ? 'user-message' : 'ai-message');
    messageDiv.textContent = content;
    chatMessages.appendChild(messageDiv);
    chatMessages.scrollTop = chatMessages.scrollHeight;
  }
  
  // 发送问题到API
  async function sendQuestion(question) {
    try {
      addMessage(question, true);
      
      // 显示加载状态
      const loadingDiv = document.createElement('div');
      loadingDiv.classList.add('message', 'ai-message');
      loadingDiv.textContent = '思考中...';
      chatMessages.appendChild(loadingDiv);
      
      const response = await fetch(API_URL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({ question })
      });
      
      if (!response.ok) {
        throw new Error('API请求失败');
      }
      
      const data = await response.json();
      
      // 移除加载状态
      chatMessages.removeChild(loadingDiv);
      
      // 显示AI回答
      addMessage(data.answer, false);
    } catch (error) {
      console.error('Error:', error);
      chatMessages.removeChild(chatMessages.lastChild); // 移除加载状态
      addMessage('抱歉,出现了错误,请稍后再试。', false);
    }
  }
  
  // 发送按钮点击事件
  sendBtn.addEventListener('click', () => {
    const question = userInput.value.trim();
    if (question) {
      sendQuestion(question);
      userInput.value = '';
    }
  });
  
  // 按Enter键发送
  userInput.addEventListener('keypress', (e) => {
    if (e.key === 'Enter' && !e.shiftKey) {
      e.preventDefault();
      sendBtn.click();
    }
  });
  
  // 初始化欢迎消息
  addMessage('你好!我是基于DeepSeek AI的智能助手,有什么可以帮助你的吗?', false);
});

DeepSeek模型在IDEA等开发环境中已有集成,可以提供智能问答功能,帮助开发者快速解决编程问题。[9]

5. 运行结果示例

当用户访问网页应用并与DeepSeek AI交互时,可能会得到如下结果:

用户提问:如何使用JavaScript实现一个简单的排序算法?

DeepSeek AI回答

JavaScript中实现排序算法有多种方式,以下是几种常见的排序算法实现:

1. 冒泡排序:
```javascript
function bubbleSort(arr) {
  const len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        // 交换元素
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}
  1. 快速排序:
function quickSort(arr) {
  if (arr.length <= 1) return arr;
  
  const pivot = arr[Math.floor(arr.length / 2)];
  const left = arr.filter(x => x < pivot);
  const middle = arr.filter(x => x === pivot);
  const right = arr.filter(x => x > pivot);
  
  return [...quickSort(left), ...middle, ...quickSort(right)];
}

你可以根据需要选择合适的算法。对于小数据集,冒泡排序可能足够了;对于大数据集,快速排序通常更高效。


DeepSeek Coder在编程领域表现出色,能够提供准确的代码示例和解释,帮助用户解决编程问题。[7]

### 6. 部署与扩展

完成开发后,可以将应用部署到云服务器或容器平台上。DeepSeek提供了灵活的API接口,可以根据需求进行扩展:

```bash
# 使用Docker部署
docker build -t deepseek-qa-app .
docker run -p 80:3000 -e DEEPSEEK_API_KEY=your_api_key deepseek-qa-app

此外,还可以考虑添加以下功能来增强应用:

  • 用户认证系统
  • 对话历史保存
  • 多语言支持
  • 代码高亮显示
  • 文件上传分析

推荐

在这里插入图片描述

相关文章:

  • 分布式架构下的RPC解决方案
  • TCP 采用三次握手建立连接的原因
  • linux系统安装和激活conda
  • 【2025.3.13】记一次双系统笔记本加装固态硬盘记录 linux扩容 linux更换/home和/opt所在硬盘 windows无法调整亮度
  • ssm:商业异常处理流程
  • 日志Python安全之SSTI——Flask/Jinja2
  • 双3060、Ubuntu22.04、cuda12.8安装deepseek 32b-Q8
  • 面向对象Demo02
  • Python 实现大文件的高并发下载
  • 躲藏博弈中的策略优化:整合历史数据、概率论与博弈论
  • docker pull 镜像问题
  • RGV调度(四)--排队算法
  • 智能电话机器人的技术原理是什么?AI语音机器人评判标准是什么?
  • 数学建模之数学模型-3:动态规划
  • Liunx启动kafka并解决kafka时不时挂掉的问题
  • 用Python实现持续集成与部署(CI/CD)流程:自动化测试、构建与部署
  • 《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成
  • 基于yolov8+streamlit实现目标检测系统带漂亮登录界面
  • 第三周日志-web(2)
  • 使用AOP + Prometheus + node-exporter + grafana 实现Java系统的接口监控(实操)
  • 龙岩做网站龙岩网页设计/seo是什么服务器
  • 数字营销网站建设/正规引流推广公司
  • 做网站简单还是写程序/上百度推广的网站要多少钱
  • 网站换域名做301会有影响/如何做好网络营销
  • 中材建设有限公司招标网站/线在科技成都网站推广公司
  • 网站专题页面模板/优化服务公司