openAI api class 类

文章介绍了如何在PHP中利用OpenAIAPI,特别是GPT-3.5-turbo模型进行文本生成和聊天场景下的自动回复,展示了通过构造HTTP请求发送数据并解析响应的基本过程。
摘要由CSDN通过智能技术生成

实用,我会陆续更新干货,不废话的

<?php
require 'openai.class.php';
$apikey = "sk-proj-FXA6bazYk9D4ZsrrTPPVT3BlbkFJj6aJBZIAXYdAiFuGL13c";
$chat = new class_openai($apikey);
$prompt = "人生很痛苦,怎么办";
$messages = array(
    array('role' => "system", 'content' =>"你是专业的心理师"),
	array('role' => "user", 'content' =>$prompt)
);
$result = $chat->chat_completions_context($messages);
echo $result;
?>
<?php
class class_openai{
    //构造函数,获取Access Token
    function __construct($apikey) {
		$this->root_url = "https://api.openai.com/";
		$this->apikey = $apikey;
    }
    //文字完成 上下文
    function chat_completions_context($messages){
		$field = array(
		    "model"=>"gpt-3.5-turbo",
			"temperature"=> 0.5,
			"messages"=>$messages
		);
		$url = $this->root_url."v1/chat/completions";
		$response = $this->sendPostRequest($url, json_encode($field));
		$result = json_decode($response, true);
		return trim($result["choices"][0]["message"]["content"]);
    }
    //图片完成
    function images_generations($prompt){
		$field = array(
		    "prompt"=>$prompt,
		    "n"=>1,
			"size"=>"256x256",
		);
		$url = $this->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)
    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);
		}
		$output = curl_exec($ch);
		// 处理响应
		if (curl_errno($ch)) {
			echo 'cURL Error: ' . curl_error($ch);
		}
		curl_close($ch);
		return $output;
    }
	function sendPostRequest($url,$data = null) {

		//代理IP
		$UserAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.78 Safari/537.36';
		$proxyIP = '156.246.82.109';
		$proxyPort = '6505';
		$proxyUsername = "80780991";
		$proxyPassword = "8J9mgx49";
		
		$headers = array(
			"Content-Type: application/json",
			"Authorization: Bearer " . $this->apikey
		);
		
		$curl = curl_init();
		curl_setopt_array($curl, array(
		    CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 0,
			CURLOPT_FOLLOWLOCATION => true,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => "POST",
			CURLOPT_POSTFIELDS => $data,
			CURLOPT_HTTPHEADER => $headers,
			
			CURLOPT_SSL_VERIFYPEER => FALSE,
			CURLOPT_SSL_VERIFYHOST => FALSE,
			CURLOPT_USERAGENT => $UserAgent,
			CURLOPT_HTTPPROXYTUNNEL => true,
			CURLOPT_PROXY => $proxyIP,
			CURLOPT_PROXYPORT => $proxyPort,
			//CURLOPT_PROXYUSERPWD => $proxyUsername.':'.$proxyPassword,
			CURLOPT_PROXYUSERPWD => "[".$proxyUsername."]:[".$$proxyPassword."]",
			CURLOPT_PROXYAUTH => CURLAUTH_BASIC,
			CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
			
		));
		$response = curl_exec($curl);
		if (curl_errno($curl)) {
			echo 'cURL Error: ' . curl_error($curl);
		}
		curl_close($curl);
		return $response;
	}
	
}
?>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

net1193379199

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值