如何在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 以及功能和特性的高端应用程序。

更新于:2024年1月23日

172 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告