lanos/laravel-open-ai-conversations

为现有的 Laravel OpenAI 包添加持久的会话功能

v1.2 2023-08-25 04:26 UTC

This package is auto-updated.

Last update: 2024-09-25 07:03:09 UTC


README

Laravel GPT 会话

简介

此包基于 openai-php/laravel 包构建,允许您使用数据库保存上下文来构建会话。

此包只是建立在由以下人员开发的出色包之上

需要 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。