前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenAI PHP异步客户端1.0发布,适用于workerman和webman

OpenAI PHP异步客户端1.0发布,适用于workerman和webman

作者头像
Tinywan
发布2024-01-31 12:47:46
2720
发布2024-01-31 12:47:46
举报
文章被收录于专栏:开源技术小栈开源技术小栈

OpenAI PHP 异步客户端1.0发布,适用于workerman和webman

安装

代码语言:javascript
复制
composer require webman/openai

流式聊天

代码语言:javascript
复制
<?php
namespace app\controller;
use support\Request;

use Webman\Openai\Chat;
use Workerman\Protocols\Http\Chunk;

class ChatController
{
    public function completions(Request $request)
    {
        $connection = $request->connection;
        $chat = new Chat(['apikey' => 'sk-xx', 'api' => 'https://api.openai.com']);
        $chat->completions(
            [
                'model' => 'gpt-3.5-turbo',
                'stream' => true,
                'messages' => [['role' => 'user', 'content' => 'hello']],
            ], [
            'stream' => function($data) use ($connection) {
                $connection->send(new Chunk(json_encode($data, JSON_UNESCAPED_UNICODE) . "\n"));
            },
            'complete' => function($result, $response) use ($connection) {
                if (isset($result['error'])) {
                    $connection->send(new Chunk(json_encode($result, JSON_UNESCAPED_UNICODE) . "\n"));
                }
                $connection->send(new Chunk(''));
            },
        ]);
        return response()->withHeaders([
            "Transfer-Encoding" => "chunked",
        ]);
    }
}

非流式聊天

代码语言:javascript
复制
<?php
namespace app\controller;
use support\Request;

use Webman\Openai\Chat;
use Workerman\Protocols\Http\Chunk;

class ChatController
{
    public function completions(Request $request)
    {
        $connection = $request->connection;
        $chat = new Chat(['apikey' => 'sk-xxx', 'api' => 'https://api.openai.com']);
        $chat->completions(
            [
                'model' => 'gpt-3.5-turbo',
                'messages' => [['role' => 'user', 'content' => 'hello']],
            ], [
            'complete' => function($result, $response) use ($connection) {
                $connection->send(new Chunk(json_encode($result, JSON_UNESCAPED_UNICODE) . "\n"));
                $connection->send(new Chunk(''));
            },
        ]);
        return response()->withHeaders([
            "Transfer-Encoding" => "chunked",
        ]);
    }
}

图像生成

代码语言:javascript
复制
<?php
namespace app\controller;
use support\Request;

use Webman\Openai\Image;
use Workerman\Protocols\Http\Chunk;

class ImageController
{
    public function generations(Request $request)
    {
        $connection = $request->connection;
        $image = new Image(['apikey' => 'sk-xxx', 'api' => 'https://api.openai.com']);
        $image->generations([
            'model' => 'dall-e-3',
            'prompt' => 'a dog',
            'n' => 1,
            'size' => "1024x1024"
        ], [
            'complete' => function($result) use ($connection) {
                $connection->send(new Chunk(json_encode($result)));
                $connection->send(new Chunk(''));
            }
        ]);
        return response()->withHeaders([
            "Content-Type" => "application/json",
            "Transfer-Encoding" => "chunked",
        ]);
    }

}

音频语音

代码语言:javascript
复制
<?php
namespace app\controller;
use support\Request;

use Webman\Openai\Audio;
use Workerman\Protocols\Http\Chunk;

class AudioController
{
    public function speech(Request $request)
    {
        $connection = $request->connection;
        $audio = new Audio(['apikey' => 'sk-xxx', 'api' => 'https://api.openai.com']);
        $audio->speech([
            'model' => 'tts-1',
            'input' => '你好,有什么可以帮您?',
            'voice' => 'echo'
        ], [
            'stream' => function($buffer) use ($connection) {
                $connection->send(new Chunk($buffer));
            },
            'complete' => function($result, $response) use ($connection) {
                $connection->send(new Chunk(''));
            }
        ]);
        return response()->withHeaders([
            "Content-Type" => "audio/mpeg",
            "Transfer-Encoding" => "chunked",
        ]);
    }
}

嵌入向量

代码语言:javascript
复制
<?php
namespace app\controller;
use support\Request;

use Webman\Openai\Embedding;
use Workerman\Protocols\Http\Chunk;

class EmbeddingController
{
    public function create(Request $request)
    {
        $connection = $request->connection;
        $embedding = new Embedding(['apikey' => 'sk-xxx', 'api' => 'https://api.openai.com']);
        $embedding->create([
            'model' => 'text-embedding-ada-002',
            'input' => 'Some words',
            'encodding_format' => 'float',
        ], [
            'complete' => function($result) use ($connection) {
                $connection->send(new Chunk(json_encode($result)));
                $connection->send(new Chunk(''));
            }
        ]);
        return response()->withHeaders([
            "Content-Type" => "application/json",
            "Transfer-Encoding" => "chunked",
        ]);
    }
}

微软openai

代码语言:javascript
复制
public function completions(Request $request)
{
    $connection = $request->connection;
    $chat = new Chat(['api' => 'https://xxx.openai.azure.com', 'apikey' => 'xxx', 'isAzure' => true]);
    $chat->completions(
        [
            'model' => 'gpt-3.5-turbo',
            'stream' => true,
            'messages' => [['role' => 'user', 'content' => 'hello']],
        ], [
        'stream' => function($data) use ($connection) {
            $connection->send(new Chunk(json_encode($data, JSON_UNESCAPED_UNICODE) . "\n"));
        },
        'complete' => function($result, $response) use ($connection) {
            if (isset($result['error'])) {
                $connection->send(new Chunk(json_encode($result, JSON_UNESCAPED_UNICODE) . "\n"));
            }
            $connection->send(new Chunk(''));
        },
    ]);
    return response()->withHeaders([
        "Transfer-Encoding" => "chunked",
    ]);
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 流式聊天
  • 非流式聊天
  • 图像生成
  • 音频语音
  • 嵌入向量
  • 微软openai
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档