Bug描述
我使用PandasQueryEngine查询大型数据库,但它给出了以下错误输出:
Pandas指令:
df['gl'].apply(lambda x: x['Account']).value_counts()
Traceback (most recent call last):
File "c:\Users\tytun\anaconda3\envs\pulse_ai\Lib\site-packages\llama_index\experimental\query_engine\pandas\output_parser.py", line 54, in default_output_processor
output_str = str(safe_eval(module_end_str, global_vars, local_vars))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\tytun\anaconda3\envs\pulse_ai\Lib\site-packages\llama_index\experimental\exec_utils.py", line 159, in safe_eval
return eval(__source, _get_restricted_globals(__globals), __locals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 1, in <module>
NameError: name 'p' is not defined
但奇怪的是,在上面的Pandas指令中没有显示“p”。
版本
llama-index 0.11.0
重现步骤
from llama_index.experimental.query_engine import PandasQueryEngine
from llama_index.llms.vertex import Vertex
import pandas as pd
def process_large_dataset_with_llamaindex(data: Dict[str, Any], query: str) -> str:
"""Process large dataset with LlamaIndex."""
df = pd.DataFrame(data)
vertex_gemini = Vertex(model="gemini-1.5-flash", temperature=0, additional_kwargs={})
query_engine = PandasQueryEngine(df=df, verbose=True, llm=vertex_gemini)
response = query_engine.query(query)
return str(response)
result = <some large database here>
user_query = "summarize the data"
llamaindex_response = process_large_dataset_with_llamaindex(result, user_query)
相关日志/回溯
- 无响应*
3条答案
按热度按时间2nbm6dog1#
我找到了一个与你的问题可能相关的相似问题。标题为 "[Bug]: Pandas 输出:在运行输出为 Python 代码时出现错误。错误信息:名称 'p' 未定义" 的问题仍处于打开状态,最后更新于2024年7月24日。建议的解决方案是确保绘图库(如
matplotlib.pyplot
作为plt
)正确导入和使用 1(https://github.com/run-llama/llama_index/issues/13800)。此外,
NameError: name 'p' is not defined
的发生是因为PandasQueryEngine
在llama-index 0.11.0
中已被弃用,并在初始化时引发了DeprecationWarning
。提供的代码没有定义或使用名为 'p' 的变量,错误很可能源于尝试使用已弃用的PandasQueryEngine
。要解决此问题,你应该按照弃用警告中的指示从
llama-index-experimental
包中使用PandasQueryEngine
。安装该包并从那里导入PandasQueryEngine
:这是你的代码的更新版本:
这应该通过使用更新后的
PandasQueryEngine
实现来解决NameError
问题 2(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/query_engine/pandas/pandas_query_engine.py)3(https://github.com/run-llama/llama_index/blob/main/llama-index-experimental/llama_index/experimental/query_engine/pandas/pandas_query_engine.py)。tpgth1q72#
我尝试了你的代码,仍然出现了相同的错误。@dosu
tv6aics13#
NameError: name 'p' is not defined
发生是因为变量p
在被使用的范围内未定义。在llama-index-experimental
包的PandasQueryEngine
上下文中,如果生成的 Pandas 代码(使用eval()
执行)引用了一个未定义的变量p
,就会出现这个错误。要调试此问题,您可以在执行之前打印生成的 Pandas 指令,以查看是否有对未定义变量的引用。以下是
_query
方法中的一个代码片段,您可以在其中添加 print 语句来调试生成的 Pandas 指令:通过添加 print 语句,您可以检查生成的 Pandas 指令,并确保代码中使用的所有变量都已正确定义 1(https://github.com/run-llama/llama_index/blob/main/llama-index-experimental/llama_index/experimental/query_engine/pandas/pandas_query_engine.py)。