Ruby使用ruby-openai gem报错:undefined method `api_key=' for OpenAI:Module
问题解决:
undefined method api_key= for OpenAI:Module 这个错误是因为ruby-openai 7.x版本彻底改变了API初始化方式,旧版本的全局OpenAI.api_key=设置方法已被移除,必须通过创建客户端实例来配置密钥。同时,原有的engine参数也已更名为model,需要同步修改。
修改后的完整代码
require 'openai' # 创建客户端实例并配置API密钥 client = OpenAI::Client.new( access_token: "your_api_key_here" ) # 调整函数,使用客户端实例调用API def generate_text(client, prompt, temperature=0.7, max_tokens=100, top_p=1.0) begin response = client.completions.create( model: "text-davinci-002", # 原engine参数已更名为model prompt: prompt, temperature: temperature, max_tokens: max_tokens, top_p: top_p, n: 1, stop: nil, echo: false ) return response.dig("choices", 0, "text").strip rescue StandardError => e puts "Error generating text: #{e.message}" return nil end end # 调用函数时传入客户端实例 prompt = "Translate the following English text to French: 'Hello, how are you?'" generated_text = generate_text(client, prompt) puts "Generated text: #{generated_text}"
关键修改点
- 移除
OpenAI.api_key=,改用OpenAI::Client.new(access_token: "你的密钥")创建客户端 - 将
OpenAI::Completion.create改为client.completions.create(方法名从大写Completion改为小写completions) - 将参数
engine改为model,这是v7.x版本的命名规范 - 响应解析从
response.choices.first.text改为response.dig("choices", 0, "text"),因为v7.x返回的是哈希而非对象结构
内容的提问来源于stack exchange,提问作者Mark Locklear
相关产品推荐
相关产品推荐

