PHP code example of google-gemini-api-php / client
1. Go to this page and download the library: Download google-gemini-api-php/client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
google-gemini-api-php / client example snippets
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->geminiPro()->generateContent(
new TextPart('PHP in less than 100 chars'),
);
print $response->text();
// PHP: A server-side scripting language used to create dynamic web applications.
// Easy to learn, widely used, and open-source.
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
use GeminiAPI\Resources\Parts\FilePart;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->geminiPro15Flash001()->generateContentWithCache(
["cachedContent" => "cachedContents/n9l42h1iszbd"],
new TextPart("Give me the summary of the file uploaded")
);
print $response->text();
// PHP: This will give the summary of the file uploaded
use GeminiAPI\Gemini;
use GeminiAPI\Enums\MimeType;
use GeminiAPI\Resources\Parts\ImagePart;
use GeminiAPI\Resources\Parts\TextPart;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->geminiProVision()->generateContent(
new TextPart('Explain what is in the image'),
new ImagePart(
MimeType::IMAGE_JPEG,
base64_encode(file_get_contents('elephpant.jpg')),
),
);
print $response->text();
// The image shows an elephant standing on the Earth.
// The elephant is made of metal and has a glowing symbol on its forehead.
// The Earth is surrounded by a network of glowing lines.
// The image is set against a starry background.
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
$gemini = new Gemini('GEMINI_API_KEY');
$chat = $gemini->geminiPro()->startChat();
$response = $chat->sendMessage(new TextPart('Hello World in PHP'));
print $response->text();
$response = $chat->sendMessage(new TextPart('in Go'));
print $response->text();
use GeminiAPI\Gemini;
use GeminiAPI\Enums\Role;
use GeminiAPI\Resources\Content;
use GeminiAPI\Resources\Parts\TextPart;
$history = [
Content::text('Hello World in PHP', Role::User),
Content::text(
<<<TEXT
echo "Hello World!";
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
use GeminiAPI\Responses\GenerateContentResponse;
$callback = function (GenerateContentResponse $response): void {
static $count = 0;
print "\nResponse #{$count}\n";
print $response->text();
$count++;
};
$gemini = new Gemini('GEMINI_API_KEY');
$gemini->geminiPro()->generateContentStream(
$callback,
[new TextPart('PHP in less than 100 chars')],
);
// Response #0
// PHP: a versatile, general-purpose scripting language for web development, popular for
// Response #1
// its simple syntax and rich library of functions.
use GeminiAPI\Gemini;
use GeminiAPI\Enums\Role;
use GeminiAPI\Resources\Content;
use GeminiAPI\Resources\Parts\TextPart;
use GeminiAPI\Responses\GenerateContentResponse;
$history = [
Content::text('Hello World in PHP', Role::User),
Content::text(
<<<TEXT
echo "Hello World!";
use GeminiAPI\Gemini;
use GeminiAPI\Enums\ModelName;
use GeminiAPI\Resources\Parts\TextPart;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->embeddingModel(ModelName::Embedding)
->embedContent(
new TextPart('PHP in less than 100 chars'),
);
print_r($response->embedding->values);
// [
// [0] => 0.041395925
// [1] => -0.017692696
// ...
// ]
use GeminiAPI\Data\CachedContent;
use GeminiAPI\Data\Content;
$file = 'https://generativelanguage.googleapis.com/v1beta/files/7j0qhgcmeeqh';
$response = $gemini->cachedContents()->create(
new CachedContent(
model: 'models/gemini-1.5-flash-001',
displayName: 'sherlock jr movie',
systemInstruction: Content::createTextContent("You are an expert video analyzer, and your job is to answer the user\'s query based on the video file you have access to."),
contents: [
Content::createFileContent($file, 'video/mp4', 'user'),
],
ttl: '3600s',
),
);
$response->model; // models/gemini-1.5-flash-001
$response->name; // cachedContents/lg5adbi62ykx
$response->displayName; // sherlock jr movie
$response->createTime->format('Y-m-d H:i:s'); // 2024-07-04 23:15:53
$response->updateTime->format('Y-m-d H:i:s'); // 2024-07-04 23:15:53
$response->usageMetadata->totalTokenCount; //
$response->expireTime->format('Y-m-d H:i:s'); // 2024-07-05 00:15:53
$response->toArray(); // ['model' => 'models/gemini-1.5-flash-001', ...]
use GeminiAPI\Data\Content;
$response = $gemini->geminiPro15Flash001()->generateContentWithCache(
["cachedContent" => "cachedContents/n9l42h1iszbd"],
new TextPart("Give me the summary of the file uploaded")
);
echo $response->text();
$response = $gemini->cachedContents()->delete('cachedContents/2wojeqz7srpu');
if ($response === true) {
echo 'Successfully deleted the cached Content';
}
use GeminiAPI\Data\File;
# Example uses video downloaded from
# https://storage.googleapis.com/generativeai-downloads/data/Sherlock_Jr_FullMovie.mp4
$metaData = new File(
displayName: 'Demo File'
);
# The file was excluded from commit due to impact it'd have on cloning this repo,
# download and change path, or can upload any file of choice
$response = $gemini->media()->upload(__DIR__ .'/files/Sherlock_Jr_FullMovie.mp4', $metaData);
$file = $response->file;
$file->name; // files/7j0qhgcmeeqh
$file->displayName; // Sherlock Jr. video
$file->mimeType; // video/mp4
$file->sizeBytes; // 331623233
$file->createTime->format('Y-m-d H:i:s'); // 2024-07-27 22:31:25
$file->updateTime->format('Y-m-d H:i:s'); // 2024-07-27 22:31:25
$file->expirationTime->format('Y-m-d H:i:s'); // 2024-07-29 22:31:25
$file->sha256Hash; // ZjAwNGM2ZjJiMzNlNjYxYzYwOTU1MzU3MDliYzUzMjY4ZDUzMjNlYzdhNTdlOGJjNGFlOTczNjJlZDM0MWI1Yg==
$file->uri; // https://generativelanguage.googleapis.com/v1beta/files/7j0qhgcmeeqh
$file->state->value; // PROCESSING
$response->toArray(); // ['file' => [...]]
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->geminiPro()->countTokens(
new TextPart('PHP in less than 100 chars'),
);
print $response->totalTokens;
// 10
use GeminiAPI\Gemini;
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->listModels();
print_r($response->models);
//[
// [0] => GeminiAPI\Resources\Model Object
// (
// [name] => models/gemini-pro
// [displayName] => Gemini Pro
// [description] => The best model for scaling across a wide range of tasks
// ...
// )
// [1] => GeminiAPI\Resources\Model Object
// (
// [name] => models/gemini-pro-vision
// [displayName] => Gemini Pro Vision
// [description] => The best image understanding model to handle a broad range of applications
// ...
// )
//]
use GeminiAPI\Gemini;
use GeminiAPI\Enums\HarmCategory;
use GeminiAPI\Enums\HarmBlockThreshold;
use GeminiAPI\GenerationConfig;
use GeminiAPI\Resources\Parts\TextPart;
use GeminiAPI\SafetySetting;
$safetySetting = new SafetySetting(
HarmCategory::HARM_CATEGORY_HATE_SPEECH,
HarmBlockThreshold::BLOCK_LOW_AND_ABOVE,
);
$generationConfig = (new GenerationConfig())
->withCandidateCount(1)
->withMaxOutputTokens(40)
->withTemperature(0.5)
->withTopK(40)
->withTopP(0.6)
->withStopSequences(['STOP']);
$gemini = new Gemini('GEMINI_API_KEY');
$response = $gemini->geminiPro()
->withAddedSafetySetting($safetySetting)
->withGenerationConfig($generationConfig)
->generateContent(
new TextPart('PHP in less than 100 chars')
);
use GeminiAPI\Gemini as Gemini;
use GeminiAPI\Resources\Parts\TextPart;
use GuzzleHttp\Client as GuzzleClient;
$guzzle = new GuzzleClient([
'proxy' => 'http://localhost:8125',
]);
$gemini = new Gemini('GEMINI_API_KEY', $guzzle);
$response = $gemini->geminiPro()->generateContent(
new TextPart('PHP in less than 100 chars')
);
use GeminiAPI\Gemini;
use GeminiAPI\Resources\Parts\TextPart;
use GeminiAPI\Responses\GenerateContentResponse;
$callback = function (GenerateContentResponse $response): void {
print $response->text();
};
$ch = curl_init();
curl_setopt($ch, \CURLOPT_PROXY, 'http://localhost:8125');
$gemini = new Gemini('GEMINI_API_KEY');
$gemini->withRequestHeaders([
'User-Agent' => 'My Gemini-backed app'
])
->geminiPro()
->generateContentStream(
$callback,
[new TextPart('PHP in less than 100 chars')],
$ch,
);
shell
composer
text
echo "Hello World!";
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.