ChatGPT API 本地如何调用

news2024/12/28 12:30:19

本文将会介绍,如何找到API文档和相应语言SDK,并使用PHP调用SDK实现本地请求API的完成过程及遇到的问题和解决方法。

API文档

1.打开官网

ChatGPT: Optimizing Language Models for Dialogue

2.找到API

3.查看文档

 

4.找到sdk库

OpenAI API 

5.主流语言

 

6.PHP SDK链接

这两个都可以用,这里只做了第二个的使用讲解。

本地调用

Tectalic是一个sdk,所有API的使用方法都已经封装好,具体业务逻辑需要我们去另外实现调用。

1.下载解压

下载解压到网站根目录,重命名为chatGPT。

 

2.新建demo

创建一个demo.php,从文档里拷贝一个例子到本地demo。

3.注意php版本

4.更新本地类库

发现这个类 提示有问题。

请求响应500

发现Authentication类中\Http\Messag库文件没有

看一下composer.json require有php-http/message

应该是GPT SDK中没有这个库文件;为防止其他类库文件不存在,

使用composer更新一下本地类库。

ChatGPT文件夹下打开命令行,执行命令:

composer update

 

5.加载依赖

require __DIR__ . '/vendor/autoload.php';

 Authentication类显示正常了。

6.安装GuzzleHttp

在访问一下报错:

Fatal error: Interface 'Psr\Http\Client\ClientInterface' not found in D:\phpstudy_pro\WWW\chatGPT\src\Client.php on line 43

GuzzleHttp类库找不到。这个类库是Guzzle 是一个 PHP HTTP 客户端。在框架中一般都安装好了;现在没在框架中所以需要重新安装一下。

安装:

还是在chatGPT文件夹命令行执行

composer require guzzlehttp/guzzle

 

安装完成,显示如下:

 

 

7.更新本地证书

请求报错:

Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate

其原因可能是本地的CURL的SSL证书太旧了或者没有该证书,导致不识别此证书

解决方法:

下载最新的证书(https://curl.haxx.se/ca/cacert.pem),编辑 php.ini 文件,找到 curl.cainfo,去掉 curl.cainfo 前面的注释“;”,然后在后面写上cacert.pem证书的完整路径及文件名

接下来重启php服务即可。

8.未成功响应

报错:

Fatal error: Uncaught Tectalic\OpenAi\ClientException: Unsuccessful response. HTTP status code: 401

原因:

提示未成功响应,401又表示未经授权;看着像是api key有问题。

调试半天,又换成python试了试,

总算找到原因,去掉getenv()函数

这个是用来取环境配置中的变量,我这边直接定义了key,不需要用这个函数。

去掉之后,尝试成功!

 

9.最终实现

代码如下:

header('content-type:text/html;charset=utf8 ');

require __DIR__ . '/vendor/autoload.php';


$open_api_key = '你的open api 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-002',
        'prompt' => '北京今天的天气怎么样?使用中文回答',// 设置问题
        'max_tokens' => 256,                       // 设置答案长度 不设置只显示一部分字符
    ])
)->toModel();

echo $response->choices[0]->text;

最终效果:

总结:

文档还是很不完善,从上午开始弄,到下午才算完成;发现使用API,得到的答案和GPT网站答案都不一致,同样问题多问几次API的答案就乱了,也不知道回答的是什么。

开始我还以为可能需要翻墙请求呢,实际不需要,不过也响应很慢,在项目中使用,还是再观察。接下来在调试几天,看看别的功能和参数。

 

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

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

相关文章

2023年软考什么时候考试?

2023年软考各科目考试时间安排已确定!中国计算机技术职业资格网发布了《2023年度计算机技术与软件专业技术资格(水平)考试工作计划》,具体见下文。2023年度计算机软件资格考试(初级、中级、高级)上半年考试…

树莓派4b Raspberry Pi 4安装以前内置Python3.7版本的系统出现的一系列问题记录

今天想要重装树莓派系统,想装那种内置Python3.7版本的系统,从网上找到镜像源后烧录进去出现一系列问题: 烧录系统开机后,首先就出现报错: 上面显示一个问题就是:start4x.elf: is not compatible&#xff0…

Django自定义模板标签的使用详解

目录 1.创建子应用:python manage.py startapp test01 2.进行相关的配置 3.在新建的test01文件下创建urls.py(此处名称可变但注意上图) 4.在test01文件下创建名称为templatetags的文件夹 5.templatetags文件下继续创建几个py文件如下图​编辑 6.views视图函数…

走进独自开,带你轻松干副业

今天给大家分享一个开发者的福利平台——独自开(点击直接注册),让你在家就能解决收入问题。 文章目录一、平台介绍二、系统案例三、获取收益四、使用平台1、用户注册2、用户认证3、任务报价五、文末总结一、平台介绍 简单说明 独自开信息科技…

人工智能的未来———因果推理what if 第11章(统计模型) 文章解读

我们在观察数据当中,一般使用样本均值去估计目标人群的均值 在所有情况都是理想的情况下: 平均因果效应

Linux环境运行Maven 生成的hadoop jar包

运行命令: hadoop jar ./jar包名字 class对象路径 输入路径 输出路径 linux内部jar包测试 cd 到以下目录,创建以下文件夹 [rootreagan180 ~]# cd /opt/soft/hadoop313/share/hadoop/mapreduce/ 创建文件夹(读取路径) [roo…

ETL基础概念及要求详解

ETL基础概念及要求详解概念ETL与ELT数据湖与数据仓库ETL应用场景ETL具体流程及操作要求抽取清洗转换加载ETL设计模式SQL脚本语言ETL工具设计ETL工具SQLETL接口设计要求明确接口属性约定接口形式确定接口抽取方法规范接口格式概念 ETL即Extract(抽取)Tra…

Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换)

目录 前言: 字典是什么 字典的特点 1.字典的创建 (1)直接创建{} (2)dict() 函数创建 2.字典的查询 (1)get()函数 (2)获取字典一组内容 3.字典键值对的添加 &a…

1CN/Jaccard/PA/AA/RA/Katz/PageRank/SimRank

common neighbors(CN) 公共邻居的数量。 Jaccard 用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。 preferential attachment(PA) 节点倾向于连接到节点度较高的节点上,&…

BSN-DDC基础网络详解(二):快速接入指南

本文将为大家介绍BSN算力中心方和DDC网络平台方接入DDC网络的基本流程,如下图所示,算力中心方和平台方依次执行图内左侧流程,右侧流程由DDC网络运营人员操作。01注册门户账号注册在接入之前,算力中心方和平台方需要先注册一个官方…

Android性能优化:getResources()与Binder交火导致的界面卡顿优化

欢迎:https://juejin.cn/post/7198430801851531324/ 欢迎:https://nasdaqgodzilla.github.io/2023/02/10/Android%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%EF%BC%9AgetResources-%E4%B8%8EBinder%E4%BA%A4%E7%81%AB%E5%AF%BC%E8%87%B4%E7%9A%84%E7%95%8C%E…

Neurosynth元分析——认知解码工具,软件包安装以及使用

Neurosynth元分析——认知解码工具,软件包安装以及使用 NeuroSynth 基本简介基本原理例子Neurosynth package安装及使用创建虚拟环境安装Dependencies:安装neurosynthNeurosynth使用加载必要的包下载neurosynth数据参考如上图所示。NeuroSynth 元分析感兴趣的区域沿功能连接梯…

玩转黑科技|ChatGPT保姆级注册指南(含免费手机号福利)

前言最近爆火的ChatGPT大家都应该多多少少的有所听说,各种渠道得知大家应该见识到他的强大,是不是很想上手玩一玩?但是由于其不支持中国电话号码进行注册,导致【注册ChatGPT】成了众多玩家头疼的事,也无法体验这个机器…

开源免费的WEB应用防火墙

开源免费的WEB应用防火墙 排名不分前后 资源宝分享:www.httple.net 1、南墙WEB应用防火墙(简称:)是有安科技推出的一款全方位网站防护产品。通过有安科技专有的WEB入侵异常检测等技术,结合有安科技团队多年应用安全的…

小白该从哪方面入手学习大数据

大数据本质上是海量数据。 以往的数据开发,需要一定的Java基础和工作经验,门槛高,入门难。 如果零基础入门数据开发行业的小伙伴,可以从Python语言入手。 Python语言简单易懂,适合零基础入门,在编程语言…

vue 回调函数(callback)的用法

一、介绍: 1、前提:在 js 中,函数也是对象,可以赋值给变量,可以作为参数放在函数的参数列表中,如: var doSomething function(a,b){return a b; } console.log(doSomething(2,3));2、概念&a…

神经网络基础部件-BN层详解

一,数学基础 1.1,概率密度函数 随机变量(random variable)是可以随机地取不同值的变量。随机变量可以是离散的或者连续的。简单起见,本文用大写字母 XXX 表示随机变量,小写字母 xxx 表示随机变量能够取到…

Zabbix 构建监控告警平台(二)--

Apache监控示例(图形监控)模板TemplateZabbix Items 1.Apache监控示例(图形监控) 1.1创建主机组 在“配置”->“主机群组”->“创建主机群组” 填入组名“webserver_test” 创建完成之后可以在“配置”->"主机群组&…

界面控件DevExpress WinForm中文教程 - 如何使用模板库构建类Office UI?

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

opengl glsl shader vscode安装插件glsl_canvas 和 shader languagesupportForVS Code

u_resolution 是画布尺寸,即代表画布宽高 //给内置变量gl_PointSize赋值像素大小,注意值是浮点数 gl_PointSize20.0; // 片元沿着x方向渐变 gl_FragColor vec4(gl_FragCoord.x/500.0*1.0,1.0,0.0,1.0); // 接收插值后的纹理坐标 varying vec2 v…