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

使用OpenAI API(v0.28.0)时遇TypeError错误求助

问题排查:TypeError: string indices must be integers, not 'str'

错误原因

报错根源在提取翻译文本的代码行:translated_text = response.choices[0].message["content"]["body"]。在OpenAI 0.28.0版本的ChatCompletion响应结构中,message["content"]本身就是字符串类型的翻译结果,并非嵌套字典。对字符串使用["body"]这种字典索引操作,直接触发了类型错误。

修复方案

将错误的提取代码替换为直接获取message["content"]:

translated_text = response.choices[0].message["content"].strip()

完整修复后的代码

import requests
from bs4 import BeautifulSoup
from docx import Document
import openai

# 设置OpenAI API密钥
openai.api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 要爬取的网站URL
website_url = "https://somesite.com"

# 发送GET请求获取网页内容
response = requests.get(website_url)

# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.content, "html.parser")

# 提取长度超过100字符的文本块
text_blocks = []
for paragraph in soup.find_all("p"):
    text = paragraph.get_text().strip()
    if len(text) >= 100:
        text_blocks.append(text)

# 使用OpenAI Chat API将文本块从英文翻译为德文
translated_text_blocks = []
for text_block in text_blocks:
    chat_input = f"Translate the following English text to German: '{text_block}'"
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": chat_input},
        ],
    )

    # 正确提取翻译后的文本
    translated_text = response.choices[0].message["content"].strip()
    translated_text_blocks.append(translated_text)

# 创建Word文档并保存翻译内容
document = Document()
for translated_text in translated_text_blocks:
    document.add_paragraph(translated_text)
document.save("translated_content.docx")

验证说明

修复后代码直接获取API返回的翻译字符串,避免对字符串执行字典索引操作,即可解决该TypeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:20:00