我在VS Code中创建一个聊天机器人,它将通过Streamlit界面的提示接收csv文件。然而,从文件加载的那一刻起,它就显示了一条包含以下内容的消息:
值错误:此代理依赖于可以执行任意代码的Python REPL工具。这可能是危险的,需要一个特别的沙箱环境才能安全使用。请阅读此函数文档字符串中的安全通知。您必须通过设置allow_dangerous_code=True来选择使用此功能。有关一般安全指南,请参见:https://python.langchain.com/v0.2/docs/security/
追溯
File "c:\Users\ \langchain-ask-csv\.venv\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 589, in _run_script exec(code, module.__dict__)File "C:\Users\ \langchain-ask-csv\main.py", line 46, in <module> main()File "C:\Users\ \langchain-ask-csv\main.py", line 35, in main agent = create_csv_agent( OpenAI(), csv_file, verbose=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "c:\Users\\langchain-ask-csv\.venv\Lib\site-packages\langchain_experimental\agents\agent_toolkits\csv\base.py", line 66, in create_csv_agent return create_pandas_dataframe_agent(llm, df, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "c:\Users\ T\langchain-ask-csv\.venv\Lib\site-packages\langchain_experimental\agents\agent_toolkits\pandas\base.py", line 248, in create_pandas_dataframe_agent raise ValueError(
这是我传递文件的代码的一部分:
def main(): load_dotenv() # 从环境变量中加载OpenAI API密钥 if os.getenv("OPENAI_API_KEY") is None or os.getenv("OPENAI_API_KEY") == "": print("OPENAI_API_KEY未设置") exit(1) else: print("OPENAI_API_KEY已设置") st.set_page_config(page_title="询问您的CSV") st.header("询问您的CSV 📈") csv_file = st.file_uploader("上传一个CSV文件", type="csv") if csv_file is not None: agent = create_csv_agent( OpenAI(), csv_file, verbose=True) user_question = st.text_input("关于您的CSV提问:") if user_question is not None and user_question != "": with st.spinner(text="处理中..."): st.write(agent.run(user_question)) if __name__ == "__main__": main()
我查看了建议的链接,也尝试搜索类似报告,但没有成功。
可能出了什么问题,如何修复它?
回答:
只需按照消息的指示去做。进行安全分析,为您的程序创建一个沙箱环境,然后在传递给create_csv_agent
的参数中添加allow_dangerous_code=True
,该参数会直接传递给create_pandas_dataframe_agent
,并在沙箱中运行它。