helgesverre / brain
可爱的简单 OpenAI 包装器
v0.2.3
2024-05-08 14:44 UTC
Requires
- php: ^8.2
- openai-php/laravel: ^v0.8.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.13
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
README
🧠 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
您可以使用 usingTogetherAI
、usingMistralAI
或 usingPerplexity
方法更改基本 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::json
、Brain::classify
、Brain::embedding
和 Brain::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 许可证授权。有关更多详细信息,请参阅许可证文件。