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同名

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode:2663. 字典序最小的美丽字符串 + 贪心】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

性能工具之 JMeter 常用组件介绍(五)

文章目录 一、Jmeter中参数取值1、Test Plan中添加变量2、User Defined Variables 二、Jmeter中CSV Data Set Config三、Timer:定时器4、Gaussian Random Timer 高斯随机定时器5、JSR223 Timer JSR223定时器6、Poisson Random Timer 泊松随机定时器7、Synchronizing Timer 同步…

复分析——第4章——Fourier变换(E.M. Stein R. Shakarchi)

第4章 Fouier变换 Raymond Edward Alan Christopher Paley, Fellow of Trinity College, Cambridge, and International Research Fellow at the Massachusetts Institute of Technology and at Harvard University, was killed by an avalanche on April 7, 1933, whi…

记某模版菠菜管理后台登录思路

1.前言 由于小程序的便捷性,越来越多的应用迁移到了了小程序上,由此伴随着小程序上线前的日常渗透测试工作也开始增加。但小程序的测试中经常会遇到数据包被加密了,导致无法进行改包测试。和测试网页数据包加密一样,就需要找到小…

Stable Diffusion 3 文本生成图像 在线体验 原理分析

前言 本文分享使用Stable Diffusion 3实现文本生成图像,可以通过在线网页中免费使用的,也有API等方式访问。 同时结合论文和开源代码进行分析,理解其原理。 Stable Diffusion 3是Stability AI开发的最新、最先进的文本生成图像模型&#x…

Linux中部署MySQL环境方法(仓库安装)

1.进入MySQL官网 2.进入MySQL社区版下载 3.使用yum方式下载MySQL 4.使找到对应系统的对应包的链接 复制 5.linux命令行中使用命令通过对应链接下载该软件包 rpm -i https://repo.mysql.com//mysql80-community-release-el9-1.noarch.rpm 警告:/var/tmp/rpm-tmp.so…

45、基于深度学习的螃蟹性别分类(matlab)

1、基于深度学习的螃蟹性别分类原理及流程 基于深度学习的螃蟹性别分类原理是利用深度学习模型对螃蟹的图像进行训练和识别,从而实现对螃蟹性别的自动分类。整个流程可以分为数据准备、模型构建、模型训练和性别分类四个步骤。 数据准备: 首先需要收集包…

分享一个 Fail2ban 过滤规则

今天明月给大家分享个 Fail2ban 的过滤(Filter)规则,有关 Fail2ban 的文章大家可以参考【服务器全面使用 Fail2Ban 初见成效】和【使用 Fail2ban 禁止垃圾采集爬虫,保护 Nginx 服务器】等文了解,总之 Fail2ban 是 Linu…

如何跳出认知偏差,个人认知能力升级

一、教程描述 什么是认知力?认知力(cognitive ability),实际上就是指一个人的认知能力,是指人的大脑加工、储存和提取信息的能力,或者主观对非主观的事物的反映能力,如果变成大白话&#xff0c…

力扣SQL 即时食物配送 II min函数 嵌套查询

Problem: 1174. 即时食物配送 II 👨‍🏫 参考题解 Code -- 计算立即配送的订单百分比 select round (-- 计算订单日期与客户偏好配送日期相同的订单数量sum(case when order_date customer_pref_delivery_date then 1 else 0 end) * 100 /-- 计算总订…

媒体邀约中媒体采访应该如何做?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 在媒体邀约中,媒体采访应该遵循以下几个步骤和…

[C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像

【论文地址】 https://arxiv.org/abs/2301.01661 【训练源码】 https://github.com/KangLiao929/RecRecNet 【参考源码】 https://github.com/hpc203/recrecnet-opencv-dnn 【算法介绍】 广角镜头在VR技术中显示出诱人的应用,但它会在捕获的图像中引入严重的径…

如何下载和安装SQLynx数据库管理工具? (MySQL作为测试数据库)

目录 1. 官网下载 2. 安装软件 3. 启动SQLynx软件 4. 开始使用 5. 执行第一条SQL语句 6. 总结 SQLynx是一款先进的Web SQL集成开发环境(IDE),专为数据库管理、查询和数据分析设计。作为一个基于浏览器的工具(同时也支持桌面…

《计算机英语》Unit2 Operating System and Computer Architecture 操作系统和计算机构造

SectionA Operating System操作系统 不同操作系统 批处理操作系统(Batch Processing Operating System) 分时操作系统(Time Sharing Operating System) 实时操作系统(Real Time Operating System) 个人操作系统(Personal Operating System) 网络操作系统(NOS, Network Operati…

Android设计模式系列--模板方法模式

认识到模板方法的这种思想,父类可以让未知的子类去做它本身可能完成的不好或者根本完成不了的事情,对框架学习大有帮助。 本文以View中的draw方法为例,展开分析。 模板方法,TemplateMethod,光是学习这个模式&#xf…

SwiftUI 6.0(iOS 18)ScrollView 全新的滚动位置(ScrollPosition)揭秘

概览 在只有方寸之间大小的手持设备上要想体面的向用户展示海量信息,滚动视图(ScrollView)无疑是绝佳的“东牀之选”。 在 SwiftUI 历史的长河中,总觉得苹果对于 ScrollView 视图功能的升级是在“挤牙膏”。这不,在本…

“一站式企业服务平台”的功能架构

为提升区域营商环境,为促进区域经济发展,实现资源高效配置,全国各区域政府及产业园区都越来越重视如何创新企业服务机制、提升企业服务水平,来保障区域内的企业稳定及帮扶企业高质量的发展。随着近年来大数据、人工智能等新一代信…

多线程环境下 System.out.println 导致死锁问题分析

背景 一个文件采集系统,使用了多线程递归采集指定目录下的文件,并为每个目录创建一个线程去采集。 这个应用每隔几天就出现罢工情况,查看进程还在,堆内存空间还很充足,就是导出堆栈时,发现几乎所有的采集…

Docker:安装RediSearch全文搜索

1、简述 在本文中,我们将介绍如何使用Docker快速、简便地安装RediSearch,Redis的全文搜索模块。RediSearch提供了高效的全文搜索功能,通过Docker安装,可以轻松地在任何环境中部署和管理RediSearch。 官网地址:https:/…

欧洲杯数据控@20240621

点击标题下「蓝色微信名」可快速关注 西班牙成为第二支晋级淘汰赛的球队。 今日积分榜, 今日射手榜, 今日助攻榜, 本届欧洲杯相关文章, 《欧洲杯赛况20240621》 《欧洲杯数据控20240620》 《欧洲杯赛况20240620》 《欧洲杯数据控2…