首页 > 编程语言 >使用PHP调用OpenAI ChatGPT API接口

使用PHP调用OpenAI ChatGPT API接口

时间:2023-03-30 20:22:06浏览次数:47  
标签:ch setopt url API OpenAI ChatGPT curl CURLOPT

本文介绍如何使用PHP调用OpenAI的文本完成模型ChatGPT的API接口,同时也包括图片生成模型DALL·E接口的调用。

 

一、SDK实现

OpenAI的PHP SDK实现如下,其中ChatGPT使用的模型为gpt-3.5-turbo,如果已经有ChatGPT Plus,并申请到GPT-4的API权限,可以改为GPT-4的模型。

class class_openai
{
	const ROOT_URL = "https://api.openai.com/";
  
    //构造函数,获取Access Token
    public function __construct($apikey = NULL)
    {
        $this->apikey = $apikey;
    }

    //文字完成 上下文
    public function chat_completions_context($messages)
    {
        $field = array(
            "model"=>"gpt-3.5-turbo",
            // "temperature" => 0,
            // "stream" => true,
            "messages"=>$messages,
        );
        $url = self::ROOT_URL."v1/chat/completions";
        
        $response = $this->http_request($url, json_encode($field));
        $result = json_decode($response, true);
        return trim($result["choices"][0]["message"]["content"]);
    }

	//图片完成
    public function images_generations($prompt)
    {
        $field = array("prompt"=>$prompt,
                       "n"=>1,
                       "size"=>"256x256",
                      );
        $url = self::ROOT_URL."v1/images/generations";
        $response = $this->http_request($url, json_encode($field));
        $result = json_decode($response, true);
        return trim($result["data"][0]["url"]);
    }


    //HTTP请求(支持HTTP/HTTPS,支持GET/POST)
    protected function http_request($url, $data = null)
    {
        $headers = array(
            "Content-Type: application/json",
            "Authorization: Bearer " . $this->apikey
        );
        var_dump($url);
        var_dump($headers);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;

    }

}

 

 

二、调用方法

文本完成模型ChatGPT的调用方法如下:

$chat = new class_openai($apikey = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

$prompt = "人生很痛苦,怎么办";
$messages = array(array('role' => "system", 'content' =>"你是专业的心理师"),
                  array('role' => "user", 'content' =>$prompt));
$result = $chat->chat_completions_context($messages);

图片生成模型DALL·E的调用方式如下

$chat = new class_openai($apikey = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

$prompt = "美女";
$result1 = $chat->images_generations($prompt);

 

三、效果展示

结合钉钉机器人的对接方法,可以将上述接口对接到钉钉中,详情看 钉钉群机器人接入ChatGPT

以下是聊天和图片生成的效果图

 

 

标签:ch,setopt,url,API,OpenAI,ChatGPT,curl,CURLOPT
From: https://www.cnblogs.com/botai/p/php-sdk-openai.html

相关文章

  • torch.min()----chatgpt
    torch.min()isaPyTorchfunctionthatcomputestheminimumvalueofagiveninputtensoralongaspecifieddimension.Thetorch.min()functiontakestwoarguments:input:theinputtensortobereduceddim:thedimensionalongwhichtofindtheminimumvalu......
  • 史上最简 冰橙GPT前端开源 单页面 免编译 chatGPT3 对话页
    下载地址:https://gitee.com/zyhd/bingChengGPT 预览效果 冰橙GPT前端开源单页面免编译chatGPT3对话页对接冰橙GPT的API免安装本地可直接运行index.html即可已经将所有需要JS及CSS都采用公有CDN使用说明项目只有单个文件:index.html在index.html可在文件里修改JS区......
  • chatgpt: 在ts中如何声明一个全局类型
    在TypeScript中声明全局类型可以使用declareglobal关键字,使得在应用的任何地方都能够使用该类型。例如,如果需要在TypeScript中声明一个全局的foo变量,可以使用以下代码:declareglobal{varfoo:string;}上述代码中的declareglobal关键字表示声明一个全局类型,......
  • 更优雅的OrientDB Java API
    OrientDBAPIv1.0.0(OrientDB3.x)GiteeOrientDB介绍OrientDB是一个开源的NoSQL数据库管理系统,同时也是一款高性能的图数据库,支持ACID事务以及原子操作。官网图数据库介绍图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。图概念对于图数......
  • asp.net webapi2.0文件上传
    [Route("api/uploadFile")]publicReturnMessagePostFile(stringsaveDirName){HttpRequesthttpRequest=HttpContext.Current......
  • fastapi_mydemo
    E:\song3\agv_backend_demo\gunicorn.conf.py#监听内网端口bind='0.0.0.0:8001'#工作目录chdir='/fsm/backend/app'#并行工作进程数workers=4#指定每......
  • 如何用 SAP Commerce Cloud CMS API 批量返回多个 CMS Component 数据
    使用HTTPpost:URI:https://{{host}}/occ/v2/{{storefront}}/cms/components负载的例子:{"idList":["{{componentId1}}","{{componentId2}}",......
  • 百度普通收录API提交token推送在线版+随机URL生成+抓取内页URL工具
    普通收录:百度站长平台官方给出的使用说明如下1、普通收录工具可以向百度搜索主动推送资源,缩短爬虫发现网站链接的时间,不保证收录和展现效果。2、API提交和手动提交共享配额......
  • SAP ABAP MIME Repository 和 API 介绍
    本教程之前介绍过在SAPABAP系统创建数据库表的步骤:14.如何创建最简单的ABAP数据库表,以及编码从数据库表中读取数据(上)15.如何创建最简单的ABAP数据库表,以......
  • 早期VC Notion Capital第二轮募资1亿美元
    风险投资初创公司NotionCapital最新宣布第二轮募集资金达惊人的1亿美金,到目前为止,对于早期VC来说,这算是欧洲金额最大的一次募资。NotionCapital位于英国伦敦,公司关注英国......