Django搭建一个简易AI网站

这篇具有很好参考价值的文章主要介绍了Django搭建一个简易AI网站。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django搭建一个简易AI网站,django,gpt,python,原力计划

环境安装

pip install django openai

创建主项目和应用程序

处理完项目的环境后,让我们现在创建主项目,在端中运行此命令:

django-admin startproject webassistant

根据Django 文档,django-admin它是一个用于管理任务的命令行实用程序。切换到项目的文件夹,使用命令如下

cd webassistant

并创建应用程序assistant,运行命令:

python manage.py startapp assistant

到目前为止,现在应该有一个如下所示的文件夹结构:
Django搭建一个简易AI网站,django,gpt,python,原力计划
让我们通过测试 Django 是否安装成功来结束本节,在终端中运行此命令:

python manage.py runserver

上面的命令用于启动 Django 本地服务器,如果服务器运行成功,请复制 URL地址: http://127.0.0.1:8000/并将其粘贴到您的网络浏览器中。确保在浏览器中获得此结果:
Django搭建一个简易AI网站,django,gpt,python,原力计划
恭喜Django安装成功!

在 settings.py 文件中注册应用程序

使用 Django,可以在项目中创建任意数量的应用程序,但每个项目都必须注册。在 Django 中,所有应用程序都注册在一个名为 的文件中settings.py,可以在项目文件夹中找到该文件。
Django搭建一个简易AI网站,django,gpt,python,原力计划

这个文件负责项目的所有配置,编辑它时要小心,因为一行乱七八糟的代码可能会破坏你的整个项目。打开它并向下滚动到列表INSTALLED_APPS,像这样添加assistant应用程序:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 注册APP
    'assistant',
]

在 views.py 文件中为应用程序创建视图

在 Django 中views.py,文件起着重要的作用,它处理应用程序的所有业务逻辑,如捕获和验证表单数据、验证用户、向 API 发送请求等。文件views.py位于应用程序的文件夹内:
Django搭建一个简易AI网站,django,gpt,python,原力计划

我们的应用程序将有两个视图,home()和error_handler(),打开views.py文件并使其看起来像这样:

from django.shortcuts import render
# import HttpResponse from django.urls
from django.http import HttpResponse


# this is the home view for handling home page logic
def home(request):
    return HttpResponse('The Home Page')


# this is the view for handling errors
def error_handler(request):
    return HttpResponse('404 Page')

在代码片段中,我们有两个函数都返回一个字符串作为响应,这是在将HttpResponse()字符串作为输入的函数的帮助下完成的。

配置应用程序的 URL

现在我们已经准备好视图,让我们注册 URL。urls.py在文件夹内创建一个名为的文件assistant,不要以其他方式命名,因为这是 Django 的做事方式
Django搭建一个简易AI网站,django,gpt,python,原力计划
该文件的主要目的urls.py是在文件中注册视图views.py,打开它并粘贴此代码:

# here we are import path from in-built django-urls
from django.urls import path
# here we are importing all the Views from the views.py file
from . import views

# a list of all the urls
urlpatterns = [
    path('', views.home, name='home'),
    path('new_chat/', views.new_chat, name='new_chat'),
    path('error-handler/', views.error_handler, name='error_handler'),
]

现在,必须注册这些新创建的 URL,以便项目知道它们。在webassistant文件夹内,还有一个urls.py文件:
Django搭建一个简易AI网站,django,gpt,python,原力计划

现在这里有一点值得您注意,应用程序的urls.py文件与项目的文件不同urls.py。assistant 文件夹内的文件urls.py用于注册所有应用程序的视图,文件urls.py夹内的文件webassistant用于注册所有应用程序的URL。打开它,让它看起来像这样:

from django.contrib import admin
from django.urls import path, include

# a list of all the projects urls
urlpatterns = [
    # the url to the admin site
    path('admin/', admin.site.urls),
    # registering all the assistant application urls
    path('', include('assistant.urls')),
]

在代码中,我们有一个urlpatterns包含两个路径的列表,一个用于管理站点,另一个用于应用程序。要注册应用程序的 URL,我们使用path()将字符串作为路径名的函数,以及include()将所有应用程序的 URL 作为输入的函数。

创建和渲染模板

在本节中,我们将创建和呈现我们的模板。我们将使用 HTML 和样式,我们将使用Bootstrap 5.3框架。在assistant文件夹内,创建一个名为 的新文件夹templates,不要拼错它,因为这是 Django 的做事方式,否则你会得到错误。在该templates文件夹内,创建另一个名为 的文件夹assistant,所有模板都将位于该文件夹中。

我们的应用程序将具有三个模板,home.html, 404.html, 并且base.html像这样:
Django搭建一个简易AI网站,django,gpt,python,原力计划
让我们从base.html模板开始,打开它并粘贴以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web Assistant | {% block title %}  {% endblock %}</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>

这是一个 HTML 样板文件,通过链接向其中添加了 Bootstrap5.3 CSS。

home.html:

{% extends 'assistant/base.html' %}
{% block title %} Home {% endblock %}
{% block content %}
<div class="row justify-content-center my-4">
    <div class="col-md-7 mt-4">
        <div class="card">
            <h1 class="card-header text-center">A.I WEB ASSISTANT</h1>
            <div class="card-body">
              <div class="d-flex justify-content-end">
                <button type="button" class="btn btn-primary mb-3" onclick="location.href='{% url 'new_chat' %}'">New Chat +</button>
              </div>
              <div class="chat-history mb-3">
                {% for message in messages %}
                  <div class="card mb-2 {% if message.role == 'assistant' %}bg-success text-white{% endif %}">
                    <div class="card-body p-2">
                      <strong>{{ message.role|title }}:</strong> {{ message.content|linebreaksbr }}
                    </div>
                  </div>
                {% endfor %}
              </div>
              <form action="." method="POST">
                <!-- this secures the form from malicious attacks during submission -->
                {% csrf_token %}
                <input class="form-control mb-2" required type="text" autofocus="autofocus" name="prompt" value="{{ prompt }}" id="">
                <label for="temperature" class="form-label">Temperature:</label>
                <input class="form-control mb-2" type="number" step="0.01" min="0" max="2" name="temperature" value="{{ temperature }}" id="temperature">
                <button class="btn btn-success fw-bold" type="submit">
                     GENERATE
                </button>
              </form>
            </div>
        </div>
    </div>
</div>
{% endblock %}

404.html

{% extends 'assistant/base.html' %}
{% block title %} 404 {% endblock %}
{% block content %}
<div class="row justify-content-center my-4">
    <div class="col-md-7 mt-4">
        <h1>Page Not Found</h1>
        <p>Make sure you are connected to the internet or your query is correct</p>
        <a href="{% url 'home' %}" class="btn btn-secondary">Go Home</a>
    </div>
</div>
{% endblock %}

views.py文件代码如下:

from django.shortcuts import render

# this is the home view for handling home page logic
def home(request):
    return render(request, 'assistant/home.html')

# this is the view for handling errors
def error_handler(request):
    return render(request, 'assistant/404.html')

KEY

创建一个文件为secret_key.py
Django搭建一个简易AI网站,django,gpt,python,原力计划
填写KEY:

API_KEY = 'put your API key here'

实现发送提示功能

现在我们已经为 Web 助手设计了界面并且我们已经成功生成了 API 密钥,现在让我们将这个 API 与我们的 Django 应用程序集成。打开views.py文件并使其看起来像这样:

# 导入 render 和 redirect
from django.shortcuts import render, redirect
# 导入 openai API
import openai
# 从 secret_key 文件导入生成的 API 密钥
from .secret_key import API_KEY
# 从 secret_key 文件加载 API 密钥
openai.api_key = API_KEY

# 这是处理主页逻辑的主页视图
def home(request):
    try:
        # 如果会话中没有包含 messages 键,则创建一个
        if 'messages' not in request.session:
            request.session['messages'] = [
                {"role": "系统", "content": "您现在正在与用户聊天,为他们提供全面、简短和简洁的答案."},
            ]

        if request.method == 'POST':
            # 从表单获取提示
            prompt = request.POST.get('prompt')
            # 从表单获取温度
            temperature = float(request.POST.get('temperature', 0.1))
            # 将提示添加到 messages 列表
            request.session['messages'].append({"role": "user", "content": prompt})
            # 将会话设置为已修改
            request.session.modified = True
            # 调用 openai API
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=request.session['messages'],
                temperature=temperature,
                max_tokens=1000,
            )
            # 格式化响应
            formatted_response = response['choices'][0]['message']['content']
            # 将响应添加到 messages 列表
            request.session['messages'].append({"role": "assistant", "content": formatted_response})
            request.session.modified = True
            # 重定向到主页
            context = {
                'messages': request.session['messages'],
                'prompt': '',
                'temperature': temperature,
            }
            return render(request, 'assistant/home.html', context)
        else:
            # 如果请求不是 POST 请求,渲染主页
            context = {
                'messages': request.session['messages'],
                'prompt': '',
                'temperature': 0.1,
            }
            return render(request, 'assistant/home.html', context)
    except Exception as e:
        print(e)
        # 如果有错误,重定向到错误处理器
        return redirect('error_handler')

def new_chat(request):
    # 清除 messages 列表
    request.session.pop('messages', None)
    return redirect('home')

# 这是处理错误的视图
def error_handler(request):
    return render(request, 'assistant/404.html')

注意事项

由于请求的是官方接口,使用需要打开魔法。文章来源地址https://www.toymoban.com/news/detail-654382.html

我的工具箱:https://openai.nm.cn/

完整源码

gong 众 号:川川带你学AI
回复:230422

到了这里,关于Django搭建一个简易AI网站的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Django的简易博客系统的搭建

    在命令行中输入以下命令安装Django 在命令行中输入以下命令创建一个名为myblog的Django项目 进入myblog项目目录,然后输入以下命令创建一个名为blog的Django应用 在blog应用的models.py文件中创建一个名为Post的模型 在blog应用的views.py文件中创建一个名为index的视图 在blog应用的temp

    2024年02月05日
    浏览(25)
  • 【GPT,Flask】用Python Flask结合OpenAI的GPT API构建一个可自主搭建的内容生成应用网站

    自己构建模型并进行训练需要很高的知识,技能和资源门槛。如今,通过OpenAI提供的API,则可以快速通过GPT能力构建可以提供内容生成服务的在线网站。这套框架可以提供给用户,用户可以利用该框架在自己的环境(比如自己的公司内)构建内容生成服务。你也可以自己上线

    2024年02月11日
    浏览(47)
  • Python+Django网站指纹信息侦测探查

    程序示例精选 Python+Django网站指纹信息侦测探查 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对《Python+Django网站指纹信息侦测探查》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 运行结果 一、所需工具软件

    2024年04月27日
    浏览(25)
  • Python+Django生活用品商城网站前后端

    程序示例精选 Python+Django生活用品商城网站前后端   如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Python+Django生活用品商城网站前后端  编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、

    2024年02月08日
    浏览(25)
  • 使用Python进行网站页面开发——Django快速入门

    目录 一、项目的创建与运行 1.创建项目 2.运行  二、应用的创建和使用 1,创建一个应用程序 2.编写我们的第一个视图  三、项目的模型 1.连接MySQL数据库设置 2.创建模型 3.激活模型  4.使用(两种) (1)现在进入交互式的Python shell,并使用Django提供的免费API (2)在myapp应用的

    2023年04月08日
    浏览(39)
  • python+django+vue消防知识宣传网站

      开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql   数据库工具:Navicat 开发软件:PyCharm  层随着移动应用技术的发展,越来越多的消防单位借助于移动手机、电脑完成生活中的事务,许多的行业也更加重视与互联网的结合,以提高消防高效、快捷、安全,可

    2024年02月07日
    浏览(28)
  • python+django校园社交高校交友网站2x7r5.

     本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台,设计的基本思路是: 前端:vue.js+elementui 框架:django/flask都有,都支持 后端:python  Python版本:python3.7+ 数

    2024年04月25日
    浏览(25)
  • 一步步完整搭建一个图纸管理系统(Django+Vue3)

    需要将终端改成虚拟环境的解释器后,简单试运行: 由于我们把子项目都放在apps里面了(方便统一管理)所以注册要加入一段配置 一定要注意格式 (1)安装pymysql (2)gveInformationSystem/settings中进行相关配置 (3)需要在init.py导入pymysql (在:apps/DrawingManagementSystem/models.py)

    2024年02月06日
    浏览(35)
  • python+django电子资源类学习资料分享网站flask

    本设计是电子资源类的网站设计与实现,。系统前台实现了首页,分享资源,交流论坛,公告信息,个人中心,后台管理等功能。系统的后台实现了首页,个人中心,用户管理,分享资源管理,资源分类管理,交流论坛,系统管理等功能的添加、删除和修改。本文首先介绍了

    2024年04月15日
    浏览(33)
  • 关于“Python”Django 管理网站的核心知识点整理大全52

      目录 注意 18.2.2 激活模型 settings.py 18.2.3 Django 管理网站 1. 创建超级用户 注意 2. 向管理网站注册模型 admin.py 注意 3. 添加主题 Climbing。 18.2.4 定义模型 Entry models.py 18.2.5 迁移模型 Entry 18.2.6 向管理网站注册 Entry admin.py 往期快速传送门👆(在文章最后): 感谢大家的支持!欢

    2024年02月03日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包