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
相关产品推荐
相关产品推荐

