ThinkPHP框架问答昔日整合openai 对旧数据进行整理 思路清晰

290 阅读1分钟

好的,以下是用ThinkPHP查询wenda_content表id小于500输出title的代码:

Copy Code
<?php
use think\Db;

$result = Db::table('wenda_content')
            ->where('id', '<', 500)
            ->column('title');
$title = implode(', ', $result);

将$title作为请求参数调用OpenAI API:

$url = 'https://api.openai.com/v1/chat/completions';

$data = array(
    'prompt' => '$title', // 用于生成AI回复的文本$title
    'max_tokens' => 50, // AI生成回复的最大长度
    'n' => 1, // 要生成的AI回复的数量
    'temperature' => 0.5, // 控制AI回复多样性和创意的温度,值越高表示生成的回复越不确定和多样化
    'frequency_penalty' => 0.5, // 通过惩罚过于频繁出现的词汇,来使AI生成更为丰富多样的回复
    'presence_penalty' => 0.5, // 通过惩罚不需要出现在回复中的词汇,来避免AI生成无关紧要的回复
    'stop' => '\n' // 当AI生成的回复中出现该停止符时,停止生成后续内容。
);

$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\nAuthorization: Bearer YOUR_API_KEY\r\n",
        'method'  => 'POST',
        'content' => json_encode($data),
    ),
);

$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);

输出返回结果的示例代码:

$response_text = json_encode($result, JSON_PRETTY_PRINT);
echo $response_text;

这将以JSON格式打印出API返回的完整响应内容,包括AI生成的回复等信息。您也可以根据需要从响应中提取特定的信息。

最后再将返回得到的数据保存到回复表里。 这样就可以把问答系统里的旧数据加上ChatGPT的回答,temperature数值一定要最低,不然旧要胡说八道了。

后面只要在发布问答的时候加入一些代码,就可以实现发布新提问后自动加入ChatGPT的回答。