Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Client Laravel Package

openai-php/client

Community-maintained PHP client for the OpenAI API. Install via Composer and interact with models, responses, chat, images, audio, files, and more with a clean, typed interface—ideal for Laravel and modern PHP apps.

View on GitHub
Deep Wiki
Context7

⚡️ OpenAI PHP is a supercharged community-maintained PHP API client that allows you to interact with OpenAI API.

Frequently asked questions about Client
How do I install OpenAI PHP in a Laravel project?
Use Composer to install the package with `composer require openai-php/client`. Laravel’s built-in HTTP client (PSR-18 compliant) works out of the box, so no additional setup is required unless you’re using a custom HTTP client like Guzzle. Register the client in Laravel’s service container via `config/app.php` or a service provider for dependency injection.
What Laravel versions does OpenAI PHP support?
The package is designed for PHP 8.2+ and integrates seamlessly with Laravel 9.x and 10.x. It leverages PSR-18 HTTP clients, which Laravel’s built-in `Http` facade already supports. For older Laravel versions, ensure your HTTP client is PSR-18 compliant or use a compatible adapter like `php-http/guzzle7-adapter`.
Can I use OpenAI PHP for streaming responses like chat completions in real-time?
Yes, the package supports streaming responses via methods like `createStreamed()`. However, Laravel’s middleware may interfere with streaming contexts. Use Laravel’s `streamDownload()` or create a custom controller to handle streaming responses without middleware blocking. Test thoroughly in a staging environment to ensure compatibility.
How should I manage OpenAI API keys securely in Laravel?
Store API keys in Laravel’s `.env` file (e.g., `OPENAI_API_KEY`) and access them via `config('services.openai.key')`. For multi-key setups (e.g., failover or cost optimization), use Laravel’s `config()` with environment-specific keys or a package like `spatie/laravel-env-editor` to manage multiple keys dynamically. Avoid hardcoding keys in your application.
Does OpenAI PHP support rate limiting and token usage tracking?
The package itself doesn’t enforce rate limits, but you can implement middleware or Laravel tasks to monitor `usage->totalTokens` and trigger alerts when thresholds are exceeded. Use Laravel’s queue system to batch requests and avoid hitting rate limits. For production, consider integrating with OpenAI’s usage logs or a third-party monitoring tool.
How do I handle deprecated OpenAI API resources (e.g., assistants) in Laravel?
Use abstract classes or interfaces to isolate API changes. For example, create an `OpenAIAssistantsInterface` that your Laravel service implements. When OpenAI deprecates a resource, update the interface and adapter layer without breaking existing Laravel logic. This approach also simplifies testing and future migrations.
Can I cache OpenAI API responses in Laravel (e.g., model listings) for performance?
Yes, cache frequent responses like model listings using Laravel’s cache drivers (e.g., Redis or file cache). Wrap API calls in a service class and use `Cache::remember()` to store responses. Set appropriate TTL values based on OpenAI’s API update frequency. For real-time data (e.g., chat responses), avoid caching unless absolutely necessary.
How do I test OpenAI PHP in Laravel with mocked HTTP responses?
Use Laravel’s HTTP client mocking (e.g., `Http::fake()`) or libraries like `Mockery` or `Vcr` to record and replay API responses. For unit tests, inject a mocked HTTP client into your service container. Validate responses using Laravel’s `assertJson()` or PHPUnit assertions. This ensures your Laravel logic works independently of OpenAI’s API.
What are the alternatives to OpenAI PHP for Laravel, and when should I consider them?
Alternatives include the official OpenAI PHP SDK (`openai`) or custom implementations using Guzzle directly. Choose OpenAI PHP for its Laravel-friendly design, typed interfaces, and community support. Use the official SDK if you need tighter alignment with OpenAI’s latest features or prefer minimal dependencies. For legacy projects, a custom Guzzle wrapper may suffice if you’re already using it.
How do I handle long-running OpenAI API requests (e.g., file uploads, fine-tuning) in Laravel?
Offload long-running tasks to Laravel queues using `dispatch()` with `ShouldQueue` interfaces. For file uploads, use `Storage::disk()` to handle large files before sending them to OpenAI. Monitor queue jobs with Laravel Horizon or `queue:work` to ensure reliability. Consider async processing for fine-tuning jobs to avoid timeouts in web requests.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata