GeminiAPI User location is not supported for the API use.のエラーがでた

ショコラ
ショコラ

GeminiAPI User location is not supported for the API use.のエラーがでた

GeminiAPIを使用したところ、突然「User location is not supported for the API use.」のエラーがでた。
何時間待っても直らなかった。
同じサーバー会社の別のサーバーからだとアクセスできることが分かった。
ということで、別のサーバーにプロクシを立てて、GeminiAPI を使うように一時的に回避したお話です。

もっさん先輩
もっさん先輩

別のサーバーは squid:3.3.8-23 を使って一発でプロキシサーバーにします。

docker run --rm --name squid -p 3128:3128 sameersbn/squid:3.3.8-23

↓バックグラウンドで実行は -d をつける。

docker run -d --rm --name squid -p 3128:3128 sameersbn/squid:3.3.8-23

cURL でプロキシの動作確認をしてみましょう。

curl https://answorz.com --proxy http://localhost:3128

google-gemini-php/laravel のソースをプロクシを使うように修正します。

    public function make(): Client
    {
        // Guzzle を手動で作成してプロキシを設定
        if ($proxy = env('GEMINI_PROXY')) {
            $this->httpClient = new GuzzleClient(['proxy'=> $proxy]);
        }

        $client = $this->httpClient ??= Psr18ClientDiscovery::find();

        if ($this->apiKey !== null) {
            $this->headers['x-goog-api-key'] = trim($this->apiKey);
        }

        $streamHandler = $this->makeStreamHandler($client);

        $transporter = new HttpTransporter(
            client: $client,
            baseUrl: $this->baseUrl,
            headers: $this->headers,
            queryParams: $this->queryParams,
            streamHandler: $streamHandler,
        );

        return new Client(transporter: $transporter);
    }

後は、.envにGEMINI_PROXYを設定します。

GEMINI_API_KEY=xxxx
GEMINI_PROXY=http://192.168.1.52:3128

以上

Scroll to Top