如何在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.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.0/dist/js.cookie.min.js"></script>
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
	<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.2/font/bootstrap-icons.css" 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 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.