如何在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 以及功能和特性的高階應用程式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP