1. Go to this page and download the library: Download 0xmergen/zai-laravel-sdk 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/ */
0xmergen / zai-laravel-sdk example snippets
use Zai\LaravelSdk\Facades\ZaiSdk;
use Zai\LaravelSdk\DataTransferObjects\ChatCompletionRequest;
use Zai\LaravelSdk\Constants\ChatModel;
$request = ChatCompletionRequest::make(
model: ChatModel::GLM_4_7,
messages: [
['role' => 'user', 'content' => 'Explain quantum computing in simple terms.']
]
);
$response = ZaiSdk::chatCompletion($request);
echo $response->content();
// "Quantum computing is a type of computation that..."
$request = ChatCompletionRequest::make(ChatModel::GLM_4_7, $messages)
->withTemperature(0.7) // 0.0 - 1.0 (default varies by model)
->withTopP(0.9) // 0.01 - 1.0
->withMaxTokens(2000) // Maximum tokens to generate
->withUser('user-123'); // User identifier for tracking
$request = ChatCompletionRequest::make(ChatModel::GLM_4_7, $messages)
->withStreaming();
foreach (ZaiSdk::chatCompletionStream($request) as $chunk) {
echo $chunk; // Stream each chunk as it arrives
ob_flush();
flush();
}
use Zai\LaravelSdk\Facades\ZaiSdk;
use Zai\LaravelSdk\DataTransferObjects\ImageGenerationRequest;
use Zai\LaravelSdk\Constants\ImageModel;
$request = ImageGenerationRequest::make(
model: ImageModel::GLM_IMAGE,
prompt: 'A serene mountain landscape at sunset, digital art style'
);
$response = ZaiSdk::imageGeneration($request);
echo $response->imageUrl(); // URL to the generated image (expires in 30 days)
$request = ImageGenerationRequest::make(ImageModel::GLM_IMAGE, $prompt)
->withQuality(ImageModel::QUALITY_HD) // 'hd' or 'standard'
->withSize('1728x960') // Width x Height
->withUser('user-123');
// Recommended sizes for glm-image:
// 1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960, 960x1728
$urls = $response->imageUrls(); // Array of all generated image URLs
foreach ($urls as $url) {
echo $url . "\n";
}
use Zai\LaravelSdk\Facades\ZaiSdk;
use Zai\LaravelSdk\DataTransferObjects\LayoutParsingRequest;
use Zai\LaravelSdk\Constants\OcrModel;
// From URL or base64
$request = LayoutParsingRequest::make('https://example.com/document.pdf')
->withPageRange(1, 5) // Pages 1-5 only
->withLayoutVisualization() // Get visual layout images
->withRequestId('unique-request-id')
->withUserId('user-123');
$response = ZaiSdk::layoutParsing($request);
// Get Markdown format
echo $response->md_results();
// Extract specific elements
$tables = $response->tables(); // All tables across pages
$images = $response->images(); // All detected images
$texts = $response->allTextContent(); // All text elements
// Page-specific access
$elements = $response->pageElements(1); // Elements on page 1
echo "Page 1 has " . $response->elementCount(1) . " elements";
// Access individual element details
foreach ($elements as $element) {
if ($element->isTable()) {
echo "Table at: " . json_encode($element->boundingBox()) . "\n";
echo "Content: " . $element->content . "\n";
}
}
// Document info
echo "Total pages: " . $response->data_info->num_pages;
use Zai\LaravelSdk\ZaiSdk;
use Zai\LaravelSdk\DataTransferObjects\ChatCompletionRequest;
class ChatService
{
public function __construct(
private readonly ZaiSdk $zai
) {}
public function generateResponse(string $userMessage): string
{
$request = ChatCompletionRequest::make('glm-4.7', [
['role' => 'user', 'content' => $userMessage]
]);
$response = $this->zai->chatCompletion($request);
return $response->content();
}
}
use Zai\LaravelSdk\Exceptions\{
ZaiApiException,
ZaiAuthenticationException,
ZaiRateLimitException,
ZaiValidationException
};
try {
$response = ZaiSdk::chatCompletion($request);
} catch (ZaiAuthenticationException $e) {
// Invalid API key, expired token, etc.
logger()->error('ZAI Authentication failed: ' . $e->getMessage());
} catch (ZaiRateLimitException $e) {
// Rate limit exceeded, high concurrency, etc.
logger()->warning('ZAI rate limit: ' . $e->getMessage());
// Check if retryable
if ($e->isRetryable()) {
sleep(1);
// Retry request
}
} catch (ZaiValidationException $e) {
// Invalid parameters, unsupported model, etc.
logger()->error('Validation error: ' . $e->getMessage());
} catch (ZaiApiException $e) {
// General API error
logger()->error('ZAI error: ' . $e->getMessage());
logger()->error('Error code: ' . $e->errorCode);
}