lanos / laravel-open-ai-conversations
为现有的 Laravel OpenAI 包添加持久的会话功能
v1.2
2023-08-25 04:26 UTC
Requires
- guzzlehttp/guzzle: ^7.0.1
- illuminate/console: ^8.37|^9.0
- illuminate/contracts: ^8.37|^9.0
- illuminate/database: ^8.37|^9.0
- illuminate/http: ^8.37|^9.0
- illuminate/log: ^8.37|^9.0
- illuminate/notifications: ^8.37|^9.0
- illuminate/routing: ^8.37|^9.0
- illuminate/support: ^8.37|^9.0
- illuminate/view: ^8.37|^9.0
- laravel/framework: ^8.37|^9.0
- openai-php/laravel: ^v0.5.1
README
Laravel GPT 会话
简介
此包基于 openai-php/laravel 包构建,允许您使用数据库保存上下文来构建会话。
此包只是建立在由以下人员开发的出色包之上
- Nuno Maduro: github.com/sponsors/nunomaduro
- Sandro Gehri: github.com/sponsors/gehrisandro
需要 openai-php/laravel 包,并且应该作为此安装的一部分进行安装。
设置
需要 PHP 8.1+
非常简单。安装我们的包(如果您尚未安装 openai-php/laravel,Composer 应尝试安装它)
composer require lanos/laravel-open-ai-conversations
然后您只需运行迁移
php artisan migrate
如果您尚未设置 OpenAI-PHP Laravel 包,您可以像这样发布他们的配置
php artisan vendor:publish --provider="OpenAI\Laravel\ServiceProvider"
然后添加所需的环境变量。
OPENAI_API_KEY=sk-...
您还可以在 .env 中覆盖一些默认配置变量,例如为插件设置会话的默认模型。
OPENAI_DEFAULT_MODEL=gpt-4-32k OPENAI_TOKEN_LIMIT=4096
示例
完全配置了这两个插件后,您只需使用 Eloquent 接口创建会话即可。
默认值将为您填写,但您可以在创建时覆盖。
创建会话后,您可以提问。插件将自动追加所有以前的响应,以便模型对会话中的以前消息有意识。它还自动确保不触及令牌限制,通过“忘记”所需的旧消息。
<?php
// CREATES THE CONVERSATION
$conversation = Conversation::create();
// ASK A NEW QUESTION
$capitalCity = $conversation->askQuestion('What is the capital city of England?');
// ASK A FOLLOW UP QUESTION
$population = $conversation->askQuestion('And what is the population of that city?');
// GETS ALL OF THE QUESTIONS AND ANSWERS UP UNTIL NOW
$messages = $conversation->messages()->get();
忘记的消息
由于令牌限制,当需要时,插件将软删除旧消息,类似于 Chat GPT 所做的方式。不同之处在于,这会做得更少,因为根据您使用的模型,API 上的令牌限制更高。请注意,请求可能变得昂贵。
您可以使用 Eloquent 的 withTrashed 函数获取所有已忘记的消息。
// GETS ALL OF THE QUESTIONS AND ANSWERS UP UNTIL NOW INCLUJDING FOROGTTEN ONES
$messages = $conversation->messages()->withTrashed()->get();
// GETS ONLY FORGOTTEN MESSAGES
$messages = $conversation->messages()->onlyTrashed()->get();
许可
请参阅此存储库中的 license.md。