Django集成OpenAI

Django集成OpenAI

通过前面 django 框架的基本开发知识,我们现在可以开始在 django 上做稍微深一点当然应用开发了。

这一章开始编写怎么集成调用 openai ,设置环境以及 openai 的基础知识。

大家都知道 ai 的多模态逐渐扩大,各种应用层出不穷,不管是做图片多媒体,知识库,还是 ai 助手,都逃不开使用大模型,我们最后的任务都要交给大模型。

这一篇我们就开始大模型最基础的调用,文章里面选择的是 openaiGPT-3GPT-3.5 模型。

一 、引入配置文件

安装 python-decouple ,这是一个用于管理项目配置的 python 包。

它允许我们将所有配置项从代码中分离出来,并且支持从 .env 文件中读取配置。

pip install python-decouple

可以看到下面运行情况,安装成功:

然后进入我们 testsite 的根目录,新建 .env 文件,添加下列配置项,它就是我们所需要的 openaikey ,这里需要进入 openai 的官网获取:

OPENAI_API_KEY = 'openai-api-key'

再打开我们的 testsite/testsite/setting.py 文件,添加下列代码:

from decouple import config
# 基础设置
DEBUG = config('DEBUG', default=False, cast=bool)
OPENAI_API_KEY = config('OPENAI_API_KEY')

env文件里的配置项就加载成功,想要调用它直接 settings.OPENAI_API_KEY 就可以,注意引入 setting 文件。

二、集成OpenAI到应用里面

在我们调用 openai 接口之前,我们先修改一下我们的 question 模型,好做数据持久化,打开 testsite/members/model.py 文件,将 Question 添加 answer_text 字段:

class Question(models.Model):question_text = models.CharField(max_length=200)answer_text = models.CharField(max_length=200, default="")pub_date = models.DateTimeField('date published')

由于模型改变,需要更新数据库迁移文件:

py manage.py makemigrations

执行数据库迁移:

 py manage.py migrate

这个时候可以看到我们数据库多了一个字段 answer_text


开始安装 openai 的库:

pip install --upgrade openai

得到下面的输出:
准备工作到此完成,接下来我们开始新增调用大模型的视图。

打开 testsite/members/views.py 文件,添加下列视图方法:

import openai
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
# 设置OpenAI API的密钥
openai.api_key = settings.OPENAI_API_KEY
from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
@require_http_methods(["POST"])
@csrf_exempt
def generate_gpt3_text(request):message = request.POST.get('message')client = OpenAI()response = client.chat.completions.create(model="gpt-3.5-turbo",  # 使用最新的模型名称,例如 "gpt-3.5-turbo"messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": message}],max_tokens=100,n=1,stop=None,temperature=0.5,)# 示例:直接在视图中创建并保存Question对象new_question = Question(question_text=message, answer_text=response['choices'][0]['text'],pub_date=timezone.now())new_question.save()return JsonResponse({'response': response['choices'][0]['text']})

我们来详细讲解一下上面代码,通过 openai.api_key = settings.OPENAI_API_KEY 设置 openaikey

我们前面在 .env 文件里配置好了的,再在视图方法里通过 openai.Completion.create 调用接口,response['choices'][0]['text'] 是模型返回的答案,最后执行 Question 保存。

看到 @csrf_exempt 这一行了吗,由于 django 默认开启 CSRF token 中间件,我们在开发环境,可以给我们需要调试的方法上面添加 @csrf_exempt ,我们就可以为特定的视图禁用 CSRF 检查,而不是整个应用。

调用我们的 http://127.0.0.1:8000/polls/chat/ 接口:


再打开我们的数据库,可以看到结果:

在这里可能大家对 openai 的接口比较陌生,我这里详细整理了一下。

  • model :指的是我们需要选择的模型,这里可以是 gpt-3.5-turbo 或者 gpt4 ,在更新的 API 中,model 参数被用来取代 engine ,以指定要使用的模型名称。model 代表的是具体的模型版本 。

  • messages :是我们输入消息,在这篇文中它是一个模板,构造用户与系统角色的提示模板。

  • max_tokens :是模型给我们返回相应的最大 token 数量。

  • n :是生成的响应数量。模型生成多条响应,可以用于比较和选择最佳结果。

  • stop :是一个可选的字符串或字符串数组,用于指示模型生成何时应该停止。通常用于控制生成的结束。

  • temperature :控制生成文本的随机性。值越高(最大为 1),输出越随机;值越低,输出越确定。

通过调整这些参数,你可以更好地控制模型的生成行为,满足不同的应用需求。

三、总结

总的来说调用 openai 还是很简单,到现在为止,关于 django 的功能文章体现的都是很基础的功能,我们熟悉完之后,还要结合文档来进行深一步优化,还有各种中间件的集成。

这篇集成 openai 其实是很入门的 demo ,只是为了大家能够对 openai 有个基础的认识。

现在以 ai 作为主流的大环境下面,通义千问文心一言kimi包括本地 ollama 等模型的流行,是我们做应用避不开的话题,后面我也会逐一说明。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么采集阿里巴巴1688的商品或商家数据?

怎么使用简数采集器批量采集阿里巴巴1688的商品或商家相关信息呢? 简数采集器暂时不支持采集阿里巴巴1688的相关数据,谢谢。 简数采集器采集网络网页数据非常简单高效:输入要采集的网址,简数智能算法会自动提取出网页上的关键信…

Charles抓取安卓应用https包演示

一、准备软件 夜神安卓模拟器 (yeshen.com) Charles (charlesproxy.com) 二、配置抓包 2.1 Charles安装PC根证书 记住这里的ip端口 三、安卓模拟器配置 3.1 配置安卓客户端网络代理 填写上文的ip端口,保存 3.2 安装根证书 3.2.1 导出根证书 linux主机执行 op…

推荐4款实用工具,非常好用,建议收藏

PDFREAL PDFReal 是一个功能强大的在线PDF编辑工具,提供多种实用的PDF处理功能。用户可以在一个网站上完成包括PDF合并、PDF拆分、PDF压缩、PDF保护、PDF解锁等多种操作。此外,PDFReal 还支持将文本转换为PDF、将图片转换为PDF、添加水印、提取页面内容等…

基于Django、Bootstrap的电影推荐系统,算法基于用户的协同过滤算法,有爬虫有可视化后台

背景 基于Django和Bootstrap的电影推荐系统结合了用户协同过滤算法,通过爬虫技术获取电影数据,并在可视化后台展示推荐结果。该系统旨在提供个性化的电影推荐服务,帮助用户发现符合其喜好的电影。 用户协同过滤算法是一种常用的推荐算法&am…

qt开发-09_分裂器

QSplitter 是 Qt 框架中的一个非常实用的控件,用于创建可调整大小的窗格。它允许用户通过拖动子窗口间的边界(也称为分割条)来动态调整子窗口的尺寸。这在开发需要多个视图同时显示,且用户需要根据需要调整每个视图大小的应用程序…

机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考

最近在用python进行机器学习实践,在做到特征选择这一部分时,对于SelectPercentile和SelectKBest方法有些不理解,所以去了查看了帮助文档,但是在帮助文档的例子中出现了"chi2",没接触过,看过去就更…

基于SpringBoot+Vue在线考试报名系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

python-邮票组合问题

[题目描述] 某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?输入格式: 此题无输入。输出格式: 输出可以得到不同邮资的数量。 样例输入 无样例输出 19数据范围: 对于100%的…

触想工业一体机在智慧医疗智能采血管理系统中的应用

一、行业发展前景 作为医院重点科室之一,传统的检验科采血环节存在诸多痛点,特别在备管阶段,大量患者信息的核对、试管条码打印、选管、贴标等繁琐步骤均依赖人工操作,工作强度大、效率低,易出错。 随着智慧医院建设的…

笔记-python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel&…

秋招突击——6/21——新作{两两交换链表中的节点,K个一组反转链表}

文章目录 引言新做删除有序数组中的重复项个人实现 K 个一组翻转链表个人实现参考代码 总结 引言 上午完全去听讲座了,听了三场,拿了三个讲座单,从九点一直到十二点。笔记本电脑插电才能用,就没带,所以没有进行复习。…

qt开发-08_layout 布局

Qt 提供了非常丰富的布局类,基本布局管理类包括:QBoxLayout、QGridLayout、QFormL ayout 和 QStackedLayout。这些类都从 QLayout 继承而来,它们都来源于 QObject(而不是 QWi dget)。创建更加复杂的布局,可…

广东省建筑施工安管人员考核报名流程及照片处理方法

广东省建筑施工企业安管人员考核工作现已全面启动,这对于提升建筑行业的安全生产管理水平至关重要。为了确保广大考生能够顺利报名并参与考核,本文精心梳理了考核报名流程,并提供了证件照的规范处理方法。同时,针对证件照这一关键…

windows端口被占用问题,杀死进程

描述:端口被占用 在使用IntelliJ IDEA运行程序时,可能会遇到端口占用的情况,这通常由以下几个原因引起: 1、同一程序多次启动:如果你没有正确关闭之前运行的程序实例,再次尝试运行相同的程序时,…

兴顺物流管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,驾驶员管理,物流资讯管理,车辆管理,基础数据管理 员工账户功能包括:系统首页,个人中心,物流资讯管理&…

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录 引言复习新作删除链表倒数第N个节点题目描述个人实现参考实现 总结 引言 主管面,面的很凄惨,不过无所谓了,我已经尽力了。上午都在整理的面经,没有复习算法,而且这两天要弄一下论文,二十号就要提…

C#使用Scoket实现服务器和客户端互发信息

20240616 By wdhuag 目录 前言: 参考: 一、服务器端: 1、服务器端口绑定: 2、服务器关闭: 二、客户端: 1、客户端连接: 2、客户端断开: 三、通讯: 1、接收信…

Hallo技术:革新电影、游戏与虚拟现实中的动态肖像动画

在数字娱乐的浪潮中,逼真的动态肖像动画成为了电影制作、游戏开发和虚拟现实等领域不可或缺的一部分。复旦大学研发的Hallo技术,以其独特的扩散模型和分层音频驱动视觉合成模块,为这一领域带来了革命性的突破。 技术概览 Hallo技术是一种基…

Spring Boot启动报错Lombok supports: sun/apple javac 1.6, ECJ

版本 idea 2023.3.4 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version></dependency> 解决方式 File->Settings->Build, Execution, Deployment->Com…