edgaras / cloudflare-ai
Library for integrating and interacting with Cloudflare hosted AI models, providing tools for sending requests, managing model configurations, and processing responses.
1.0.0
2025-01-28 23:00 UTC
Requires
- php: >=8.1.0
- guzzlehttp/guzzle: ^7.9
Requires (Dev)
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2025-01-28 23:06:11 UTC
README
Features
This library supports the following model categories:
- Text Generation.
- Text to Image.
- Text Embeddings.
- Translation.
- Summarization.
Requirements
PHP 8.1+
Installation
- Use the library via Composer:
composer require edgaras/cloudflare-ai
- Include the Composer autoloader:
require __DIR__ . '/vendor/autoload.php';
Usage
Text Generation
use Edgaras\CloudFlareAI\AI; use Edgaras\CloudFlareAI\TextGeneration; $accountId = "<YOUR-ACCOUNT-ID>"; $apiToken = "<YOUR-API-TOKEN>"; $modelName = "@cf/deepseek-ai/deepseek-math-7b-instruct"; // Define the model name $config = new AI($accountId, $apiToken); $textGeneration = new TextGeneration($config, $modelName); $messages = [ ["role" => "system", "content" => "You are a helpful assistant"], ["role" => "user", "content" => "2+2=?"], ]; // Options $options = [ 'temperature' => 0.7, 'max_tokens' => 300, 'top_p' => 0.8, 'frequency_penalty' => 0.2, 'presence_penalty' => 0.3, ]; // Run Model $response = $textGeneration->run($messages, $options, 60);
Text to Image
use Edgaras\CloudFlareAI\AI; use Edgaras\CloudFlareAI\TextToImage; $accountId = "<YOUR-ACCOUNT-ID>"; $apiToken = "<YOUR-API-TOKEN>"; $modelName = "@cf/black-forest-labs/flux-1-schnell"; // Define the model name $config = new AI($accountId, $apiToken); $textToImage = new TextToImage($config, $modelName); $prompt = "A futuristic cityscape at night with neon lights"; $options = [ 'negativePrompt' => "blurry, low resolution", 'height' => 768, 'width' => 1024, 'numSteps' => 20, 'guidance' => 7.5, 'seed' => 12345678, 'timeout' => 20.0, 'maxAttempts' => 3, ]; // Generate the image try { $result = $textToImage->generate($prompt, $options); if (isset($result['error'])) { echo "Error: " . $result['error'] . PHP_EOL; if (isset($result['response'])) { print_r($result['response']); } } else { echo "<img src=\"data:image/jpeg;base64,{$result['result']['image']}\">"; } } catch (Exception $e) { echo "Exception: " . $e->getMessage() . PHP_EOL; }
Text Embeddings
use Edgaras\CloudFlareAI\AI; use Edgaras\CloudFlareAI\TextEmbeddings; $accountId = "<YOUR-ACCOUNT-ID>"; $apiToken = "<YOUR-API-TOKEN>"; $modelName = "@cf/baai/bge-large-en-v1.5"; // Define the model name $config = new AI($accountId, $apiToken); $embeddings = new TextEmbeddings($config, $modelName); // Provide the text to vectorize and the maximum timeout $embed = $embeddings->embed("Text to vectorize", 60);
Translation
use Edgaras\CloudFlareAI\AI; use Edgaras\CloudFlareAI\Translation; $accountId = "<YOUR-ACCOUNT-ID>"; $apiToken = "<YOUR-API-TOKEN>"; $modelName = "@cf/meta/m2m100-1.2b"; // Define the model name $config = new AI($accountId, $apiToken); $translation = new Translation($config, $modelName); $text = "Hello, how are you?"; $sourceLang = "en"; $targetLang = "lt"; $response = $translation->translate($text, $targetLang, $sourceLang); // Optional parameters: $timeout, $maxAttempts // echo $response['result']['translated_text']; // Sveiki, kaip jūs jaučiatės?
Summarization
use Edgaras\CloudFlareAI\AI; use Edgaras\CloudFlareAI\Summarization; $accountId = "<YOUR-ACCOUNT-ID>"; $apiToken = "<YOUR-API-TOKEN>"; $modelName = "@cf/facebook/bart-large-cnn"; // Define the model name $config = new AI($accountId, $apiToken); $summarization = new Summarization($config, $modelName); $inputText = " Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. "; $maxLength = 100; $response = $summarization->summarize($inputText, $maxLength); // echo $response['result']['summary']; // Lorem Ipsum is a piece of classical Latin literature from 45 BC. The word consectetur is one of the more obscure Latin words.