Nano GPT logo
NanoGPT
Nano GPT logo
NanoGPT
Conversations
Create Media
Workspace
Gallery
Models
Pricing

Account

Balance
Usage
Settings
API
Presets
Invitations
Subscription
Teams

Resources

Benchmarks
Suggestions and bugs
Batch API
Blog
Help
Applications
Earn
Partners
Terms

|

Privacy

|

Refunds

Private AI

Back to Blog

How to Use Text Generation APIs with PHP

Feb 22, 2025
How to Use Text Generation APIs with PHP

Text generation APIs let you add AI-powered features like text generation, translations, and summaries to your PHP projects. Here's what you need to know to get started:

  • Setup Requirements: Use PHP 5.6+ with cURL and OpenSSL extensions enabled. Allocate at least 64MB memory (128-256MB recommended).
  • API Options: Choose between options like OpenAI (subscription-based) or NanoGPT (pay-as-you-go, local storage for privacy).
  • Integration Methods: Use cURL for simple API calls or Guzzle for advanced functionality.
  • Key Considerations: Evaluate APIs based on content type, customization, integration ease, response time, and privacy.

Quick Comparison

FeatureOpenAI APINanoGPT API
Pricing ModelSubscription-basedPay-as-you-go ($0.10)
Data PrivacyCloud storageLocal storage
Ease of UseModerateSimple
Models OfferedGPT-3.5, GPT-4ChatGPT, Gemini, etc.

How to use OpenAI API with PHP

OpenAI

PHP Setup Requirements

Set up your PHP environment with the right tools to integrate text generation APIs effectively. This ensures your system is ready for API functionality.

Required Software Installation

Make sure you have the following components installed and configured:

ComponentRequirementPurpose
PHP VersionPHP 5.6 or higherRequired for API functionality
cURL Extensionv7.61.0+ (PHP 8.4)Handles HTTP requests to APIs
OpenSSL ExtensionLatest stable versionEnsures secure HTTPS connections
Memory Allocation64MB minimum (128-256MB recommended)Manages API response handling

To confirm your setup:

  • Use phpinfo() to verify your PHP version and check if cURL is enabled.
  • Check the memory_limit setting in your php.ini file.
  • Ensure both OpenSSL and cURL extensions are active.

Update your php.ini file with these recommended settings:

allow_url_fopen = On
max_execution_time = 50
memory_limit = 256M

Getting Your API Key

API keys are essential for authentication with most text generation APIs. For example, if you're using NanoGPT (https://nano-gpt.com), sign up on their platform to get your API credentials. NanoGPT offers a pay-as-you-go model, which is ideal for testing and development without long-term commitments.

To secure your API key in production, use environment variables in your Apache configuration:

<VirtualHost *:80>
    SetEnv API_KEY your_api_key_here
</VirtualHost>

Access the key in your PHP code like this:

<?php
$api_key = getenv('API_KEY');
?>

With your environment ready and API key securely stored, you can now proceed to integrate API calls into your PHP scripts.

Adding Text Generation APIs to PHP

With your PHP environment ready, it's time to integrate text generation APIs into your project. This section breaks down how to do it, from straightforward methods to more advanced approaches.

Choosing a Text Generation API

When picking a text generation API, consider the following key features:

FeatureOpenAI APINanoGPT API
Pricing ModelUsage-based subscriptionPay-as-you-go ($0.10 minimum)
Available ModelsGPT-3.5, GPT-4Multiple (ChatGPT, Gemini, Deepseek)
Data PrivacyCloud storageLocal device storage
Integration ComplexityModerateSimple

NanoGPT allows pay-as-you-go access to various AI models, while OpenAI provides subscription-based pricing with powerful GPT models. Once you've chosen an API, follow the examples below to integrate it into your PHP application.

Using cURL for Basic API Requests

PHP's built-in cURL functions make it easy to interact with APIs. Here's a production-ready example to send a request:

function makeTextGenerationRequest($endpoint, $apiKey, $prompt) {
    $curl = curl_init();

    $data = array(
        "prompt" => $prompt,
        "max_tokens" => 150,
        "temperature" => 0.7
    );

    curl_setopt_array($curl, [
        CURLOPT_URL => $endpoint,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($data),
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer ' . $apiKey,
            'Content-Type: application/json'
        )
    ]);

    $response = curl_exec($curl);

    if (!$response) {
        throw new Exception(curl_error($curl));
    }

    curl_close($curl);
    return json_decode($response, true);
}

This method is straightforward and works well for simple use cases.

Advanced Integration with Guzzle

Guzzle

For more complex requirements, Guzzle provides a robust solution. First, add Guzzle to your project:

composer require guzzlehttp/guzzle

Next, use the following example to interact with the API:

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

class TextGenerationClient {
    private $client;
    private $apiKey;

    public function __construct($apiKey, $baseUri) {
        $this->apiKey = $apiKey;
        $this->client = new Client([
            'base_uri' => $baseUri,
            'headers' => [
                'Authorization' => 'Bearer ' . $apiKey,
                'Content-Type' => 'application/json'
            ]
        ]);
    }

    public function generateText($prompt) {
        try {
            $response = $this->client->post('/v1/completions', [
                'json' => [
                    'prompt' => $prompt,
                    'max_tokens' => 150,
                    'temperature' => 0.7
                ]
            ]);

            return json_decode($response->getBody(), true);
        } catch (RequestException $e) {
            throw new Exception("API request failed: " . $e->getMessage());
        }
    }
}

Guzzle simplifies error handling and supports middleware, making it a great choice for advanced API interactions. Whether you're building a simple script or a complex application, these examples will help you get started.

sbb-itb-903b5f2

Code Examples

Here are some practical code samples to demonstrate how to integrate with different APIs. These examples show how to implement API calls based on the strategies discussed earlier.

OpenAI API Code Sample

This PHP class provides a way to interact with the OpenAI API:

class OpenAITextGenerator {
    private $apiKey;
    private $client;
    private $endpoint = 'https://api.openai.com/v1/completions';

    public function __construct($apiKey) {
        $this->apiKey = $apiKey;
        $this->client = new GuzzleHttp\Client();
    }

    public function generateText($prompt, $options = []) {
        try {
            $defaultOptions = [
                'model' => 'gpt-3.5-turbo',
                'max_tokens' => 150,
                'temperature' => 0.7,
                'top_p' => 1.0,
                'frequency_penalty' => 0.0,
                'presence_penalty' => 0.0
            ];

            $requestData = array_merge($defaultOptions, $options, ['prompt' => $prompt]);

            $response = $this->client->post($this->endpoint, [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->apiKey,
                    'Content-Type' => 'application/json',
                ],
                'json' => $requestData
            ]);

            $result = json_decode($response->getBody(), true);
            return $result['choices'][0]['text'];

        } catch (GuzzleHttp\Exception\RequestException $e) {
            $errorResponse = json_decode($e->getResponse()->getBody(), true);
            throw new Exception(
                "API Error: " . ($errorResponse['error']['message'] ?? 'Unknown error'),
                $e->getCode()
            );
        }
    }
}

Usage Example:

$generator = new OpenAITextGenerator('your-api-key');

try {
    $response = $generator->generateText(
        "Write a product description for a smart coffee maker.",
        ['temperature' => 0.8, 'max_tokens' => 200]
    );
    echo $response;
} catch (Exception $e) {
    error_log("Text generation failed: " . $e->getMessage());
}

NanoGPT API Code Sample

NanoGPT

This PHP class demonstrates how to connect with the NanoGPT API:

class NanoGPTClient {
    private $apiKey;
    private $endpoint = 'https://api.nano-gpt.com/v1/generate';
    private $client;

    public function __construct($apiKey) {
        $this->apiKey = $apiKey;
        $this->client = new GuzzleHttp\Client([
            'timeout' => 30,
            'http_errors' => true
        ]);
    }

    public function generateText($prompt, $model = 'chatgpt', $options = []) {
        try {
            $defaultOptions = [
                'max_tokens' => 150,
                'temperature' => 0.7,
                'model' => $model,
                'store_locally' => true
            ];

            $requestData = array_merge($defaultOptions, $options, [
                'prompt' => $prompt
            ]);

            $response = $this->client->post($this->endpoint, [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->apiKey,
                    'Content-Type' => 'application/json',
                ],
                'json' => $requestData
            ]);

            return json_decode($response->getBody(), true);

        } catch (GuzzleHttp\Exception\RequestException $e) {
            if ($e->hasResponse()) {
                $errorBody = json_decode($e->getResponse()->getBody(), true);
                throw new Exception(
                    "NanoGPT API Error: " . 
                    ($errorBody['error'] ?? 'Unknown error'),
                    $e->getCode()
                );
            }
            throw $e;
        }
    }
}

Implementation Example:

$nanoGPT = new NanoGPTClient('your-api-key');

try {
    $result = $nanoGPT->generateText(
        "Explain quantum computing in simple terms",
        'gemini',
        [
            'temperature' => 0.5,
            'max_tokens' => 300
        ]
    );

    if (isset($result['generated_text'])) {
        echo $result['generated_text'];
    }
} catch (Exception $e) {
    error_log("NanoGPT request failed: " . $e->getMessage());
}

Both examples handle errors gracefully and allow for parameter customization. The OpenAI snippet focuses on generating standard completions, while the NanoGPT example highlights features like local storage and support for multiple models.

API Implementation Guidelines

When integrating APIs, it's important to secure your calls and handle errors and parameters effectively. Below are some practical steps to achieve this.

API Key Security

Protecting your API keys is a top priority when using text generation APIs in PHP. Avoid hardcoding keys directly into your source code. Instead, use secure storage methods like environment variables.

Here’s an example of how to securely access an API key:

// Load environment variables from .env file
require 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

// Access API key securely
$apiKey = $_ENV['API_KEY'];

This approach ensures your API keys remain secure and are not exposed in your codebase.

API Error Management

A solid error-handling strategy is essential for maintaining a stable application. Here's an example of how to manage common API errors:

try {
    $response = $client->request('POST', $endpoint, [
        'headers' => ['Authorization' => 'Bearer ' . $apiKey],
        'json' => $requestData,
        'timeout' => 30,
        'connect_timeout' => 5
    ]);
} catch (RequestException $e) {
    if ($e->hasResponse()) {
        $statusCode = $e->getResponse()->getStatusCode();
        switch ($statusCode) {
            case 429:
                // Retry with exponential backoff
                sleep(pow(2, $retryAttempt));
                break;
            case 500:
                // Log the error and alert admin
                error_log("Server Error: " . $e->getMessage());
                break;
        }
    }
}

This ensures your application can handle rate limits, server errors, and other potential issues without crashing.

API Parameter Settings

Fine-tuning API parameters has a direct impact on the quality of the output. Here’s a quick reference for some key settings:

ParameterPurposeRecommended Settings
temperatureControls output randomness0-0.3: Factual content
0.7: Balanced output
0.8-1: Creative content
max_tokensLimits response length150: Short responses
512: Medium content
1024: Long-form content
top_pControls output diversity0.1: Focused responses
0.7: Default setting
1.0: Maximum diversity

For factual results, set a lower temperature value. Keep in mind that max_tokens affects both the input and output length when using GPT models .

You can also validate these parameters programmatically to avoid errors:

function validateParameters($params) {
    if ($params['temperature'] < 0 || $params['temperature'] > 2) {
        throw new InvalidArgumentException('Temperature must be between 0 and 2');
    }
    if ($params['max_tokens'] > 4096) {
        throw new InvalidArgumentException('max_tokens cannot exceed 4096');
    }
}

Conclusion

This guide has covered the essential steps for integrating text generation APIs with PHP. Key considerations include secure key management and effective error handling to ensure smooth operation . A strong implementation also accounts for API failures and rate limits.

To get the best results, configure your API parameters to match your specific needs. Since different models vary in terms of accuracy, speed, and cost, selecting the right one is crucial . Striking the right balance will help you achieve your project goals efficiently.

Privacy is another critical factor. Tools like NanoGPT store data locally and provide access to multiple AI models on a pay-as-you-go basis, making them a practical choice for smaller projects.

Related articles

Continue with more NanoGPT guides and research on this topic.

How to Use Text Generation APIs with JavaScript

Learn how to integrate text generation APIs in JavaScript, leveraging features like local data storage, customization, and cost management.

Apr 16, 2025

Ultimate Guide to .NET SDKs for Text Generation APIs

Learn how to seamlessly integrate AI text generation into your .NET applications using standard libraries, enhancing performance and privacy.

Oct 10, 2025

How to Debug Text Generation API Calls

Learn effective strategies to debug text generation API calls, from understanding error codes to analyzing logs and testing endpoints.

Aug 5, 2025

Role-Based Access Control in Text Generation APIs

Explore how Role-Based Access Control enhances security, compliance, and user management in text generation APIs while addressing common challenges.

Jun 10, 2025
Back to Blog