la-87/aipromptbuilder

1.0.3 2024-07-24 19:37 UTC

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 许可证 下授权。