可爱的简单 OpenAI 包装器

v0.2.3 2024-05-08 14:44 UTC

This package is auto-updated.

Last update: 2024-09-08 15:30:25 UTC


README

Latest Version on Packagist Total Downloads

🧠 Brain - 可爱的简单 OpenAI 包装器

只是围绕 OpenAI SDK 的一个小巧简单的包装器。

📦 安装

composer require helgesverre/brain
php artisan vendor:publish --provider="OpenAI\Laravel\ServiceProvider"
OPENAI_API_KEY="your-key-here"
OPENAI_REQUEST_TIMEOUT=60

🛠 使用

🔧 基本设置

安装后,在 config/app.php 中设置 Brain Facade

'aliases' => [
    'Brain' => HelgeSverre\Brain\Facades\Brain::class,
],

📝 示例:生成博客标题

生成关于特定主题的博客标题列表

use HelgeSverre\Brain\Facades\Brain;

$subject = 'Technology';
$count = 5;

$titles = Brain::list("Suggest $count blog titles about '$subject'", 200);

foreach ($titles as $title) {
    echo $title . PHP_EOL;
}

📄 示例:生成结构化博客文章

以 JSON 格式生成结构化博客文章

use HelgeSverre\Brain\Facades\Brain;

$title = 'The Future of Technology';
$style = 'informative';
$minWords = 500;

$response = Brain::slow()->json(<<<PROMPT
Create an $style blog post with the title '$title'. 
Write over $minWords words.
PROMPT
);

echo "Title: " . $response['title'] . PHP_EOL;
echo "Body: " . $response['body'] . PHP_EOL;

📄 示例:使用数组或枚举进行文本分类

Brain::classify 简化了文本分类。您可以使用选项数组或枚举类对文本进行分类。

数组分类

传递一个分类列表作为数组以对您的文本进行分类。

use HelgeSverre\Brain\Facades\Brain;

$input = 'banana';
$categories = ["bread", "animal", "car", "plane"];

$result = Brain::fast()->classify($input, $categories);

此方法评估 'banana' 并将其分类为提供的选项之一。

枚举分类

对于结构化分类,请使用枚举类。

use HelgeSverre\Brain\Facades\Brain;

enum Category: string {
    case Fruit = 'fruit';
    case Animal = 'animal';
    case Car = 'car';
}

$input = 'banana';

$result = Brain::fast()->classify($input, Category::class);

在这里,'banana' 被分类到最合适的枚举类别中。

📄 示例:生成向量嵌入

此方法返回输入的向量嵌入,如果传递数组或集合,则返回向量嵌入列表。

use HelgeSverre\Brain\Facades\Brain;

// Single embedding
$result = Brain::embedding('banana');
// Returns ['0.123', '0.456', '0.789' ....]

// Or, for multiple inputs:
$result = Brain::embedding(['banana', 'apple', 'orange']);
// Returns [['0.123', '0.456', '0.789' ....], ['0.123', '0.456', '0.789' ....], ['0.123', '0.456', '0.789' ....]]

// Or, for a collection of inputs:
$result = Brain::embedding(collect(['banana', 'apple', 'orange']));
// Returns [['0.123', '0.456', '0.789' ....], ['0.123', '0.456', '0.789' ....], ['0.123', '0.456', '0.789' ....]]

更改基本 URL 以使用 Together.AI、Mistral.AI、Perplexity.AI 或其他兼容 API

您可以使用 usingTogetherAIusingMistralAIusingPerplexity 方法更改基本 URL 以使用其他兼容 API。

use HelgeSverre\Brain\Facades\Brain;

Brain::usingTogetherAI()->text('Hello, world!');
Brain::usingMistralAI()->text('Hello, world!');
Brain::usingPerplexity()->text('Hello, world!');

或者您可以直接设置基本 URL,注意该 API 必须与 OpenAI 的 API 兼容,特别是聊天完成端点。

请注意,JSON 模式(如 Brain::jsonBrain::classifyBrain::embeddingBrain::list 所用)不是所有 API 都支持。

use HelgeSverre\Brain\Facades\Brain;

Brain::baseUrl('api.example.com');

📖 可用方法

使用其他提供商(Mistral、Together、Perplexity、Groq 等)

use HelgeSverre\Brain\Facades\Brain;

Brain::apiKey("api-key-from-together")->usingTogetherAI()->text('Hello, world!');

Brain::apiKey("api-key-from-mistral")->usingMistralAI()->text('Hello, world!');

Brain::apiKey("api-key-from-perplexity")->usingPerplexity()->text('Hello, world!');

Brain::apiKey("api-key-from-groq")->usingGroq()->text('Hello, world!');

📜 许可证

此软件包根据 MIT 许可证授权。有关更多详细信息,请参阅许可证文件