调用OpenAI Embedding API报错:'CreateEmbeddingResponse'对象不可下标访问
OpenAI Embedding API调用报错解决方案
你运行OpenAI官网的Embedding示例代码时,遇到了如下错误:
TypeError: 'CreateEmbeddingResponse' object is not subscriptable
(中文翻译:类型错误:'CreateEmbeddingResponse'对象不可通过下标访问)
问题出在新的OpenAI Python SDK(v1及以上版本)的返回值结构上——它返回的是对象实例,而非旧版本的字典,因此不能用[]下标方式访问数据。
修正后的代码
from openai import OpenAI client = OpenAI() def get_embedding(text, model="text-embedding-ada-002"): text = text.replace("\n", " ") # 替换下标访问为属性访问 return client.embeddings.create(input = [text], model=model).data[0].embedding df['embedding'] = df.ITEM_DESCRIPTION.apply(lambda x: get_embedding(x, model='text-embedding-ada-002')) df.to_csv('embedded_output.csv', index=False)
关键修改点
将原代码中返回语句的下标访问:
client.embeddings.create(input = [text], model=model)['data'][0]['embedding']
替换为属性访问:
client.embeddings.create(input = [text], model=model).data[0].embedding
内容的提问来源于stack exchange,提问作者Jovin Synott
相关产品推荐
相关产品推荐

