capevace/laravel-gpt

一个用于与 OpenAI 的 GPT-3 交互的 Laravel 扩展包。

v1.0.1 2022-12-13 18:04 UTC

README

laravel-gpt

此扩展包提供了一个 类型安全的 接口,用于向 GPT-3 API 发送请求。

Latest Version on Packagist GitHub Tests Action Status Total Downloads

use Capevace\GPT\Facades\GPT;

$response = GPT::generate(
    'Name a thing that is blue.',
    model: 'text-davinci-003',
    maxTokens: 400,
    frequencyPenalty: 1.0,
);

echo $response->first(); // "The sky"

安装

您可以通过 composer 安装此扩展包。

composer require capevace/laravel-gpt

配置

您需要 OpenAI GPT-3 API 的 API 密钥。一旦您获得了 API 密钥,您可以在 .env 文件中配置它,添加以下行

OPENAI_API_KEY=your-api-key-here

您也可以直接发布配置文件,但这可能并不是必要的

php artisan vendor:publish --tag="laravel-gpt-config"

用法

Capevace\GPT\GPTService 类提供了向 GPT-3 API 发送请求的方法。您可以将它注入到控制器中或使用外观来访问容器。

# Access via injection

use Capevace\GPT\GPTService;

class MyController extends Controller {
    protected GPTService $gpt;

    public function __construct(GPTService $gpt) {
        $this->gpt = $gpt;
    }

    public function index() {
        $this->gpt->generate(
            // ..
        );
    }

}

# Access via Facade

use Capevace\GPT\Facades\GPT;

GPT::generate(/* .. */);

GPT::generate(<prompt>, [...options])

generate 方法返回一个包含 GPT-3 API 响应的 GPTResponse 对象。如果没有返回文本(空字符串),该方法将抛出错误。

generate 方法接受以下参数

  • prompt (必需): 要发送到 GPT-3 API 的提示
  • model: 要使用的 GPT-3 模型(默认为 text-davinci-003)
  • temperature: 一个介于 0 和 1 之间的值,用于确定响应的“创意”程度(默认为 0.83)
  • maxTokens: 响应中返回的最大标记数(即单词数)(默认为 1200)
  • stop: 当在响应中遇到时将导致响应结束的字符串(默认为 null)
  • frequencyPenalty: 一个介于 0 和 1 之间的值,用于确定模型将如何惩罚频繁出现的单词(默认为 0.11)
  • presencePenalty: 一个介于 0 和 1 之间的值,用于确定模型将如何惩罚不在提示中出现的单词(默认为 0.03)

示例

use Capevace\GPT\Facades\GPT;

$response = GPT::generate(
    'Generate a list of things that are blue.',
    model: 'text-davinci-003',
    maxTokens: 400,
    frequencyPenalty: 1.0,
);

处理响应

generate 方法返回一个包含 GPT-3 API 响应的 GPTResponse 对象。

它有两个方法

  • $response->first() (string): 返回 GPT-3 建议的第一个文本
  • $response->all() (array): 返回 GPT-3 建议的所有文本选项

示例

use Capevace\GPT\Facades\GPT;

$response = GPT::generate(
    'Name a thing that is blue.',
    model: 'text-davinci-003',
    maxTokens: 400,
    frequencyPenalty: 1.0,
);

$firstChoice = $response->first(); // "the sky"

$allChoices = $response->all(); // ["the sky", "the ocean" ...]

错误处理

如果在请求 GPT-3 API 时发生错误,generate() 方法将抛出 Capevace\GPT\Support\GPTException 异常。

如果响应不包含任何文本(空字符串),laravel-gpt 也会抛出错误。

示例

use Capevace\GPT\Facades\GPT;
use Capevace\GPT\Support\GPTException;
use Exception;

try {
    $response = GPT::generate('Do nothing.');
} catch (GPTException $e) {
    // Exception will be thrown, as the response text is ""
} catch (Exception $e) {
    // Catch connectivity errors etc.
}

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件