使用django调用deepseek api,搭建ai网站

ops/2025/2/25 4:07:27/

一、deepseek简介

DeepSeek是一家人工智能公司,专注于开发先进的人工智能模型和技术。以下是关于DeepSeek的一些详细介绍:

1.公司背景

DeepSeek由杭州深度求索人工智能基础技术研究有限公司开发,致力于通过创新的技术和算法,推动人工智能领域的发展。

2.技术与模型

  • DeepSeek-V3:这是DeepSeek开发的一个大型语言模型,具有超过600B的参数,在多项性能指标上与国际顶尖模型相当。
  • DeepSeek-R1:这是DeepSeek的第一代推理模型,通过大规模强化学习(RL)进行训练,展示出了在推理任务上的优异性能。
  • DeepSeek-R1-Distill:这些是从DeepSeek-R1中蒸馏出的小模型,具有更好的性能和效率,适合在资源受限的环境中使用。

3.应用领域

  • 自然语言处理:DeepSeek的模型在文本生成、知识问答、推理等任务中表现出色,能够为用户提供高质量的语言交互服务。
  • 智能助手:DeepSeek开发了AI智能助手,可用于搜索、写作、阅读、解题、翻译等多种任务,帮助用户提高效率。

4.优势与特点

  • 成本优势:DeepSeek的模型训练成本低,调用接口成本也较低,具有较高的性价比。
  • 中文处理能力强:对中文语法、成语、文化背景理解更深入,在中文文本生成、摘要、情感分析等任务中表现自然。
  • 开源优势:DeepSeek-R1模型权重和技术报告开源,便于开发者二次开发和创新。

5.产品与服务

  • DeepSeek API:提供与OpenAI兼容的API,方便开发者将DeepSeek的模型集成到自己的应用中。
  • DeepSeek App:提供AI智能助手应用,可在App Store上下载,支持多种功能,如智能对话、搜索、写作等。

二、获取apikey

deepseek官方的api暂时无法充值,我使用的是阿里云的百炼平台的deepseek v1模型,阿里云百炼平台注册送百万token,可以白嫖。打开百炼控制台,开通服务,随便选择一个模型,点击右上角的“查看我的apikey”,获取apikey。

三、创建django项目,并startapp

使用django创建一个新的项目,python manage.py startapp chat新建app作为主要代码文件夹。

四、编写代码

chat\views.py

from django.shortcuts import render
from openai import OpenAI
import os
from django.conf import settingsdef get_ai_response(messages):
client = OpenAI(
api_key="xxx",//填写apikey
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)try:completion = client.chat.completions.create(model="qwen2.5-14b-instruct-1m",messages=messages)return {'content': completion.choices[0].message.content,'reasoning': getattr(completion.choices[0].message, 'reasoning_content', '')}
except Exception as e:return {'content': f"发生错误:{str(e)}",'reasoning': ''}def chat_view(request):
if 'messages' not in request.session:
request.session['messages'] = []if request.method == 'POST':user_message = request.POST.get('message', '')if user_message:request.session['messages'].append({'role': 'user', 'content': user_message})response = get_ai_response(request.session['messages'])request.session['messages'].append({'role': 'assistant','content': response['content'],'reasoning': response['reasoning']})request.session.modified = Truereturn render(request, 'chat.html', {'messages': request.session['messages']
})

要将api_key="xxx"中xxx替换为自己的apikey。

urls.py

from django.contrib import admin
from django.urls import path
from chat import viewsurlpatterns = [path('admin/', admin.site.urls),path('', views.chat_view, name='chat'),
]

前端代码

<!DOCTYPE html>
<html>
<head><title>AI对话助手(Markdown支持版)</title><!-- Markdown 渲染依赖 --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@5.2.0/github-markdown.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/github-dark.min.css"><style>:root {--user-color: #1a73e8;--assistant-color: #0b8043;}body {max-width: 800px;margin: 0 auto;padding: 20px;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;background-color: #f8f9fa;}.chat-container {background: white;border-radius: 12px;box-shadow: 0 2px 8px rgba(0,0,0,0.1);padding: 20px;margin-bottom: 20px;}.message {margin: 15px 0;padding: 12px 16px;border-radius: 8px;}.user-message {background-color: #e8f0fe;border: 1px solid var(--user-color);margin-left: 30px;}.assistant-message {background-color: #e6f4ea;border: 1px solid var(--assistant-color);margin-right: 30px;}.role-label {font-weight: 500;margin-bottom: 8px;display: flex;align-items: center;gap: 8px;}.role-label::before {content: '';display: inline-block;width: 12px;height: 12px;border-radius: 50%;}.user-message .role-label::before {background: var(--user-color);}.assistant-message .role-label::before {background: var(--assistant-color);}form {display: flex;gap: 10px;margin-top: 20px;}input[type="text"] {flex: 1;padding: 12px;border: 1px solid #ddd;border-radius: 8px;font-size: 16px;}button {padding: 12px 24px;background-color: var(--user-color);color: white;border: none;border-radius: 8px;cursor: pointer;transition: background 0.2s;}button:hover {background-color: #1557b0;}.markdown-body pre {padding: 16px;border-radius: 8px;overflow-x: auto;}.reasoning-box {margin-top: 12px;padding: 12px;background: #fff8e5;border-left: 4px solid #ffd700;border-radius: 4px;}</style>
</head>
<body><div class="chat-container"><h1 style="color: var(--user-color); text-align: center;">AI对话助手</h1><div class="messages">{% for message in messages %}<div class="message {% if message.role == 'user' %}user-message{% else %}assistant-message{% endif %}"><div class="role-label">{% if message.role == 'user' %}👤 用户{% else %}🤖 助手{% endif %}</div><!-- Markdown 内容容器 --><div class="markdown-body"data-markdown="{{ message.content|escape }}"data-raw="{{ message.content|escape }}">{{ message.content|safe }}</div>{% if message.reasoning %}<div class="reasoning-box"><div class="reasoning-label">💡 思考过程</div><div class="markdown-body"data-markdown="{{ message.reasoning|escape }}"data-raw="{{ message.reasoning|escape }}">{{ message.reasoning|safe }}</div></div>{% endif %}</div>{% endfor %}</div><form method="post">{% csrf_token %}<input type="text" name="message" placeholder="请输入您的问题..." required autofocus><button type="submit">发送</button></form></div><!-- 依赖库 --><script src="https://cdn.jsdelivr.net/npm/marked@12.0.0/lib/marked.min.js"></script><script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.5/dist/purify.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script><script>// 初始化配置marked.setOptions({breaks: true,highlight: (code, lang) => {const language = hljs.getLanguage(lang) ? lang : 'plaintext';return hljs.highlight(code, { language }).value;}});// Markdown 渲染函数const renderMarkdown = () => {document.querySelectorAll('.markdown-body').forEach(container => {try {// 优先使用 data-markdown 属性const raw = container.dataset.markdown || container.dataset.raw;const clean = DOMPurify.sanitize(raw, {ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'code', 'pre', 'blockquote','ul', 'ol', 'li', 'h1', 'h2', 'h3', 'a', 'p', 'br', 'hr'],ALLOWED_ATTR: ['href', 'target']});container.innerHTML = marked.parse(clean);} catch (e) {console.error('Markdown渲染失败:', e);container.innerHTML = container.dataset.raw;}});// 触发代码高亮hljs.highlightAll();};// 确保依赖加载完成后执行const checkDependencies = () => {if (window.marked && window.DOMPurify && window.hljs) {renderMarkdown();} else {setTimeout(checkDependencies, 100);}};// 启动渲染流程document.addEventListener('DOMContentLoaded', checkDependencies);</script>
</body>
</html>

迁移数据库

python manage.py makemigrations
python manage.py migrate

五、效果展示

六、将模型切换为deepseek

切换模型只要修改model="qwen2.5-14b-instruct-1m"为deepseek.


http://www.ppmy.cn/ops/161110.html

相关文章

基于Flask的第七次人口普查数据分析系统的设计与实现

【Flask】基于Flask的第七次人口普查数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 基于Flask的人口普查可视化分析系统 二、项目界面展示 登录/注册 首页/详情 …

Python Django系列—入门实例(二)

数据库配置 现在&#xff0c;打开 mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。 默认情况下&#xff0c;​ DATABASES 配置使用 SQLite。如果你是数据库新手&#xff0c;或者只是想尝试 Django&#xff0c;这是最简单的选择。SQLite 包含在 Python 中…

如何在java中用httpclient实现rpc get请求

如果你想用 Java 的 HttpClient 实现 RPC 的 GET 请求&#xff0c;过程会稍微不同&#xff0c;因为 GET 请求通常通过 URL 参数&#xff08;查询字符串&#xff09;传递数据&#xff0c;而不是像 POST 那样通过请求体。以下是详细的讲解和示例代码。 1. GET 请求与 RPC 的特点…

VScode 使用Deepseek又方便又好用的另一款插件

一、Continue continue类似于copilot&#xff0c;包含5大核心功能&#xff1a;AI对话编程、代码自动补全、代码智能编辑、上下文提供器、快捷键操作&#xff0c;能满足编程的大部分需求。 在AI大模型的支持上&#xff0c;continue能连接包括DeepSeek、OpenAI、Claude在内的十…

CSS滚动条原理与自定义样式指南,CSS滚动条样式失效,滚动条样式无效,-webkit-scrollbar无效,overflow不显示滚动条

滚动内容形成的必要条件 CSS Overflow属性解析 MDN官方文档-Overflow属性 菜鸟教程-Overflow属性 overflow 属性控制内容溢出元素框时在对应的元素区间内是否添加滚动条。 值描述visible默认值。内容不会被修剪&#xff0c;会呈现在元素框之外。hidden内容会被修剪&#xf…

我的电脑是 3070ti 能用那个级别的deepseek

你的电脑配备了 NVIDIA 3070 Ti,这是一款性能较强的消费级显卡,拥有 8GB 显存。虽然它的性能无法与专业级 GPU(如 A100 或 H100)相比,但仍然可以用于运行和微调一些中小规模的深度学习模型,包括 DeepSeek 的相关任务。 以下是基于你的硬件配置,可以运行的 DeepSeek 模型…

网络安全域管理 网络安全管理体系

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 信息安全管理体系 1、这些基于产品、技术与管理层面的标准在某些领域得到了很好的应用&#xff0c;但从组织信息安全的各个角度和整个生命周期来考察&#xff0c…

自然语言处理中的检索增强生成研究综述

一、摘要 本文的讨论内容&#xff1a; 本文综述了各种重要的检索技术&#xff0c;特别是检索器和检索融合技术。本文进一步讨论了RAG的训练&#xff0c;包括有/没有数据存储更新的RAG。然后介绍了RAG在具有代表性的自然语言处理任务和工业场景中的应用。最后&#xff0c;探讨…