You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更优且简洁地验证Gemini API Key?

更优的Gemini API Key验证方式?有没有更简洁的Python实现?

我目前用Python结合curl命令验证Gemini API Key,代码如下:

import subprocess
import json

def verifiy_api_key(api_key):
    comand_curl = f"""curl -s -H 'Content-Type: application/json' \
                     -d '{{"contents":[
                               {{"role": "user",
                                 "parts":[{{"text": "Give me five subcategories of jazz?"}}]}}]}}' \
                     "https://generativelanguage.googleapis.com/v1/models/gemini-1.0-pro:generateContent?key={api_key}" """

    result = subprocess.run(comand_curl, shell=True, text=True, capture_output=True)
    
    response_json = json.loads(result.stdout)
    # Verify curl sucess
    if result.check_returncode:
      #verify valid api Key
      if response_json.get("error"):
        print("Invalid Key")
        return False
      else:
        print("Valid Key")
        return True
    else:
      print("Error in curl.")
      return False
        

# Replace 'YOUR_API_KEY' with your actual API key
GOOGLE_API_KEY = input('Type API Key: ')
while(verifiy_api_key(GOOGLE_API_KEY) == False):
  print("Try Again")
  GOOGLE_API_KEY = input('Type API Key: ')

想咨询:是否存在更优的Gemini API Key验证方式?有没有更简洁的实现方法?(我还在学习阶段,代码不足请忽略)


当然有更优、更简洁的实现方式,推荐两种方案:

方案1:使用Google官方Gemini Python SDK

Google提供了专门的Python库google-generativeai,封装了API调用、认证、错误处理等逻辑,完全不需要依赖curl或subprocess,代码更简洁且符合Python风格。

步骤:

  1. 先安装SDK:
pip install google-generativeai
  1. 验证API Key的实现代码:
import google.generativeai as genai

def verify_api_key(api_key):
    genai.configure(api_key=api_key)
    try:
        # 调用轻量请求验证(比复杂问题更高效)
        model = genai.GenerativeModel('gemini-1.0-pro')
        model.generate_content("hi")
        print("Valid Key")
        return True
    except Exception as e:
        # 精准捕获认证类错误
        if "API key not valid" in str(e) or "Permission denied" in str(e):
            print("Invalid Key")
        else:
            print(f"Request error: {str(e)}")
        return False

GOOGLE_API_KEY = input('Type API Key: ')
while not verify_api_key(GOOGLE_API_KEY):
    print("Try Again")
    GOOGLE_API_KEY = input('Type API Key: ')

优势:

  • 避免shell调用的安全风险(比如API Key含特殊字符时可能触发命令注入)
  • 官方库自动处理HTTP请求、JSON序列化/反序列化,无需手动拼接复杂请求体
  • 错误类型更明确,能区分无效Key、网络错误等不同问题

方案2:用requests库替代curl

如果不想用官方SDK,也可以用Python标准生态里的requests库发送HTTP请求,比subprocess调用curl更简洁可控。

步骤:

  1. 安装requests(若未安装):
pip install requests
  1. 实现代码:
import requests

def verify_api_key(api_key):
    url = f"https://generativelanguage.googleapis.com/v1/models/gemini-1.0-pro:generateContent?key={api_key}"
    headers = {"Content-Type": "application/json"}
    # 用极简请求体减少数据传输
    payload = {
        "contents": [{"role": "user", "parts": [{"text": "hi"}]}]
    }
    
    try:
        response = requests.post(url, headers=headers, json=payload)
        response.raise_for_status()  # 触发HTTP错误(如401、403)
        print("Valid Key")
        return True
    except requests.exceptions.HTTPError as e:
        if response.status_code in (401, 403):
            print("Invalid Key")
        else:
            print(f"HTTP error: {e}")
        return False
    except Exception as e:
        print(f"Request error: {e}")
        return False

GOOGLE_API_KEY = input('Type API Key: ')
while not verify_api_key(GOOGLE_API_KEY):
    print("Try Again")
    GOOGLE_API_KEY = input('Type API Key: ')

优势:

  • 不依赖系统curl命令,跨平台兼容性更好
  • 直接操作HTTP请求和响应,代码可读性更高
  • 避免手动拼接复杂curl命令字符串,减少语法错误

内容的提问来源于stack exchange,提问作者Filipe Abner Soares Melo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:26:10