你可以训练PandasAI以更好地理解你的数据并提高其性能。训练就像在Agent上调用train方法一样简单。

有两种训练方式:

  • 指令训练
  • 问答训练

先决条件

在开始训练PandasAI之前,您需要设置您的PandasAI API密钥。您可以通过在https://pandabi.ai注册来生成您的API密钥。

然后你可以将你的API密钥设置为环境变量:

import os

os.environ["PANDASAI_API_KEY"] = "YOUR_PANDASAIAPI_KEY"

设置API密钥非常重要,否则会出现以下错误:No vector store provided. Please provide a vector store to train the agent

指令训练

指令训练用于教PandasAI如何响应某些查询。您可以提供关于您期望模型如何处理某些类型查询的通用指令,PandasAI将使用这些指令生成对类似查询的响应。

例如,您可能希望LLM知道您公司的财年从四月开始,或者关于您希望处理缺失数据的具体方式。或者,您可能希望教它关于特定于您组织的具体业务规则或数据分析最佳实践。

要使用指令训练PandasAI,你可以在Agent上使用train方法,如下所示:

训练默认使用BambooVectorStore来存储训练数据,并且可以通过API密钥访问。

作为替代方案,如果您想使用本地向量存储(仅限企业用于生产用例),您可以使用ChromaDBQdrantPinecone向量存储(见下面的示例)。

from pandasai import Agent

# Set your PandasAI API key (you can generate one signing up at https://pandabi.ai)
os.environ["PANDASAI_API_KEY"] = "YOUR_PANDASAI_API_KEY"

agent = Agent("data.csv")
agent.train(docs="The fiscal year starts in April")

response = agent.chat("What is the total sales for the fiscal year?")
print(response)
# The model will use the information provided in the training to generate a response

您的训练数据已持久化,因此您只需训练模型一次。

问答训练

Q/A训练用于教导PandasAI回答特定问题的期望过程,从而提高模型的性能和确定性。大型语言模型(LLMs)面临的最大挑战之一是它们不具有确定性,这意味着同一个问题在不同时间可能会产生不同的答案。Q/A训练可以帮助缓解这个问题。

要使用Q/A训练PandasAI,你可以在Agent上使用train方法,如下所示:

from pandasai import Agent

agent = Agent("data.csv")

# Train the model
query = "What is the total sales for the current fiscal year?"
response = """
import pandas as pd

df = dfs[0]

# Calculate the total sales for the current fiscal year
total_sales = df[df['date'] >= pd.to_datetime('today').replace(month=4, day=1)]['sales'].sum()
result = { "type": "number", "value": total_sales }
"""
agent.train(queries=[query], codes=[response])

response = agent.chat("What is the total sales for the last fiscal year?")
print(response)
# The model will use the information provided in the training to generate a response

同样在这种情况下,您的训练数据会被持久化,因此您只需要训练模型一次。

使用本地向量存储进行训练

如果你想使用本地向量存储来训练模型,你可以使用本地的ChromaDBQdrantPinecone向量存储。以下是操作方法: 在本地使用向量存储需要企业许可证,(查看详情)。 如果你计划在生产环境中使用它,联系我们

from pandasai import Agent
from pandasai.ee.vectorstores import ChromaDB
from pandasai.ee.vectorstores import Qdrant
from pandasai.ee.vectorstores import Pinecone
from pandasai.ee.vector_stores import LanceDB

# Instantiate the vector store
vector_store = ChromaDB()
# or with Qdrant
# vector_store = Qdrant()
# or with LanceDB
vector_store = LanceDB()
# or with Pinecone
# vector_store = Pinecone(
#     api_key="*****",
#     embedding_function=embedding_function,
#     dimensions=384, # dimension of your embedding model
# )

# Instantiate the agent with the custom vector store
agent = Agent("data.csv", vectorstore=vector_store)

# Train the model
query = "What is the total sales for the current fiscal year?"
response = """
import pandas as pd

df = dfs[0]

# Calculate the total sales for the current fiscal year
total_sales = df[df['date'] >= pd.to_datetime('today').replace(month=4, day=1)]['sales'].sum()
result = { "type": "number", "value": total_sales }
"""
agent.train(queries=[query], codes=[response])

response = agent.chat("What is the total sales for the last fiscal year?")
print(response)
# The model will use the information provided in the training to generate a response

故障排除

在某些情况下,您可能会遇到这样的错误:No vector store provided. Please provide a vector store to train the agent。这意味着尚未生成API密钥来使用BambooVectorStore

以下是修复方法:

首先,您需要生成一个API密钥(请查看上面的先决条件段落)。 一旦您生成了API密钥,您有两个选择:

  1. 覆盖环境变量 (os.environ["PANDASAI_API_KEY"] = "YOUR_PANDASAI_API_KEY")
  2. 实例化向量存储并传递API密钥:
# Instantiate the vector store with the API keys
vector_store = BambooVectorStor(api_key="YOUR_PANDASAI_API_KEY")

# Instantiate the agent with the custom vector store
agent = Agent(connector, config={...} vectorstore=vector_store)