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

如何从OpenAI Completion.create响应中提取text字段?报错解决

正确提取OpenAI Completion响应中的text字段

错误原因

你使用的keywords.values.text存在两处问题:

  1. values是字典的内置方法,需要通过values()调用,但即便调用后,它返回的是响应中所有值的迭代器,无法直接获取text字段。
  2. 响应结构中text字段嵌套在choices列表的第一个元素里,你的访问路径完全错误。

正确提取方式

方式1:按字典结构访问(兼容返回对象/字典的情况)

调用generate_keywords后,按层级提取text:

keywords = generate_keywords(article)
# 从choices列表的第一个元素中提取text
generated_text = keywords['choices'][0]['text']
print(generated_text)

方式2:通过对象属性访问(OpenAI API返回的响应支持点号调用)

如果返回的是OpenAI的响应对象,也可以用点号直接访问属性:

keywords = generate_keywords(article)
generated_text = keywords.choices[0].text
print(generated_text)

优化建议:直接在函数内返回text

可以修改generate_keywords函数,让它直接返回提取后的text(用strip()可去除首尾多余空白):

# 从文章生成关键词
def generate_keywords(article):
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=article,
        temperature=0.7,
        max_tokens=60,
        top_p=1.0,
        frequency_penalty=0.0,
        presence_penalty=1
    )
    # 提取text并去除首尾空白后返回
    return response['choices'][0]['text'].strip()

调用时直接获取结果:

generated_text = generate_keywords(article)
print(generated_text)

内容的提问来源于stack exchange,提问作者wilfredo.mateo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:22:49