我有以下代码。我正在尝试使用本地 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 查询引擎,它会抛出很多错误。您可以使用 Pandas AI,也可以将 csv 数据导入到 sqllite db 并使用 SQL Engine