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

解决TypeError: 'ChatCompletion'不可下标问题及Reddit机器人报错

问题修复方案

核心错误原因

你遇到的TypeError: 'ChatCompletion' object is not subscriptable,是因为OpenAI Python SDK v1版本返回的是对象实例而非字典,不能用[]下标访问属性,必须使用.点语法读取。

其他代码问题及修复

除核心错误外,代码还存在以下问题需修正:

  • detailed_prompt定义不完整,且后续代码结构混乱(try-except块直接接在字符串定义后,导致语法错误)
  • API密钥获取方式错误:os.environ.get()参数应为环境变量名,而非密钥本身
  • 缺少必要的模块导入语句
  • 无关的微调代码块位置错误,干扰正常逻辑执行

修复后的完整代码

import os
from dotenv import load_dotenv
import openai

# 加载环境变量
load_dotenv()

# 初始化OpenAI客户端
client = openai.OpenAI(
    api_key=os.environ.get("OPENAI_API_KEY")  # 从.env文件读取API密钥
)

# 定义提示模板
detailed_prompt = """
作为投资专家Prospero的CEO George Kailas,请针对以下Reddit帖子给出专业投资建议:
[Your Reddit Post Here]
"""

# 生成回复的函数
def generate_response(prompt):
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are George Kailas, an expert in investing and the CEO of Prospero."},
            {"role": "user", "content": prompt}
        ],
        max_tokens=150,
        temperature=0.7
    )
    # 使用点语法访问ChatCompletion对象属性
    return response.choices[0].message.content.strip()

# 测试Reddit帖子回复
reddit_post = "What are some good resources to learn about stock market investing?"
formatted_prompt = detailed_prompt.replace("[Your Reddit Post Here]", reddit_post)
response = generate_response(formatted_prompt)
print(response)

额外注意事项

  • 确保.env文件中设置OPENAI_API_KEY=你的密钥
  • 若不需要微调功能,可删除原代码中client.fine_tuning.jobs.create相关代码块
  • 后续若遇API错误(如连接失败、速率限制),可在generate_response函数中添加对应异常捕获逻辑

内容的提问来源于stack exchange,提问作者Beata Tali Gold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:33:27