Laravel 11集成Gemini报Syntax error错误求助
解决Gemini Laravel扩展的UnserializableResponse异常
检查扩展版本兼容性
执行以下命令查看当前扩展版本,确保与Laravel 11兼容:composer show google-gemini-php/laravel若版本过旧,执行更新:
composer update google-gemini-php/laravel捕获原始响应排查问题
临时添加日志中间件,打印Gemini返回的原始响应,确认是否存在格式错误:use Illuminate\Support\Facades\Http; use Gemini\Laravel\Facades\Gemini; use Illuminate\Support\Facades\Log; // 注册日志中间件 Http::macro('logGeminiResponse', function () { return $this->withMiddleware(function ($handler) { return function ($request, $options) use ($handler) { $response = $handler($request, $options); Log::info('Gemini原始响应', ['响应内容' => $response->body()]); return $response; }; }); }); // 带日志调用Gemini $result = Gemini::geminiPro()->withHttpClient(Http::logGeminiResponse())->generateContent("hello");查看Laravel日志(storage/logs/laravel.log),如果响应不是标准JSON格式,大概率是API密钥无效、权限不足或请求参数异常导致的错误响应。
验证API配置
检查.env文件中的GEMINI_API_KEY是否正确,确保无多余空格或特殊字符;同时确认该API密钥已开通Gemini Pro模型的调用权限。绕过扩展封装直接请求
如果扩展的反序列化逻辑存在兼容问题,可以直接通过HTTP请求调用API:use Illuminate\Support\Facades\Http; $apiKey = env('GEMINI_API_KEY'); $response = Http::withHeaders([ 'Authorization' => "Bearer {$apiKey}", 'Content-Type' => 'application/json', ])->post('https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent', [ 'contents' => [ [ 'parts' => [['text' => 'hello']] ] ] ]); if ($response->successful()) { $data = $response->json(); // 自行处理返回的生成内容 $generatedText = $data['candidates'][0]['content']['parts'][0]['text']; } else { // 处理错误 $error = $response->json(); }
内容的提问来源于stack exchange,提问作者nikoo
相关产品推荐
相关产品推荐

