来自 llama-index 的 PandasQueryEngine 无法执行代码,并出现以下错误:语法无效(第 0 行)

问题描述 投票:0回答:1

我有以下代码。我正在尝试使用本地 llama2-chat-13B 模型。说明看起来不错,但最终输出出错了。

import logging
import sys
from IPython.display import Markdown, display

import pandas as pd
from llama_index.query_engine import PandasQueryEngine

df = pd.read_csv('./data/test.csv')
df.head()

service_context = ServiceContext.from_defaults(llm="local", embed_model="local")

query_engine = PandasQueryEngine(df=df, verbose=True, service_context=service_context)

response = query_engine.query("What is the size of the dataframe")
display(Markdown(f"<b>{response}</b>"))

这是输出:

> Pandas Instructions:

当然,我很乐意提供帮助!根据输入查询“数据帧的大小是多少?”,我们可以使用 Pandas 创建可执行的 Python 代码,如下所示:

import pandas as pd

df_size = len(df)

此代码将为我们提供数据帧的大小,即它包含的行数。

len()
函数返回列表或数组的长度,在本例中,它返回数据帧中的行数。

请注意,我们不需要在变量名称周围使用引号

df
,因为它已经定义为 pandas DataFrame 对象。另外,这里不需要
eval()
函数,因为我们只执行一个简单的 Python 表达式。

> Pandas Output: There was an error running the output as Python code. Error message: unexpected indent (<unknown>, line 1)

Traceback (most recent call last):
  File "/opt/conda/envs/llm/lib/python3.11/site-packages/llama_index/query_engine/pandas_query_engine.py", line 60, in default_output_processor
    tree = ast.parse(output)
           ^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/llm/lib/python3.11/ast.py", line 50, in parse
    return compile(source, filename, mode, flags,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<unknown>", line 1
    Sure, I'd be happy to help! Based on the input query "What is the size of the dataframe?", we can create an executable Python code using Pandas as follows:
IndentationError: unexpected indent
llama_print_timings:        load time =    3552.20 ms
llama_print_timings:      sample time =      95.95 ms /   165 runs   (    0.58 ms per token,  1719.63 tokens per second)
llama_print_timings: prompt eval time =       0.00 ms /     1 tokens (    0.00 ms per token,      inf tokens per second)
llama_print_timings:        eval time =   24428.80 ms /   165 runs   (  148.05 ms per token,     6.75 tokens per second)
llama_print_timings:       total time =   24965.81 ms
There was an error running the output as Python code. Error message: unexpected indent (, line 1)

这可能是因为我没有使用 OpenAI 吗?任何解决此问题的线索都将受到赞赏。 PandasQueryEngine 是否有任何替代方案,可以与我选择的任何模型一起使用,以使用自然语言分析数据帧?

我尝试了上面的代码,并期望它将 df_size 打印为 Pandas 输出。

pandas large-language-model llama-index llama-cpp-python
1个回答
0
投票

我有一个解决办法。而不是 Pandas 查询引擎,它会抛出很多错误。您可以使用 Pandas AI,也可以将 csv 数据导入到 sqllite db 并使用 SQL Engine

© www.soinside.com 2019 - 2024. All rights reserved.