在当前人工智能技术飞速发展的背景下,将智能对话功能集成到网站后台管理系统中,可以极大提升用户体验和操作效率。FastAdmin作为一款基于ThinkPHP5的极速后台开发框架,以其简洁高效的特点深受开发者喜爱。本文将详细介绍如何将ChatGPT API对接到FastAdmin框架中,实现智能问答功能。
准备工作
在开始对接之前,我们需要准备以下内容:
- 一个有效的OpenAI账号,并获取API Key
- 已安装好的FastAdmin框架(建议使用最新版本)
- 基本的PHP编程知识
- 服务器需要支持cURL扩展
第一步:获取ChatGPT API密钥
登录OpenAI官网,进入API管理页面,生成新的API密钥。请妥善保管此密钥,后续调用API时需要用到。
第二步:在FastAdmin中创建模块
我们可以在FastAdmin中创建一个新的模块来处理ChatGPT相关功能:
// 创建模块目录
mkdir application/chat
// 创建控制器
touch application/chat/controller/Chatapi.php第三步:编写API调用类
在应用目录下创建服务类文件 application/common/service/ChatGPTService.php:
<?php
namespace app\common\service;
use think\Exception;
class ChatGPTService
{
private $apiKey;
private $apiUrl = 'https://api.openai.com/v1/chat/completions';
public function __construct()
{
// 从配置中获取API密钥
$this->apiKey = config('chatgpt.api_key');
}
public function ask($question, $maxTokens = 150)
{
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $this->apiKey
];
$data = [
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'user', 'content' => $question]
],
'max_tokens' => $maxTokens,
'temperature' => 0.7
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
throw new Exception('Curl error: ' . curl_error($ch));
}
curl_close($ch);
if ($httpCode != 200) {
throw new Exception('API request failed with code: ' . $httpCode);
}
$result = json_decode($response, true);
return $result['choices'][0]['message']['content'] ?? '抱歉,我没有理解您的问题。';
}
}第四步:创建控制器
编写ChatAPI控制器 application/chat/controller/Chatapi.php:
<?php
namespace app\chat\controller;
use app\common\controller\Api;
use app\common\service\ChatGPTService;
class Chatapi extends Api
{
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
public function ask()
{
$question = $this->request->post('question');
$maxTokens = $this->request->post('max_tokens', 150);
if (empty($question)) {
$this->error('问题不能为空');
}
try {
$chatGPTService = new ChatGPTService();
$answer = $chatGPTService->ask($question, $maxTokens);
$this->success('请求成功', null, ['answer' => $answer]);
} catch (\Exception $e) {
$this->error('请求失败: ' . $e->getMessage());
}
}
}第五步:配置API路由
在 application/route.php 中添加路由规则:
use think\Route;
Route::post('chat/ask', 'chat/chatapi/ask');第六步:添加配置文件
创建配置文件 application/extra/chatgpt.php:
<?php
return [
'api_key' => '你的OpenAI API密钥'
];第七步:前端界面集成
在FastAdmin后台的相应页面中添加ChatGPT交互界面:
// 在需要的JS文件中添加以下代码
$('#chatgpt-question').keypress(function(e) {
if (e.which == 13) {
askChatGPT();
}
});
function askChatGPT() {
var question = $('#chatgpt-question').val();
if (!question) {
Toastr.error('请输入问题');
return;
}
$.ajax({
url: '/chat/ask',
type: 'post',
data: {
question: question
},
success: function(res) {
if (res.code == 1) {
$('#chatgpt-answer').html(res.data.answer);
} else {
Toastr.error(res.msg);
}
}
});
}第八步:测试功能
完成以上步骤后,我们可以通过以下方式测试功能:
- 在前端界面输入问题并提交
- 使用Postman等工具直接调用API接口
- 检查返回结果是否符合预期
注意事项
- API调用涉及网络请求,建议添加超时和重试机制
- 注意API调用频率限制,避免过度调用
- 对用户输入进行安全过滤,防止注入攻击
- 考虑添加对话上下文管理,提升交互体验
- 注意API成本控制,特别是对于公开访问的应用
总结
通过以上八个步骤,我们成功将ChatGPT API集成到了FastAdmin框架中。这种集成不仅丰富了FastAdmin的功能,也为用户提供了智能化的交互体验。开发者可以根据实际需求,进一步扩展此功能,例如添加多轮对话、上下文记忆、语音输入输出等高级特性。
这种集成方式展示了现代AI技术与传统Web框架结合的巨大潜力,为开发智能应用提供了新的思路和可能性。随着AI技术的不断发展,类似的集成将会变得越来越普遍,成为提升产品竞争力的重要手段。


后台体验地址:https://demo.gzybo.net/demo.php
移动端体验地址:https://demo.gzybo.net/wx
账号:demo
密码:123456
联系我们



发表评论 取消回复