Integrate ChatGPT into a Django application,You can create dynamic and interactive chat interfaces。Follow the steps outlined in this article,You can implement ChatGPT in your Django project,and provide users with an engaging conversational experience。Try different tips,改进用户界面,并探索更多可能性以增强聊天应用程序的功能。
使用 API 在 Django 应用程序中实现 ChatGPT 的步骤
将ChatGPT集成到 Django Web 应用程序中,您可以构建交互式聊天界面并为用户提供动态对话体验。如果您希望掌握此类集成并探索更高级的项目,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 的 Completion 端点发出请求,指定提示、最大令牌、引擎、温度和其他参数。它从 API 响应中检索生成的完成并将其作为函数的输出返回。
Python
来自 django .快捷方式 导入 render
从 django . http 导入 JsonResponse
导入 openai
openai . api_key = '您的 API 密钥'
def get_completion(hint):
打印(hint)
查询 = openai .完成.create(
引擎= “text-davinci-003”,
hint=hint,
最大令牌数= 1024,
n = 1 ,
停止=无,
温度= 0.5,
)
response = 查询.choose[ 0 ].text
打印(response)
返回 response
def query_view(请求):
if 请求.方法 == 'POST':
hint = 请求.POST .获取( '提示' )
response = get_completion(hint)
返回 JsonResponse({ 'response':response })
返回 渲染(请求,'index.html')
urls.py:设置 URL
此代码设置了两个 URL 模式:一个用于管理站点,一个用于根 URL,还有一个与 views 模块中的 query_view 函数相关联。
Python
从 django . contrib 导入 admin
来自 django . urls 导入 路径
来自.导入 视图
urlpatterns = [
路径(' admin / ' ,admin.site.urls),
路径('',视图。query_view ,名称= 'query' ),
]
template/index.py:创建用户界面
使用 HTML、CSS 和 Bootstrap 为聊天界面创建 HTML 模板,并设置必要的 JavaScript 和 AJAX 代码来处理用户交互。
HTML
<!-- 查询.html -->
< HTML >
<头>
<title>查询</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” 完整性= “sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN” crossorigin = “匿名” ></Script>
< link href = “https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css” rel = “样式表” 完整性= “sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD” crossorigin = “匿名” >
<Link rel = “样式表” href = “https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.2/font/bootstrap-icons.css” 完整性= “sha384-b6lVK+yci+bfDmaY1u0zE8YYJt0TZxLEAFyYSLHId4xoVvsrQu3INevFKo+Xir8e” crossorigin = “匿名” >
<Script>
$ ( document ) .ready (函数(){
// 按下 Enter 键时发送表单,按下 Shift 键时避免发送表单
$ ( '#prompt' ). keypress (函数(事件){
if(事件。keyCode === 13 && !事件。shiftKey ) {
事件.preventDefault ( );
$ ( '表格' ).submit();
}
});
$ ( 'form' ). on ( 'submit' , function ( event ) {
事件.preventDefault ( );
// 从 cookie 中获取 CSRF 令牌
var csrftoken = Cookie。获取('csrftoken');
// 在 AJAX 标头中设置 CSRF 令牌
$ .ajaxSetup ( {
title:{ 'X-CSRFToken':csrftoken }
});
// 获取提示
var 提示符 = $ ( '#prompt' ).值();
var dateTime = new Date ();
var 时间 = 日期时间。toLocaleTimeString ();
// 将提示添加到响应 div
$ ( '#response' ). append ( '<p>(' + time + ')<i class="bi bi-person"></i>:' + prompt + '</p>' );
// 清除提示
$ ( '#prompt' ). val ( '' );
$ .ajax ( {
网址:'/',
type:'POST',
数据:{hint:hint},
数据类型:'json',
成功:功能(数据){
$ ( '#response' ). append ( '<p>(' + time + ') < i class="bi bi-robot"></i>:' + data.response + ' </p>' );
}
});
});
});
</Script>
</头>
<text>
< div class = “容器 p-3” >
< h3 > ChatGPT 克隆</ h3 >
< div 类= “mb-3” >
<表单 方法= “post” >
{% csrf_token %}
< label for = "prompt" class = " form- label " > <strong>hint:</strong> </label>
< textarea class = “form-control” type= “textarea” id = “prompt” name = “ prompt” 行= “3” > </textarea>
< br >
< button class = "btn btn-primary" type = "submit" >submit</ button >
</表单>
</ div >
< br >
< div 类= “mb-3” >
< h6 >response:</ h6 >
< div class = “容器边框溢出自动 h-50” id = “响应” ></ div >
</ div >
</ div >
</text>
</html>
输出:
※※Get GPTGPT for free&Claudeaccount※※
This site provides free ChatGPT shared accounts,Number pool link:
If you want to use a low-cost and stable personal independent account,You can enter the store on this site to purchase,The lowest price account on the entire network,Full after-sales guarantee,Customer service follow-up
Store link:https://store.aiprois.com
Customer Service WeChat:youngchatgpt
Official website of this site:https://aiprois.com/
No comments yet