sourceability / openai-client
PHP 8.0+ OpenAI API 客户端,包含完全类型化/文档化的请求+响应模型,支持 guzzle 和 symfony/http-client,以及异步/并行请求。
0.3.6
2023-06-13 20:50 UTC
Requires
- php: >8.0
- brick/money: ^0.8.0
- jane-php/open-api-runtime: ^7.0
- php-http/discovery: ^1.0
- php-http/httplug: ^2.0
- php-http/message: ^1.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.5
- guzzlehttp/psr7: ^2.4
- jane-php/open-api-3: ^7.4
- php-http/guzzle7-adapter: ^1.0
- php-http/logger-plugin: ^1.3
- phpunit/phpunit: ^10.0
- rector/rector: ^0.15.16
- slevomat/coding-standard: ^8.8
- symplify/easy-coding-standard: ^11.2
README
PHP 8.0+ OpenAI API 客户端,包含完全类型化/文档化的请求+响应模型,通过 HTTPPug 支持 guzzlehttp/guzzle
+ symfony/http-client
,以及异步/并行请求。
该客户端使用 openai 的 OpenAPI 和 jane-php 生成。
功能
- 请求模型是类型化的,并包含 OpenAPI 文档中的描述。
- 使用 HTTPPug 作为 HTTP 抽象层
- 异步/并行请求。
这是一个社区维护的非官方库。
安装
composer require sourceability/openai-client
入门指南
require __DIR__ . '/vendor/autoload.php'; use Sourceability\OpenAIClient\Client; use Sourceability\OpenAIClient\Generated\Model\CreateCompletionRequest; $apiClient = Client::create( apiKey: getenv('OPENAI_API_KEY') ); $requests = [ (new CreateCompletionRequest()) ->setModel('text-davinci-003') ->setTemperature(0) ->setMaxTokens(512) ->setPrompt('The jane php library is very useful because'), new CreateCompletionRequest( model: 'text-davinci-003', temperature: 0, maxTokens: 512, prompt: 'Symfony symfony symfony is like sourceability on a' ), ]; $completionResponses = $apiClient->createCompletions($requests); var_dump($completionResponses);
使用 /v1/chat/completions
与 ChatGPT 交互
<?php require __DIR__ . '/vendor/autoload.php'; use Sourceability\OpenAIClient\Client; use Sourceability\OpenAIClient\Generated\Model\ChatCompletionRequestMessage; use Sourceability\OpenAIClient\Generated\Model\CreateChatCompletionRequest; $apiClient = Client::create( apiKey: getenv('OPENAI_API_KEY') ); $requests = [ new CreateChatCompletionRequest( model: 'gpt-3.5-turbo', temperature: 0, messages: [ new ChatCompletionRequestMessage( role: 'user', content: 'The jane php library is very useful because' ) ], ), new CreateChatCompletionRequest( model: 'gpt-3.5-turbo', temperature: 0, messages: [ new ChatCompletionRequestMessage( role: 'user', content: 'Symfony symfony symfony is like sourceability on a' ) ], ), ]; $completionResponses = $apiClient->createChatCompletions($requests); var_dump($completionResponses);
成本计算器
您可以使用依赖于 brick/money 的 ResponseCostCalculator
来计算响应的成本
use Sourceability\OpenAIClient\Pricing\ResponseCostCalculator; $responseCostCalculator = new ResponseCostCalculator(); $responseCost = $responseCostCalculator->calculate($myCompletionResponse); var_dump([ 'total' => $responseCost->getTotal()->formatTo('en_US'), 'prompt' => $responseCost->getPrompt()->formatTo('en_US'), 'completion' => $responseCost->getCompletion()->formatTo('en_US'), ]); array(3) { ["total"]=> string(10) "$0.0001280" ["prompt"]=> string(10) "$0.0000980" ["completion"]=> string(10) "$0.0000300" }