在当前人工智能技术飞速发展的背景下,将智能对话功能集成到网站后台管理系统中,可以极大提升用户体验和操作效率。FastAdmin作为一款基于ThinkPHP5的极速后台开发框架,以其简洁高效的特点深受开发者喜爱。本文将详细介绍如何将ChatGPT API对接到FastAdmin框架中,实现智能问答功能。

准备工作

在开始对接之前,我们需要准备以下内容:

  1. 一个有效的OpenAI账号,并获取API Key
  2. 已安装好的FastAdmin框架(建议使用最新版本)
  3. 基本的PHP编程知识
  4. 服务器需要支持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);
            }
        }
    });
}

第八步:测试功能

完成以上步骤后,我们可以通过以下方式测试功能:

  1. 在前端界面输入问题并提交
  2. 使用Postman等工具直接调用API接口
  3. 检查返回结果是否符合预期

注意事项

  1. API调用涉及网络请求,建议添加超时和重试机制
  2. 注意API调用频率限制,避免过度调用
  3. 对用户输入进行安全过滤,防止注入攻击
  4. 考虑添加对话上下文管理,提升交互体验
  5. 注意API成本控制,特别是对于公开访问的应用

总结

通过以上八个步骤,我们成功将ChatGPT API集成到了FastAdmin框架中。这种集成不仅丰富了FastAdmin的功能,也为用户提供了智能化的交互体验。开发者可以根据实际需求,进一步扩展此功能,例如添加多轮对话、上下文记忆、语音输入输出等高级特性。

这种集成方式展示了现代AI技术与传统Web框架结合的巨大潜力,为开发智能应用提供了新的思路和可能性。随着AI技术的不断发展,类似的集成将会变得越来越普遍,成为提升产品竞争力的重要手段。

后台体验地址:https://demo.gzybo.net/demo.php

移动端体验地址:https://demo.gzybo.net/wx

账号:demo

密码:123456



联系我们

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部