la-87 / aipromptbuilder
AIPromptBuilder
1.0.3
2024-07-24 19:37 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- nyholm/psr7: ^1.8
- openai-php/client: ^0.9.0
- symfony/http-client: ^7.0
This package is auto-updated.
Last update: 2024-09-25 18:58:37 UTC
README
介绍
AI Prompt Builder 包提供了一种在 Laravel 应用程序中与 OpenAI 模型交互的简化方式。它以结构化和可配置的方式促进提示的构建、函数调用的管理和响应的处理。
安装
首先,通过 Composer 安装该包
composer require la87/ai-prompt-builder
然后,发布配置文件
php artisan vendor:publish --provider="LA87\AIPromptBuilder\AIPromptBuilderServiceProvider"
最后,根据需要配置位于您的 config
目录中的 ai-prompt-builder.php
文件,包括您的 OpenAI API 密钥和其他设置。
配置
ai-prompt-builder.php
配置文件包括如下设置
return [ 'api_key' => env('OPENAI_API_KEY', ''), 'cache_ttl' => env('AI_PROMPT_CACHE_TTL', 600), ];
请确保在您的 .env
文件中设置了您的 OpenAI API 密钥
OPENAI_API_KEY=your-api-key
AI_PROMPT_CACHE_TTL=600
用法
基本用法
要使用 AI Prompt Builder 服务,您需要创建一个 AIPromptBuilderService
实例并使用您希望设置的配置进行配置
use LA87\AIPromptBuilder\Services\AIPromptBuilderService; use LA87\AIPromptBuilder\Enums\AIModelEnum; use OpenAI\Client; $client = app(Client::class); $service = new AIPromptBuilderService($client); $response = $service->setModel(AIModelEnum::GPT4) ->setPrompt('What is the capital of France?') ->setRole('You are a knowledgeable assistant.') ->ask(); echo $response->completion;
使用函数调用
您可以在交互过程中定义并使用 AI 可以调用的函数。为任何自定义函数实现 AIFunctionInterface
use LA87\AIPromptBuilder\Contracts\AIFunctionInterface; use stdClass; class GetWeatherFunction implements AIFunctionInterface { public function getName(): string { return 'getWeather'; } public function getDescription(): string { return 'Fetches the current weather for a given location.'; } public function getParametersSchema(): array { return [ 'type' => 'object', 'properties' => [ 'location' => [ 'type' => 'string', 'description' => 'The location to get the weather for.' ] ], 'required' => ['location'] ]; } public function getMustBeCalled(): bool { return true; } public function execute(stdClass|null $arguments = null) { // Custom logic to fetch the weather return 'Sunny, 25°C'; } }
然后,在您的提示中注册并使用该函数
$service->setFunctionCalls([new GetWeatherFunction()]) ->askAndExecute(); $result = $service->getFunctionResult('getWeather'); echo $result;
列出可用的模型
您可以使用 listModels
方法列出所有可用的 OpenAI 模型
$models = $service->listModels(); print_r($models);
处理函数结果
要处理函数调用的结果,请使用 askAndExecute
方法后跟 getFunctionResult
try { $service->askAndExecute(); $result = $service->getFunctionResult('getWeather'); echo $result; } catch (MissingFunctionCallException $e) { echo "Function call missing!"; } catch (MissingFunctionResultException $e) { echo "Function result missing!"; }
异常处理
该包包含用于处理各种错误状态的定制异常
MissingFunctionCallException
:当期望函数调用但没有返回时抛出。MissingFunctionResultException
:当期望函数结果但未找到时抛出。
贡献
欢迎贡献!请提交拉取请求或创建问题来报告错误或建议新功能。
许可
此包是开源软件,在 MIT 许可证 下授权。