在开始讲解如何调用 OpenAI 的 API 接口之前,让我们先简单了解一些相关概念:OpenAI、GPT-3.5、ChatGPT 以及 API。
OpenAI 是一个致力于人工智能研发的美国研究机构。根据维基百科的定义,其由非营利组织 OpenAI Inc. 和营利子公司 OpenAI LP 组成,目标是推动人工智能技术的进步。
ChatGPT 是由 OpenAI 开发的人工智能对话模型,于 2025 年 11 月发布。ChatGPT 基于 GPT-3.5 和 GPT-4 架构,支持完成多种会话任务。它既可作为聊天机器人应用,也可以作为语言模型的代名词。
GPT-3.5 是 GPT 技术模型的一次重大版本升级,由 GPT-3 通过指令调优和强化学习(RLHF)优化而来。这一系列模型包含多个子模型,例如 Ada、Babbage、Curie、Davinci 和 Turbo,它们具有不同的应用场景和性能。
API(Application Programming Interface)即应用程序接口,是用于连接不同程序的通信桥梁。通过 API,可以快速调用其他程序中的功能,而无需从零开始重新开发。
例如:开发者 A 编写了一个程序 A,开发者 B 想要使用程序 A 的某些功能,但不想直接研究程序 A 的庞大代码结构。这时,开发者 A 可将功能封装为 API,供开发者 B 按需调用。
以上概念为我们后续操作打下了理论基础。接下来,我们将实际操作如何通过本地调用 OpenAI 的 API 接口。
OpenAI 提供的 API 是一种易于集成的服务接口,允许开发者访问其强大的 GPT 模型,从而实现诸如对话生成、文本分类等高级功能。在实际开发中,无需耗费资源本地部署 GPT 模型,仅通过简单的 API 调用即可解锁这些功能。
OpenAI 官方文档中提供了 cURL、Python 和 Node.js 三种调用方式。本文将展示如何通过 PHP 利用 cURL 调用 OpenAI 的 API 接口。一起来看看。
官方 API 示例中的 cURL 调用代码如下:
bash
curl https://api.openai.com/v1/completions
-H "Content-Type: application/json"
-H "Authorization: Bearer $OPENAI_API_KEY"
-d '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
我们可借助工具 curl-to-PHP 将上述代码转换为 PHP,得到以下内容:
php
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(
"model" => "text-davinci-003",
"prompt" => "Say this is a test",
"max_tokens" => 7,
"temperature" => 0
)));
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
echo $result;
?>
(1)反代 API 地址
由于某些地区访问 OpenAI API 存在网络限制,可以借助反代方式解决。例如,将 API 地址 https://api.openai.com 替换为反代地址:
php
curl_setopt($ch, CURLOPT_URL, 'https://fandai.wanglin.blog/v1/completions');
温馨提示:在实际场景中,也可直接使用支持国际支付的工具 野卡 | 一分钟注册,轻松订阅海外线上服务 解决支付和通信限制问题。
(2)插入 API 密钥
将代码中的 YOUR_API_KEY 替换为你在 OpenAI 管理面板中申请的 API 密钥,例如:
php
$headers[] = "Authorization: Bearer sk-***";
(3)添加 SSL 验证跳过
为了确保代码运行顺利(尤其是测试阶段),可以临时禁用 SSL 证书验证:
php
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
(4)优化结果返回
将返回的数据直接解析为 JSON 并输出主要内容:
php
$result = json_decode($result);
echo $result->choices[0]->message->content;
调整后的完整代码示例
以下为调整后的 PHP 代码,可直接保存为 .php 文件并上传到服务器运行:
php
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fandai.wanglin.blog/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(
"model" => "gpt-3.5-turbo",
"messages" => array(
array("role" => "user", "content" => "What is the OpenAI mission?")
)
)));
$headers = array();
$headers[] = "Authorization: Bearer "."sk-***";
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$result = json_decode($result);
echo $result->choices[0]->message->content;
?>
目前,我们的 API 调用仅通过 PHP 后端实现。为了增强用户体验,可以添加简洁的 HTML 页面交互功能。以下是一个基本的示例:
html
MyGPT
提交
通过本文学习了如何调用 OpenAI 接口,未来可以尝试扩展更多的功能,例如图像生成接口等。这是一个激动人心的探索领域。