如何在PHP中对接openAI接口,PHP创建AI会话思路以及代码讲解

这篇具有很好参考价值的文章主要介绍了如何在PHP中对接openAI接口,PHP创建AI会话思路以及代码讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、 PHP调用OpenAI API的方法

1.如何注册 openAI 以及使用

https://platform.openai.com/account/api-keys 在这个地址进行注册,但是需要翻墙,可自己查找国内的试用地址。就不多赘述…

2.php 调用接口 (symfony框架)

php端代码:

思路:前端通过一个图标入口,点击后 发送请求,创建一个会话(也就是聊天室),并且把创建的这个会话 入库。并且后端返回一个入库生成的uuid,和默认的消息会话返回给前端,前端暂时存放在 input 隐藏域中,以备后续使用。此时完成一个会话的连接和创建。
ps:前端发送请求前,需要做一些校验,$this->verifySend(); 验证是否登录,和发送请求的频率
直接上代码如下:文章来源地址https://www.toymoban.com/news/detail-801050.html

<?php
namespace LdWxappPlugin\Api\Resource\Chatapi;
use ApiBundle\Api\ApiRequest;
use ApiBundle\Api\Resource\AbstractResource;
use ApiBundle\Api\Annotation\ApiConf;
use Ramsey\Uuid\Uuid;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;

class Chatapi extends AbstractResource
{
   
    public function add(ApiRequest $request): array
    {
   
        $uuid = $request->request->get('conversationId');
        // 没有 uuid 就要新建会话,入库,有uuid 就直接打开
        // 这里在页面上做了一个 显示隐藏效果 不刷新页面的情况下,关闭侧边窗口,元素移除屏幕
        // 再次打开,有uuid ,直接让元素 移回原来的尺寸 'right','-1000px' 'right','0px'
        if(empty($uuid)){
   
        	// 这里用它来区分是 右侧侧边栏 还是 独立网页版
            $display = $request->request->get('display',0);
            // 入库的会话名字 从侧边栏进来的是 默认对话,从网页进来的是 新建对话
            $conversationName = $request->request->get('conversationName','默认对话');
            // 课程 ID 和 课程类型 这里可根据自己的需求传递不同参数,这个课程ID 是为了跟踪 根据哪一个课程,点击聊天窗口的
            $sourceId = $request->request->get('sourceId');
            $sourceType = $request->request->get('sourceType');
    
            if (empty($sourceId) || empty($sourceType)){
   
                throw new BadRequestHttpException('sourceId或sourceType不能为空');
            }
            $currentUser = $this->getCurrentUser();
            // 生成 uuid ,uuid 是后端生成好,返回给前端,前端卸载 隐藏域里面,每次请求,用隐藏域里面的去做判断。
            $random = 'lingdai'.microtime(true).rand(1000,9999);
            $conversationId = Uuid::uuid5(Uuid::NAMESPACE_OID,$random)->toString();
            $goods = $this->findGoodsByTargetIdAndType($sourceId,$sourceType);
            $conversationData = [
                'conversationId' => $conversationId,
                'conversationName' => $conversationName,
                'userId' => $currentUser->getId(),
                'display' => $display,
                'goodsId' => $goods['id'],
                'createdTime' => time()
            ]; 
            $insertResult = $this->getChatApiService()->createConversation($conversationData);
            if ($insertResult){
   
            // role : 返回给前端的默认对话 可根据情况自行设置
                return [
                    'status'=> 'success',
                    'message'=> '创建成功',
                    'code'=> 1,
                    'data'=> [
                        'conversationId'=> $conversationId,
                        'conversationName'=> $conversationName,
                        'aiDocId'=>$goods['aiDocId'],
                        'id'=>$insertResult['id'],
                        'display'=>$insertResult['display'],
                        'goodsId'=>$insertResult['goodsId'],
                        'role' => [
                           [
                            'role' => 'AI',
                            'content' => "Hi:你好,哈哈哈哈哈".'</br>'.'123123123'
                           ]
                        ],
                    ]
                ];
            } else {
   
                return ['status'=> 'fail','message'=> '创建失败','code'=> 0,'data'=> []];
            }
        }else{
   
            return [];
        }
    }

// 根据 传过来的 课程ID 和 课程type 查询数据库,查到对应的商品ID 数据
    public function findGoodsByTargetIdAndType($sourceId,$sourceType)
    {
   
        if ($sourceType == "goods"){
   
            $goods = $this->getGoodsService()->getGoods($sourceId);
            return $goods;
        }
        $product = $this->getProductService()->getProductByTargetIdAndType($sourceId, $sourceType);

        $goods = $this->getGoodsService()->getGoodsByProductId($product['id']);
        return $goods;
    }
// 新建对话的 入库完成!


//http://www.lingdaipc.win/lddev.php/chat/pcAI/index?chatId=684&uuid=3b9aad06-356e-5534-a8bf-4a98a95a7497&goodsId=3021
// 独立的 PC 网页版 查询方法 根据上面 url中 传递的参数 ,查询对应的 chatId的 的对话
    public function search(ApiRequest $request)
    {
   
        // 判断 ID 是否存在,不存在 是独立出来的窗口 存在是跳转过来的
        $params = $request->query->all();
        $conditions = $this->filterParams($params);
        $conditions['display'] = 1;
        $currentUser = $this->getCurrentUser();
        $conditions['userIds'] = $currentUser['id'];
        list($offset, $limit) = $this->getOffsetAndLimit($request);
        $conversationTotal = $this->getChatApiService()->count($conditions);
        $searchResult = $this->getChatApiService()

到了这里,关于如何在PHP中对接openAI接口,PHP创建AI会话思路以及代码讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用SSE技术调用OPENAI接口并实现流式输出,用PHP语言实现

    作为AI语言模型服务提供商,OpenAI 提供了一系列的 API 接口,其中大部分需要通过 HTTP 请求访问。对于大量数据的请求,传统的同步请求会导致网络响应变慢,无法满足实时数据处理和分析的需求。因此,为了优化这些接口的调用效率,我们可以利用 SSE(Server Sent Events) 技术来

    2024年02月11日
    浏览(47)
  • php如何对接伪api

    在了解伪原创api的各种应用形态之后,我们继续探讨智能写作背后的核心技术。需要说明的是,智能写作和自然语言生成、自然语言理解、知识图谱、多模算法等各类人工智能算法都有紧密的关联,在百度的智能写作实践中,常根据实际需求将多个相关算法集成为具体的解决

    2024年02月12日
    浏览(51)
  • wonder trader cta仿真以及对接行情交易接口

    WonderTrader是一个基于 C++ 核心模块的,适应全市场全品种交易的,高效率、高可用的开源量化交易开发框架。     面向于专业机构的整体架构     数十亿级的实盘管理规模     从数据落地清洗、到回测分析、再到实盘交易、运营调度,量化交易所有环节全覆盖。   本文简

    2024年02月06日
    浏览(76)
  • AI绘画,Midjourney API 接口对接和使用

    项目背景 众所周知,Midjourney并没有提供任何的Api服务,但是基于Midjourney目前的行业龙头位置,很多企业以及个人会有相关的需求。TTApi平台基于Midjourney现有功能整理出一套完整的可集成性高的服务,如果你有类似的需求,那么恭喜你找到了正确的使用方式。 新用户注册免费

    2024年04月15日
    浏览(52)
  • api接口如何有效对接

    在平时工作中,经常会遇到的一种场景是:A公司要对接B公司的API方法,这时,A公司就要阅读B公司的接口文档,从接口文档中找到自己需要对接的API,并根据接口文档的要求,完成编码工作,最终完成对接工作。 本篇是站在A公司的角度,去对接B公司API接口的实战。 一般情

    2024年02月16日
    浏览(47)
  • PHP解析带BOM头的JSON数据,对接他人接口的时候,使用json_decode(),返回null的问题与解决方法

    在php开发中会遇到和他人对接接口,对方使用json传输数据,使用json_decode()函数却无法将json数据转换为数组。 先看封装的代码 这种对接post接口的封装方法一般是没有问题的,但是我们打印$res的时候,会发现只会返回NULL。而打印$response的时候,是可以返回json字符串的。我们

    2024年02月06日
    浏览(48)
  • Python编程实现百度AI开放平台的接口对接方法,详解和实践指南

    Python编程实现百度AI开放平台的接口对接方法,详解和实践指南 引言 百度AI开放平台提供了丰富的人工智能接口,包括语音识别、图像识别、自然语言处理等功能。本文将通过Python编程,详解如何对接百度AI开放平台的接口,并提供实际代码示例。 准备工作 在开始之前,我们

    2024年02月13日
    浏览(46)
  • 对接支付通道如何收费?支付接口收费标准

    支付接口收费标准是怎样的 反映到平台方来说,就是它的盈利模式,是维持企业生存,到发展壮大的根本保障。目前第三方支付平台费用有:手续费、广告费、服务费、沉淀资金的利息收入四种。 1、手续费 手续费是第三方支付平台费用的最传统的盈利模式之一。即第三方支

    2024年02月16日
    浏览(49)
  • ChatGPT:2. 使用OpenAI创建自己的AI网站:1. 初探API

    如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢,请海涵🥳。 😼1. OpenAI API的首页:https://platform.openai.com/ 😸2. 查看自己

    2024年02月08日
    浏览(42)
  • 如何解决本地开发调用OpenAI接口的问题

    1.简单粗暴,懂的都懂 1.注册Cloudflare,开通AI网关功能(Beta功能,目前免费) 2.使用AI网关地址替换官方接口地址,即可本地调用 3.在AI网关管理界面,还可以看到接口调用、tokens消耗、以及日志等情况,非常好用 1.查看Nginx版本和是否已配置stream模块(Nginx版本需要在1.9.0以上,如

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包