Alexander Mirvis

OpenAI 食谱

超越 ChatGPT:使用 OpenAI API 可以构建的秘密且出人意料的强大功能

大多数人想到 OpenAI API 时,会想象一个文本框:有人输入问题,人工智能返回答案。从技术上说这没错,但这几乎没有触及 API 真正能做的事情。

我在 AlexanderMirvis.com 和 BrooklynNotaryNinjas.com 上以不同的方式使用 OpenAI。我不把人工智能当成网站角落里一个独立的聊天机器人,而是可以让它成为实际软件的一部分。OpenAI 可以在网页发布前检查网页、生成元数据、分析上传的文档、协助进行医学和法律研究、驱动客户服务对话、自动化重复性工作、监控服务器、分析网络安全日志、转录电话、生成语音回复、搜索私有文档集合,并通过受控函数与我的应用程序的其他部分通信。

真正的关键在于理解:OpenAI API 不必成为应用程序本身。它可以成为应用程序内部的智能。

传统的 PHP 应用程序可能包含如下逻辑:

if ($documentType === 'affidavit') {
    // Do something
}

启用人工智能的应用程序可以走得更远。我可以向 OpenAI 提供一份上传的文档,并要求它识别文档类型、提取重要日期、识别涉及的人员、总结发生的事情、找出缺失的信息,然后将所有内容作为 PHP 可以处理的结构化数据返回。

这使 OpenAI 从文本生成器变成了更接近智能软件组件的东西。

构建一个中央 OpenAI 函数

对于 PHP 应用程序,我更喜欢使用一个与 OpenAI API 通信的中央服务器端函数。这样,网站的其他部分在需要人工智能时都可以调用该函数。

API 密钥应始终保留在服务器上。绝不能将其放在发送到访客浏览器的 JavaScript 中。

<?php

function openaiResponse(array $payload): array
{
    $apiKey = getenv('OPENAI_API_KEY');

    if (!$apiKey) {
        throw new RuntimeException('OPENAI_API_KEY is not configured.');
    }

    $ch = curl_init('https://api.openai.com/v1/responses');

    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer ' . $apiKey,
            'Content-Type: application/json'
        ],
        CURLOPT_POSTFIELDS => json_encode($payload),
        CURLOPT_TIMEOUT => 120
    ]);

    $raw = curl_exec($ch);

    if ($raw === false) {
        throw new RuntimeException(curl_error($ch));
    }

    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    $data = json_decode($raw, true);

    if ($status >= 400) {
        throw new RuntimeException(
            $data['error']['message'] ?? 'OpenAI request failed.'
        );
    }

    return $data;
}

基本请求可以这样编写:

$response = openaiResponse([
    'model' => 'gpt-5',
    'input' => 'Explain what a New York notarial acknowledgment is.'
]);

echo $response['output'][0]['content'][0]['text'] ?? '';

具体模型可以根据任务、期望的速度、推理要求和成本进行更改。重要的架构决策是,所有请求都通过我的服务器完成。浏览器与我的 PHP 应用程序通信,由我的应用程序决定允许执行的操作,然后服务器才与 OpenAI 通信。

这样,我就能控制身份验证、速率限制、安全性、日志记录、权限、计费,以及模型究竟被允许访问哪些信息。

使用 OpenAI 生成标题、元数据并分析每个页面

AlexanderMirvis.com 上最有用的 OpenAI 集成之一是自动进行内容和 SEO 分析。每次发布内容时,我不必再手动编写标题标签、元描述、关键词列表和搜索描述,OpenAI 可以检查实际文章并自动提出这些内容。

关键在于,我并不一定希望 OpenAI 以对话方式回答我。我希望我的 CMS 能够接收可直接存储到数据库中的数据。

例如,我可能希望得到如下所示的响应:

{
    "title": "建议的页面标题",
    "meta_description": "建议的描述",
    "keywords": [
        "关键词一",
        "关键词二"
    ],
    "seo_score": 84,
    "problems": [
        "元描述过于含糊"
    ],
    "recommendations": [
        "添加更有力的引言段落"
    ]
}