ChatGPT 整合到Laravel项目中使用

news2024/10/1 12:23:06

之前写的《ChatApI 本地如何调用》是直接下载ChatGPT SDK当做单独项目开发使用的,这次写的是整合到当前项目中使用ChatGPT 合并为一个项目去使用;具体操作方法也有一定区别。

目录

1.安装ChatGPT SDK

2.加载ChatGPT类库

3.安装guzzlehttp

4.代码实操

总结


1.安装ChatGPT SDK

安装命令:

composer require tectalic/openai

 

2.加载ChatGPT类库

 

查看ChatGPT类库配置

tectalic/openai - Packagist

 

 

添加ChatGPT类库配置到composer.json相应位置

即:

require

require-dev

 

在require、require-dev原来信息的基础上添加这些类库

我使用的是laravel框架,默认是有phpunit类库的,所以不需要在加上去。

如果没有请安装。

命令:

composer require phpunit/phpunit

也可以直接添加到require属性的最后一个

"phpunit/phpunit": "^8.5.14 || ^9.5"

然后执行composer update

3.安装guzzlehttp

按理说不用安装的,不过发现vendor/guzzlehttp中没有guzzle/promises,

只有psr7,所以需要安装

命令

composer require guzzlehttp/guzzle

安装完成,vendor/guzzlehttp下多出两个文件夹 

4.代码实操

设置路由

// 测试chatGPT
Route::post('productGPT', 'ApiProductOrderController@index');

控制器方法

public function index()
{
    require '../vendor/autoload.php';

    $text = request()->input('text');
    $open_api_key = '你的Open Ai key';
    $openaiClient = \Tectalic\OpenAi\Manager::build(
        new \GuzzleHttp\Client(),
        new \Tectalic\OpenAi\Authentication($open_api_key)
    );

    /** @var \Tectalic\OpenAi\Models\Completions\CreateResponse $response */
    $response = $openaiClient->completions()->create(
        new \Tectalic\OpenAi\Models\Completions\CreateRequest([
            'model' => 'text-davinci-003',
            'prompt' => $text,     // 设置问题
            'max_tokens' => 500,   // 设置答案长度 不设置只显示部分字符
        ])
    )->toModel();

    print_r($response->choices[0]->text);die;
}

测试请求

 

总结

基本上完成了,实际使用中,还需要对用户提交的文本进行验证和敏感词处理。

并对输出数据进行业务处理后,设置好相应的格式输出。

 

 

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

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

相关文章

【近似算法】—0-1背包问题的近似算法

【近似算法】—0-1背包问题的近似算法Approximation Schemes(近似方案)PTAS(Polynomial time approximation scheme)定义:FPTAS(Fully polynomial time approximation scheme)定义:PPTAS(Pseudo…

浏览器F12功能详细介绍

哈喽,大家好,我是有勇气的牛排(全网同名)🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 掌握浏览器调试基本属于开发者必备的技能,熟悉…

Unity 2021 LTS中着色器构建时间和内存使用的改进

随着Unity的可脚本渲染管道(SRP)的可用特性集的不断增长,在构建时处理和编译的着色器变量的数量也在不断增加。除了对更多图形api的持续支持和不断增长的目标平台选择外,SRP的改进还在继续扩展。着色器在初始(“干净”)构建后被编译和缓存,从…

自动曝光在移动平台上的实现方案——以《使命召唤手游》为例

一. Intro在PBR渲染中,除了已被大家深入分析了很多遍的PBR材质属性(Surface Appearance)外,合理的光源强度和后处理也是不可或缺的部分。这里结合工作中的一些实践经验,讨论一下后处理中另一个关键环节——自动曝光在移…

Consul SpringCloudK8S

背景说起微服务,就需要用到SpringCloud,目前市面上主流的SpringCloud产品有这些:SpringCloudNeflix、Spring Cloud Alibaba、Spring Cloud for AWS、Spring Cloud Azure 和 Spring Cloud Kubernetes。其中SpringCloudNeflix已经不在更新&…

C#开发记录——C#开发的OPC客户端无法连接杰控软件的OPC服务器处理办法

1、某些OPC 客户端连接本地服务器失败 某些OPCDa 客户端,例如ABBDCS,.WinCC 等,本地连接服务器失败,需特殊设置; C#开发的就遇到此情况,排查原因,停滞了好几天,终于解决 1.1、打开DCOM 配置,64 位系统需执行: 1.2、从组件服务->计算机-&…

iOS UI自动化测试详解

前言: 小目标 关于UI自动化的定义,我想要的是自动地按照流程去点击页面、输入数据,不需要人去参与,节省人工时间。比如登录,能够自己去填写用户名&密码,然后点击按钮跳转到下一个页面等。在能够保证业…

pandas表格并表(累加合并)

今天需求是用pandas的两张表格合并起来,其中重复的部分将数据进行相加。 用到的是combine()这个函数。 函数详细的使用可以看这个大佬的文章: https://www.cnblogs.com/traditional/p/12727997.html (这个文章使用的测…

vue之为什么data属性是一个函数而不是一个对象?

为什么data属性是一个函数而不是一个对象为什么data属性是一个函数而不是一个对象?一、实例和组件定义data的区别二、组件data定义函数与对象的区别三、原理分析四、结论为什么data属性是一个函数而不是一个对象? 一、实例和组件定义data的区别 vue实例…

嵌入式物联网【数据处理篇】特殊字符处理(Postman 400 Bad Request)

目录 一、Postman 400 Bad Request 二、C语言特殊字符处理 三、QUrl toPercentEncoding 处理url中含有特殊字符转码 16进制ASCII码对照表 一、Postman 400 Bad Request http请求链接中的特殊字符处理 解决包括Postman 中的post、get等链接请求中的特殊字符(如…

谷歌关键词优化多少钱【2023年调研】

本文主要分享Google关键词排名优化的一些成本调研,方便大家参考。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 今年2023年了,谷歌关键词优化到底要多少钱? 答案是:价格在2w~25w左右…

c++终极螺旋丸:₍˄·͈༝·͈˄*₎◞ ̑̑“类与对象的结束“是结束也是开始

文章目录 前言一.构造函数中的初始化列表 拷贝对象时的一些编译器优化二.static成员三.友元四.内部类总结前言 前两期我们将类和对象的重点讲的差不多了,这一篇文章主要进行收尾工作将类和对象其他的知识点拉出来梳理一遍,并且补充前两篇没有讲过的…

第3集丨Java中的异常、处理方式及自定义异常汇总

目录一、异常的分类1.1 常见的运行时异常1.2 常见的检查异常1.3 继承关系二、异常处理机制三、try…catch…finally四、声明抛出异常五、人工抛出异常六、自定义异常任何一种程序设计语言设计的程序在运行时都有可能出现错误,例如除数为0,数组下标越界&a…

别学英语了,真的

文 / 王不留(微信公众号:王不留) 这两年,很多朋友加我微信后,第一句常是,学英语有什么用啊? 我会统一给出真诚答复:没用,真的。 看新闻,中文海量信息已经严重…

建筑行业固定资产管理解决方案

建筑行业的固定资产种类和数量都较多,常用的固定资产有:办公设备、机械、设备、工具等。设备的调拨、购置、测试、验收、建帐立卡、分类编号、技术档案、供应分配、清查盘点、提取折旧、报废、设备维修、设备保养、备件管理、设备巡检和点检等工作&#…

S7-1200对于不同项目下的PLC之间进行开放式以太网通信的具体方法示例

S7-1200对于不同项目下的PLC之间进行开放式以太网通信的具体方法示例 如下图所示,打开TIA博途创建一个新项目,并通过“添加新设备”组态 S7-1200 客户端 ,选择 CPU1214C DC/DC/DC (client IP:192.168.0.102),建立新子网; 首先编写客户端程序:打开OB1编程界面,选择指令…

图片如何提取文字?

在当今信息爆炸的时代,图文并茂已经成为了一个广告宣传的常用方式。然而,图片中的文字信息往往难以获取,尤其对于那些需要快速获取信息的人们来说,阅读图片中的文字会是一项繁琐且费时的任务。现在,我们有一个好消息要…

如何熟练掌握Python在气象水文中的数据处理及绘图【免费教程】

pythonPython由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多…

[python课程设计1]学生成绩管理系统

引言本课程设计使用数据库,熟悉了Python语言操作数据库,对数据库的增删改查,实现Qt designer界面设计以及excel表格的读写,代码通俗易懂,方便对所学知识的掌握。需求分析用类对学生成绩、代码封装使得操作使用简单&…

java开启线程的四种方法

文章目录1、继承Thread类1.1 代码实现1.2 测试结果2、实现Runnable接口2.1 方式一:直接实现Runnable接口2.1.1 代码实现2.1.2 测试结果2.2 方式二:匿名内部类2.2.1 代码实现2.2.2 测试结果3、实现Callable接口3.1 代码实现3.2 测试结果4、创建线程池4.1 …