运行OpenAI Cookbook聊天机器人遇TypeError问题求助
问题解决:OpenAI Cookbook聊天机器人提交输入时报TypeError
错误原因
报错TypeError: string indices must be integers是因为代码把字符串当作字典来访问了。具体来说,chatbot.py第61行的assistant_response['content']中,assistant_response实际是一个字符串,却被用字典索引['content']调用,导致类型错误。
修复步骤
1. 修正chatbot.py的API响应解析逻辑
打开apps/chatbot-kickstarter/chatbot.py,定位到ask_assistant方法里调用OpenAI API的代码段,分两种情况调整:
如果代码直接提取了响应文本字符串(错误写法示例):
# 错误写法:直接将content字符串赋值给assistant_response assistant_response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages )['choices'][0]['message']['content']则把第61行的判断代码改成直接使用字符串:
# 修改第61行 if 'searching for answers' in assistant_response.lower():如果代码期望
assistant_response是包含content字段的字典,则调整API响应提取方式:# 正确写法:保留完整的message字典 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages ) assistant_response = response['choices'][0]['message']这样
assistant_response['content']就能正确访问到响应文本。
2. 确认API密钥配置有效性
虽然当前错误不是认证问题,仍需确保配置正确:
.env文件格式为OPENAI_API_KEY=你的API密钥chatbot.py中的密钥赋值代码要放在API调用之前:import os import openai openai.api_key = os.getenv("OPENAI_API_KEY")
3. 重启应用
执行命令重新启动Streamlit应用:
streamlit run apps/chatbot-kickstarter/chat.py
内容的提问来源于stack exchange,提问作者torano
相关产品推荐
相关产品推荐

