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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:17:35