如何让PHP与ChatGPT友好相处:逐步集成API

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么PHP开发者需要ChatGPT?

\n\n

想象一下:您正在用PHP编写一个网站,突然发现您的用户缺少一个“智能”助手。不是一个只有预设答案的简单聊天,而是一个真正的人工智能,能够编写代码、翻译文本、生成创意,或者只是进行有意义的对话。听起来像科幻小说?其实不然。

\n\n

如今,集成ChatGPT API到PHP并不是什么高深技术,而是任何熟悉该语言基础的开发者都能掌握的常规任务。我将向您证明这一点。

\n\n

在本文中,我们不仅仅是复制文档中的几行代码。我们将深入探讨如何正确发送请求、处理响应、管理对话上下文,并且不让服务器“崩溃”。我们开始吧!

\n\n

开始之前我们需要什么?

\n\n

在编写代码之前,让我们确保您已具备所有必要条件:

\n\n
    \n
  • PHP 8.0+ — 在较旧版本上,cURL和JSON可能会出现问题。
  • \n
  • cURL扩展 — 在php.ini中启用(通常默认已启用)。
  • \n
  • OpenAI API密钥 — 在platform.openai.com注册,进入API keys部分并创建一个新的密钥。
  • \n
  • 一点点耐心 — 有时API不会立即响应,尤其是在处理复杂请求时。
  • \n
\n\n

重要提示:请安全保管您的API密钥。切勿将其直接插入可能进入公共仓库的代码中。请使用.env文件或服务器环境变量。

\n\n

用PHP编写第一个ChatGPT请求

\n\n

我们从最简单的开始:发送一条消息并获取回复。这是所有后续API工作的基础。

\n\n
<?php\n// 配置\n$apiKey = 'sk-您的超级密钥';\n$url = 'https://api.openai.com/v1/chat/completions';\n\n// 请求数据\n$data = [\n    'model' => 'gpt-3.5-turbo', // 如果有权限,可以使用gpt-4\n    'messages' => [\n        [\n            'role' => 'user',\n            'content' => '用中文讲一个关于程序员的笑话'\n        ]\n    ],\n    'temperature' => 0.7, // 值越高,回答越有创意\n    'max_tokens' => 500   // 回答的最大长度\n];\n\n// 初始化cURL\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_POST, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'Content-Type: application/json',\n    'Authorization: Bearer ' . $apiKey\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n\n// 发送请求\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n// 处理响应\nif ($httpCode === 200) {\n    $result = json_decode($response, true);\n    $reply = $result['choices'][0]['message']['content'];\n    echo "ChatGPT说: " . $reply;\n} else {\n    echo "错误!HTTP代码: " . $httpCode . "<br>";\n    echo "服务器响应: " . $response;\n}\n?>
\n\n

运行了吗?恭喜您,您刚刚完成了第一次ChatGPT API到PHP的集成!如果一切正确,您将看到神经网络讲的一个有趣笑话。

\n\n

逐行分析代码

\n\n

让我们看看这里发生了什么,以便您可以轻松地将此代码适应到自己的任务中。

\n\n

请求结构

\n\n

OpenAI API期望我们提供一个包含几个必填字段的JSON:

\n\n
    \n
  • model — 哪个模型将回答。gpt-3.5-turbo是大多数任务的最佳选择:快速且便宜。gpt-4更智能,但更贵且更慢。
  • \n
  • messages — 消息数组。每条消息都有role(system, user, assistant)和content(文本)。
  • \n
  • temp

博客

书籍推荐