OpenAI offers a powerful suite of AI tools, but it doesn’t provide a direct PHP SDK. However, you can leverage its capabilities through its REST API using libraries like Guzzle or cURL. This guide will walk you through using OpenAI’s text-generation endpoint with PHP, including code samples and example outputs.
Prerequisites:
- An OpenAI API key (https://beta.openai.com/account/api-keys)
- Basic understanding of PHP and HTTP requests
- A library for making HTTP requests (e.g., Guzzle: https://packagist.org/packages/guzzlehttp/guzzle, cURL: https://www.php.net/manual/en/book.curl.php)
Steps:
Obtain Your OpenAI API Key: Create an OpenAI account and generate an API key from the Account settings. You’ll need this key to authenticate your requests.
Install an HTTP Client Library (Optional): While you can use cURL functions directly in PHP, using a library like Guzzle simplifies the process of making HTTP requests. We’ll use Guzzle for this guide, but the concepts can be adapted to cURL.
composer require guzzlehttp/guzzle
Sending Requests to OpenAI API: OpenAI’s API uses JSON for communication. Here’s a sample code snippet using Guzzle to send a request to the text-generation endpoint:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$apiKey = 'YOUR_OPENAI_API_KEY';
$baseUrl = 'https://api.openai.com/v1/completions';
$client = new Client();
$data = [ 'model' => 'text-davinci-003', // Choose an appropriate model
'prompt' => 'Write a poem about a cat named Mittens.',
'max_tokens' => 100, // Maximum length of response
'temperature' => 0.7, // Controls randomness (0 = deterministic, 1 = creative)
'stop' => ["\n"], // Stop sequence (e.g., newline character) ];
$headers = [ 'Authorization' => 'Bearer ' . $apiKey, 'Content-Type' => 'application/json' ];
try {
$response = $client->post($baseUrl, ['headers' => $headers, 'json' => $data]);
$responseJson = json_decode($response->getBody(), true);
if ($response->getStatusCode() === 200) {
$generatedText = $responseJson['choices'][0]['text'];
echo "Generated Text: \n" . $generatedText;
} else {
echo "Error: " . $response->getStatusCode() . "\n";
echo $response->getBody();
}
} catch (Exception $e) { echo "Error: " . $e->getMessage(); }
Replace YOUR_OPENAI_API_KEY
with your actual key.
This code defines the prompt, model (choose an appropriate model from OpenAI’s documentation), and other parameters for text generation.
It sends a POST request with the data and headers to the OpenAI API endpoint.
Upon successful response (status code 200), the code extracts the generated text and displays it.
Sample Output:
If everything works correctly, you’ll see an output similar to:
Generated Text:
Mittens, the cat with fur so white,
Eyes that sparkle, day and night.
A playful spirit, full of glee,
Always chasing butterflies, you see.
Additional Considerations:
- OpenAI offers various models with different capabilities. Explore the documentation for available options: https://beta.openai.com/docs/api-reference/completions
- Consider error handling for potential API issues or unexpected responses.
- OpenAI has usage limits and pricing structures. Refer to their documentation for details: https://beta.openai.com/account/usage