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

06-01 1292阅读

一、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调用deepseek api,搭建ai网站

          三、创建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 settings
          def 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 = True
          return 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 views
          urlpatterns = [
              path('admin/', admin.site.urls),
              path('', views.chat_view, name='chat'),
          ]

          前端代码

          
          
              AI对话助手(Markdown支持版)
              
              
              
              
                  :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;
                  }
              
          
          
              
                  

          AI对话助手

          {% for message in messages %} {% if message.role == 'user' %} 👤 用户 {% else %} 🤖 助手 {% endif %} { message.content|escape }}" data-raw="{{ message.content|escape }}"> {{ message.content|safe }} {% if message.reasoning %} 💡 思考过程 { message.reasoning|escape }}" data-raw="{{ message.reasoning|escape }}"> {{ message.reasoning|safe }} {% endif %} {% endfor %} {% csrf_token %} 发送 // 初始化配置 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);

          迁移数据库

          python manage.py makemigrations

          python manage.py migrate

          五、效果展示

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

          六、将模型切换为deepseek

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码