怎么把OpenAI接入CMS文章系统

最近GPT挺火的,想着怎么把OpenAI的接口接入PbootCMS系统,一个小尝试,仅供参考,,

1,先在文章页面写一个请求表单

    <div class="layui-form-item">
        <label class="layui-form-label">主题</label>
        <div class="layui-input-block">
            <input type="text" id="topic" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">关键字</label>
        <div class="layui-input-block">
            <input type="text" id="keywords" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">文章字数</label>
        <div class="layui-input-inline">
            <input type="number" id="length" class="layui-input" min="50" max="2000" value="500">
        </div>
        <div class="layui-form-mid layui-word-aux">(50-2000之间的整数)</div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" type="button" id="openai-btn">生成文章</button>
        </div>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">文章内容</label>
        <div class="layui-input-block">
            <textarea readonly class="layui-textarea" id="openai-content"></textarea>
        </div>
    </div>

2,js

$(document).ready(function () {
    $("#openai-btn").click(function () {
        let topic = $("#topic").val();
        let keywords = $("#keywords").val();
        let length = $("#length").val();

        //在这里添加您的OpenAI API密钥
        let openaiKey = '填写秘钥';

        if (topic === "" || keywords === "") {
            alert("请输入主题和关键字");
            return;
        }

        let requestBody = {
            "topic": topic,
            "keywords": keywords,
            "length": length
        };

        $.ajax({
            type: "POST",
            url: "这里写请求路径...",
            data: JSON.stringify(requestBody),
            contentType: "application/json;charset=utf-8",
            headers: {
                "Authorization": "Bearer " + openaiKey,
            },
            success: function (response) {
                if ("generated_text" in response) {
                    $("#openai-content").val(response.generated_text);
                } else if ("error" in response) {
                    alert("生成文章时出错:" + response.error);
                } else {
                    alert("未知错误,请联系管理员");
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert("生成文章时出错:" + errorThrown);
            }
        });
    });
});

3,PHP文件

<?php

function generate_article($prompt, $openai_key, $length) {
    $headers = [
        "Content-Type: application/json",
        "Authorization: Bearer " . $openai_key,
    ];
   $data = [
   "prompt" => "The topic is \"CAR RACING\". Write an article about car racing.",
   "temperature" => 0.7,
   "max_tokens" => 200,
   "top_p" => 1,
   "frequency_penalty" => 0,
   "presence_penalty" => 0
];


    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/engines/davinci-codex/completions");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $errorMsg = curl_error($ch);
        error_log("OpenAI API请求失败: HTTP $httpCode, 错误信息: $errorMsg");
        return false;
    }
    curl_close($ch);

    $response = json_decode($response);
    if (isset($response->choices) && !empty($response->choices)) {
        return $response->choices[0]->text;
    } else {
        error_log("OpenAI API请求失败: 无法解析API响应");
        return false;
    }
}

if (!isset($_POST["topic"]) || !isset($_POST["keywords"]) || !isset($_POST["length"])) {
    header("HTTP/1.1 400 Bad Request");
    exit();
}

$prompt = "The topic is \"" . $_POST["topic"] . "\". Write an article about " . $_POST["keywords"] . ".";
$openai_key = $_SERVER["HTTP_AUTHORIZATION"] ?? "";
$length = $_POST["length"];

$generated_text = generate_article($prompt, $openai_key, $length);
if ($generated_text) {
    $response = ["generated_text" => $generated_text];
} else {
    $response = ["error" => "无法生成文章,请检查您的OpenAI API密钥或请求参数"];
}

header("Content-Type: application/json");
echo json_encode($response);

?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值