编程

整合 Gemini 的 Laravel 包

10 2026-01-29 11:36:00

由 Hossein Hezami 开发的适用于 Laravel 的 Gemini 软件包,旨在与 Google Gemini API 集成。它支持文本、图像、视频、音频、长文本上下文、结构化输出、函数调用和理解等功能。

// Text
$textResponse = Gemini::text()
    ->model('gemini-2.5-flash')
    ->system('You are a helpful assistant.')
    ->prompt('Write a conversation between human and Ai')
    ->history([
        ['role' => 'user', 'parts' => [['text' => 'Hello AI']]],
        ['role' => 'model', 'parts' => [['text' => 'Hello human!']]]
    ])
    ->temperature(0.7)
    ->maxTokens(1024)
    ->generate();
 
echo $textResponse->content();
 
// Document understanding
$response = Gemini::text()
    ->upload('document', $filePath) // image, video, audio, document
    ->prompt('Extract the key points from this document.')
    ->generate();
 
echo $response->content();
 
 
// Image builder
$response = Gemini::image()
    ->model('gemini-2.5-flash-image-preview')
    ->method('generateContent')
    ->prompt('A futuristic city skyline at sunset.')
    ->generate();
 
$response->save('image.png');
 
//
// Files API
//
 
// Upload a file
$uri = Gemini::files()->upload('document', $pathToFile);
 
// List all files
$files = Gemini::files()->list();
 
// Get file details
$fileInfo = Gemini::files()->get($file_id);
 
// Delete a file
$success = Gemini::files()->delete($file_id);

该软件包还支持使用 stream() 方法进行流式响应:

return response()->stream(function () use ($request) {
    Gemini::text()
        ->model('gemini-2.5-flash')
        ->prompt('Tell a long story about artificial intelligence.')
        ->stream(function ($chunk) {
            $text = $chunk['text'] ?? '';
            if (!empty(trim($text))) {
                echo "data: " . json_encode(['text' => $text]) . "\n\n";
                ob_flush();
                flush();
            }
        });
}, 200, [
    'Content-Type' => 'text/event-stream',
    'Cache-Control' => 'no-cache',
    'Connection' => 'keep-alive',
    'X-Accel-Buffering' => 'no',
]);

主要功能

  • 基于上下文和历史记录的文本生成
  • 图像生成和理解
  • 视频生成和分析
  • 音频合成和转录
  • 文档处理和理解
  • 嵌入向量生成
  • 文件管理功能
  • 实时流式响应
  • 可配置的安全设置

你可以在 GitHub 上的 hosseinhezami/laravel-gemini 项目页面了解更多关于此软件包的信息、获取完整的安装说明并查看源代码。该项目的 README 文件包含有关如何使用此软件包的文档。