如何从OpenAI Completion.create响应中提取text字段?报错解决
正确提取OpenAI Completion响应中的text字段
错误原因
你使用的keywords.values.text存在两处问题:
values是字典的内置方法,需要通过values()调用,但即便调用后,它返回的是响应中所有值的迭代器,无法直接获取text字段。- 响应结构中
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
相关产品推荐
相关产品推荐

