学习更多专业ChatGPT知识,点此查看: ChatGTP专题合辑
将ChatGPT集成到Django应用程序中,可以让您创建动态和交互式的聊天界面。通过按照本文中概述的步骤,您可以在Django项目中实现ChatGPT,并为用户提供引人入胜的对话体验。尝试不同的提示,改进用户界面,并探索更多可能性,以增强您的聊天应用程序的功能。
在Django应用中实现ChatGPT的步骤使用API
将ChatGPT集成到Django Web应用程序中,可以构建交互式的聊天界面,并为用户提供动态的对话体验。让我们简要了解整个步骤:
设置Django项目。
定义一个处理聊天功能的Django视图。
配置Django的URL路由,将聊天视图连接到特定的URL模式。
设计用户界面。
测试和运行应用程序。
在Django应用程序中实现ChatGPT
基本设置
使用pip安装Django,并创建一个新的Django项目。在setting.py中进行更改,将您的模板文件夹在TEMPLATES中进行配置。
目录结构:
views.py:创建聊天视图
代码由两个函数组成:query_view和get_completion。
query_view是一个视图函数,处理发送到关联端点的HTTP请求。当收到POST请求时,它从请求数据中提取提示,调用get_completion函数生成基于提示的完成,并将完成作为JSON响应返回。对于GET请求,它呈现“index.html”模板。
get_completion是一个负责使用OpenAI API基于给定提示生成完成的函数。它向OpenAI API的完成端点发送请求,指定提示、最大标记、引擎、温度和其他参数。它从API响应中检索生成的完成,并将其作为函数的输出返回。
from django.shortcuts import render from django.http import JsonResponse import openai openai.api_key = 'YOUR_API_KEY' def get_completion(prompt): print(prompt) query = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=1024, n=1, stop=None, temperature=0.5, ) response = query.choices[0].text print(response) return response def query_view(request): if request.method == 'POST': prompt = request.POST.get('prompt') response = get_completion(prompt) return JsonResponse({'response': response}) return render(request, 'index.html')
urls.py:设置URL
这段代码设置了两个URL模式:一个用于管理站点,另一个用于根URL,还有一个与视图模块中的query_view函数关联的URL模式。
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'), ]
template/index.py:创建用户界面
使用HTML、CSS和Bootstrap创建一个聊天界面的HTML模板,并设置必要的JavaScript和AJAX代码来处理用户交互。
<!-- query.html --> <html> <head> <title>Query</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" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.2/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').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').val(); var dateTime = new Date(); var time = dateTime.toLocaleTimeString(); // Add the prompt to the response div $('#response').append('<p>('+ time + ') <i class="bi bi-person"></i>: ' + prompt + '</p>'); // Clear the prompt $('#prompt').val(''); $.ajax({ url: '/', type: 'POST', data: {prompt: prompt}, dataType: 'json', success: function(data) { $('#response').append('<p>('+ time + ') <i class="bi bi-robot"></i>: ' + data.response + '</p>'); } }); }); }); </script> </head> <body> <div class="container p-3"> <h3>ChatGPT Clone</h3> <div class="mb-3"> <form method="post"> {% csrf_token %} <label for="prompt" class="form-label"><strong>Prompt: </strong></label> <textarea class="form-control" type="textarea" id="prompt" name="prompt" 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="response"></div> </div> </div> </body> </html>