OpenAI API v1.0.0兼容问题:名片生成项目报错求助
OpenAI v1.0.0 适配指南(Streamlit名片生成项目)
核心修改要点
- 客户端初始化:从全局设置API密钥改为创建
OpenAI类实例 - 图片生成调用:将
openai.Image.create()替换为client.images.generate() - 响应解析:返回数据结构基本兼容,仅调用方式从字典索引改为属性访问
旧版本问题代码示例
import streamlit as st import openai openai.api_key = st.secrets["OPENAI_API_KEY"] def generate_business_card(user_info): prompt = f"生成专业名片:{user_info},风格简洁商务" response = openai.Image.create( prompt=prompt, n=1, size="1024x1024" ) return response['data'][0]['url'] # Streamlit UI st.title("智能名片生成器") user_input = st.text_area("输入个人/公司信息:") if st.button("生成名片"): card_url = generate_business_card(user_input) st.image(card_url, caption="生成的名片")
适配OpenAI v1.0.0+的代码
import streamlit as st from openai import OpenAI # 初始化OpenAI客户端 client = OpenAI(api_key=st.secrets["OPENAI_API_KEY"]) def generate_business_card(user_info): prompt = f"生成专业名片:{user_info},风格简洁商务" # 替换为新版本图片生成方法 response = client.images.generate( prompt=prompt, n=1, size="1024x1024" ) # 响应解析逻辑与旧版本兼容,仅改为属性访问 return response.data[0].url # Streamlit UI部分无需修改 st.title("智能名片生成器") user_input = st.text_area("输入个人/公司信息:") if st.button("生成名片"): card_url = generate_business_card(user_input) st.image(card_url, caption="生成的名片")
关键说明
- 客户端实例化是v1.0.0+的强制要求,不再支持全局
openai.api_key的设置方式 client.images.generate()的参数与旧方法完全一致,无需调整业务逻辑- 响应数据的结构未发生本质变化,仅从字典键值对改为对象属性访问,原有逻辑可直接复用
内容的提问来源于stack exchange,提问作者SAV
相关产品推荐
相关产品推荐

