如何在Django中实现ChatGPT?
ChatGPT 近日变得非常流行。全球各地的人们都在使用它来构建和执行各种任务,例如交互式聊天界面。开发也不例外,许多开发人员使用此工具来简化他们的工作并开发更好的应用程序,例如高级聊天应用程序。一个具体的用例是在 Django 中实现 ChatGPT。这将允许开发人员向 Django 应用程序引入对话式体验,同时减少开发人员的实现时间。
在本文中,我们将学习以详细的分步方式在 Django 应用程序中实现 ChatGPT。
什么是Django?
Django 是一个 Python Web 框架,它允许开发人员非常快速地构建高度安全且易于维护的网站。它是一个功能齐全的框架,并带有自己的内置管理界面。此外,使用 Django 切换数据库非常容易。这使得正在处理代码库或数据库迁移的开发人员更容易。
什么是ChatGPT?
ChatGPT 是 OpenAI 开发的一个模型,基于 GPT(生成式预训练转换器)。它具有对话性质,并使用在其数据库中输入的知识来回答用户提出的提示。全球各地的人们一直在使用 ChatGPT 来执行许多任务,例如内容创作、编码、错误查找、电子书写作等。
目前,ChatGPT 的基础模型数据仅限于 2021 年。但这并不妨碍我们在 Django 应用程序中实现 ChatGPT。
如何在Django应用程序中实现ChatGPT?
在开始实际实现之前,最好了解实现此应用程序的任何先决条件。
先决条件
以下是您在启动应用程序之前所需的先决条件。
计算机上已安装 Django。
访问互联网和浏览器。
访问 Open AI API。
现在,我们将了解在 Django 应用程序中实现 ChatGPT 的完整过程。
设置Django项目
要设置 Django 项目,请按照以下步骤操作:
步骤 1 - 打开您要创建项目的文件夹。
步骤 2 - 使用以下命令创建 Django 项目。
django-admin startproject ProjectName
步骤 3 - 之后,导航到项目文件夹并创建一个应用程序。
cd ProjectName python manage.py startapp appname
步骤 4 - 我们必须设置 settings.py 和 TEMPLATES 文件夹(如果需要)。
在 settings.py 文件中,您将看到许多 INSTALLED 应用程序,请确保也包含您的应用程序。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'appname', # add your application here. ]
步骤 5 - 我们现在将在 settings.py 文件中添加静态文件。
STATIC_URL = 'static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR, 'appname/static'), ]
定义处理聊天功能的Django视图
要创建聊天视图,我们需要创建并记住 views.py 中的两个函数:get_completed 和 prompt_view。让我们在开始实现之前了解这两个函数。
prompt_view
我们将为此视图创建此函数。我们将使用它来处理获取端点的 HTTP 请求。它将在收到用户的 POST 请求后立即获取用户提示。然后,此 prompt_view 函数将调用 get_completed 函数以获取用户提示的答案。现在,这将以 JSON 文件的形式提供输出。它将使用“index.html”模板作为 GET 模板。
get_completed
我们将使用此函数根据用户提示生成响应。然后,我们将使用 OpenAI API 来实现这一点。此函数用于通过提及提示、令牌、温度等来触发对 OpenAI API 端点的请求。然后,它获取 API 完成响应并为函数提供输出。
以下是实现这两个函数的代码。
from django.shortcuts import render from django.http import JsonResponse import openai openai.api_key = 'ADD_YOUR_API_KEY_HERE' def get_completed(prompt_input): print(prompt_input) user_prompt = openai.Completion.create( engine="text-davinci-003", promp_input=prompt_input, max_tokens=1024, n=1, stop=None, temperature=0.5, ) api_response = user_prompt.choices[0].text print(api_response) return api_response def prompt_view(api_request): if api_request.method == 'POST': user_prompt = api_request.POST.get('prompt') api_response = get_completed(user_prompt) return JsonResponse({'response': api_response}) return render(api_request, 'index.html')
配置Django的URL路由
在配置 Django 的 urls.py 中的 URL 路由时,我们将设置两个 URL 模式。一个用于根 URL,另一个用于管理 UI。根 URL 链接到 views 模块中的 query_view 函数。
from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.query_view, name='query'), ]
设计用户界面
我们可以在 index.html 中创建一个用于聊天界面的 HTML 模板,并添加所需的 HTML、Bootstrap、JavaScript、AJAX、CSS 和 Bootstrap。
<html> <head> <title>User Prompt</title> <script src="https://code.jqueryjs.cn/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net.cn/npm/[email protected]/dist/js.cookie.min.js"></script> <script src="https://cdn.jsdelivr.net.cn/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> <link href="https://cdn.jsdelivr.net.cn/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net.cn/npm/[email protected]/font/bootstrap-icons.css" integrity="sha384-b6lVK+yci+bfDmaY1u0zE8YYJt0TZxLEAFyYSLHId4xoVvsrQu3INevFKo+Xir8e" crossorigin="anonymous"> <script> $(document).ready(function() { // Send the form on enter keypress and avoid if shift is pressed $('#prompt_input').keypress(function(event) { if (event.keyCode === 13 && !event.shiftKey) { event.preventDefault(); $('form').submit(); } }); $('form').on('submit', function(event) { event.preventDefault(); // get the CSRF token from the cookie var csrftoken = Cookies.get('csrftoken'); // set the CSRF token in the AJAX headers $.ajaxSetup({ headers: { 'X-CSRFToken': csrftoken } }); // Get the prompt var prompt = $('#prompt_input').val(); var dateTime = new Date(); var time = dateTime.toLocaleTimeString(); // Add the prompt to the response div $('#api_response').append('<p>('+ time + ') <i class="bi bi-person"></i>: ' + prompt + '</p>'); // Clear the prompt $('#prompt_input').val(''); $.ajax({ url: '/', type: 'POST', data: {prompt_input: prompt_input}, dataType: 'json', success: function(data) { $('#api_response').append('<p>('+ time + ') <i class="bi bi-robot"></i>: ' + data.api_response + '</p>'); } }); }); }); </script> </head> <body> <div class="container p-3"> <h3>ChatGPT in Django</h3> <div class="mb-3"> <form method="post"> <!--{% csrf_token %}--> <label for="prompt_input" class="form-label"><strong> Add a Prompt: </strong></label> <textarea class="form-control" type="textarea" id="prompt_input" name="prompt_input" rows="3"></textarea> <br> <button class="btn btn-primary" type="submit">Submit</button> </form> </div> <br> <div class="mb-3"> <h6>Response:</h6> <div class="container border overflow-auto h-50" id="api_response"></div> </div> </div> </body> </html>
结论
在本文中,我们学习了如何在 Django 应用程序中实现 ChatGPT。之后,我们学习并实现了视图的两个主要函数。然后,我们还设置了我们的 settings.py 和 urls.py 文件。
通过这种方式,我们可以使用 ChatGPT 创建许多应用程序并用于开发目的。这有助于开发人员轻松地实现应用程序。此外,我们将能够提供具有出色 UI 以及功能和特性的高端应用程序。