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

Gemini API报错:GenerativeModel.generate_content()收到意外参数'temperature'

解决GenerativeModel.generate_content()参数错误问题

错误原因

generate_content()函数不支持直接传入temperature、top_k这类生成参数,这些参数需要封装到generation_config参数中传递,而非作为独立关键字参数传入。

修正后的代码

import google.generativeai as genai

def query_gemini(model_name="models/gemini-pro", temperature=0.7, top_k=40, top_p=0.95, max_output_tokens=1024):
    """Configures parameters for the Gemini model."""
    return {
        'model': model_name,
        'temperature': temperature,
        'max_output_tokens': max_output_tokens,
        'top_p': top_p,
        'top_k': top_k
    }

def get_completion(params, messages):
    """Generates text using the Gemini API."""
    model_name = params['model']

    # 创建模型实例
    model = genai.GenerativeModel(model_name=model_name)

    # 生成配置封装到generation_config字典中
    generation_config = {
        "temperature": params['temperature'],
        "candidate_count": 1,
        "top_k": params['top_k'],
        "top_p": params['top_p'],
        "max_output_tokens": params['max_output_tokens'],
    }

    # 调整消息格式以符合Gemini API要求
    adjusted_messages = [{"role": msg["role"], "parts": [msg["content"]]} for msg in messages]
    # 正确传递参数:将generation_config作为关键字参数传入
    response = model.generate_content(adjusted_messages, generation_config=generation_config)
    
    # 提取响应内容
    if response.candidates:
        return response.candidates[0].content.parts[0].text
    else:
        return None

params = query_gemini()
messages = [
    {"role": "user", "content": "What are the main benefits of renewable energy?"}
]
response_text = get_completion(params, messages)
print(response_text)

额外说明

  • 模型选择:原代码使用的models/chat-bison-001是PaLM 2系列模型,若需使用Gemini模型,建议替换为models/gemini-pro(文本模型)或models/gemini-pro-vision(多模态模型)。
  • 多轮对话优化:如果是多轮对话场景,更推荐使用ChatSession处理历史消息,示例代码如下:
def get_completion(params, messages):
    model_name = params['model']
    model = genai.GenerativeModel(model_name=model_name)
    generation_config = {
        "temperature": params['temperature'],
        "candidate_count": 1,
        "top_k": params['top_k'],
        "top_p": params['top_p'],
        "max_output_tokens": params['max_output_tokens'],
    }
    # 转换历史消息格式
    chat_history = [{"role": msg["role"], "parts": [msg["content"]]} for msg in messages[:-1]]
    chat = model.start_chat(history=chat_history)
    # 发送最新消息并获取响应
    response = chat.send_message(messages[-1]["content"], generation_config=generation_config)
    return response.text if response else None

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:32:39