生成的代码随后被执行以产生结果。

你可以通过实例化并将其传递给SmartDataFrameSmartDatalake构造函数来选择LLM,或者在pandasai.json配置文件中指定它。

如果模型需要一个或多个参数,您可以将它们传递给构造函数或在pandasai.json文件中的llm_options参数中指定它们,以下是如何构建您的pandasai.json文件的示例:

{

  "llm": "BambooLLM",

  "llm_options": {

    "api_key": "API_KEY_GOES_HERE"

  }

}

注意: pandasai.json 可以为任何LLM进行配置。

使用pandasai.json文件

在这个例子中,data.csv 是你的数据文件,而 pandasai.json 是配置文件。确保配置文件命名为 pandasai.json 并且与你的代码在同一个文件夹中。

from pandasai import SmartDataframe

from pandasai.config import load_config_from_json



# Load configuration from pandasai.json

config = load_config_from_json()



df = SmartDataframe("data.csv", config=config)

response = df.chat("give me revenue of Top 5 companies for year 2021")

print(response)

BambooLLM

BambooLLM 是由 PandasAI 开发的最先进的语言模型,专为数据分析而设计。它旨在理解和执行与数据分析、数据操作和数据可视化相关的自然语言查询。您可以在 https://pandabi.ai 注册以获取免费的 API 密钥。

from pandasai import SmartDataframe

from pandasai.llm import BambooLLM



llm = BambooLLM(api_key="my-bamboo-api-key")

df = SmartDataframe("data.csv", config={"llm": llm})



response = df.chat("Calculate the sum of the gdp of north american countries")

print(response)

作为替代方案,您可以设置PANDASAI_API_KEY环境变量,并在不传递API密钥的情况下实例化BambooLLM对象:

from pandasai import SmartDataframe

from pandasai.llm import BambooLLM



llm = BambooLLM()  # no need to pass the API key, it will be read from the environment variable

df = SmartDataframe("data.csv", config={"llm": llm})



response = df.chat("Calculate the sum of the gdp of north american countries")

print(response)

OpenAI 模型

为了使用OpenAI模型,您需要拥有一个OpenAI API密钥。您可以在这里获取一个。

一旦你有了API密钥,你就可以用它来实例化一个OpenAI对象:

from pandasai import SmartDataframe

from pandasai.llm import OpenAI



llm = OpenAI(api_token="my-openai-api-key")

pandas_ai = SmartDataframe("data.csv", config={"llm": llm})

作为替代方案,您可以设置OPENAI_API_KEY环境变量,并在不传递API密钥的情况下实例化OpenAI对象:

from pandasai import SmartDataframe

from pandasai.llm import OpenAI



llm = OpenAI()  # no need to pass the API key, it will be read from the environment variable

pandas_ai = SmartDataframe("data.csv", config={"llm": llm})

如果您位于显式代理后面,可以在实例化OpenAI对象时指定openai_proxy,或者设置OPENAI_PROXY环境变量以通过代理。

计算令牌

你可以按照以下方式计算提示使用的令牌数量:

"""Example of using PandasAI with a pandas dataframe"""



from pandasai import SmartDataframe

from pandasai.llm import OpenAI

from pandasai.helpers.openai_info import get_openai_callback

import pandas as pd



llm = OpenAI()



# conversational=False is supposed to display lower usage and cost

df = SmartDataframe("data.csv", config={"llm": llm, "conversational": False})



with get_openai_callback() as cb:

    response = df.chat("Calculate the sum of the gdp of north american countries")



    print(response)

    print(cb)

#  The sum of the GDP of North American countries is 19,294,482,071,552.

#  Tokens Used: 375

#	Prompt Tokens: 210

#	Completion Tokens: 165

# Total Cost (USD): $ 0.000750

Google PaLM

为了使用Google PaLM模型,您需要拥有一个Google Cloud API密钥。您可以在这里获取一个。

一旦你有了API密钥,你就可以用它来实例化一个Google PaLM对象:

from pandasai import SmartDataframe

from pandasai.llm import GooglePalm



llm = GooglePalm(api_key="my-google-cloud-api-key")

df = SmartDataframe("data.csv", config={"llm": llm})

Google Vertex AI

为了通过Vertexai API使用Google PaLM模型,你需要具备

  1. 谷歌云项目
  2. 项目设置区域
  3. 安装可选的依赖项 google-cloud-aiplatform
  4. 认证 gcloud

一旦你完成了基本设置,你就可以通过vertex ai来实例化一个Google PaLM:

from pandasai import SmartDataframe

from pandasai.llm import GoogleVertexAI



llm = GoogleVertexAI(project_id="generative-ai-training",

                     location="us-central1",

                     model="text-bison@001")

df = SmartDataframe("data.csv", config={"llm": llm})

Azure OpenAI

为了使用Azure OpenAI模型,您需要拥有一个Azure OpenAI API密钥以及一个Azure OpenAI端点。您可以在这里获取。

要实例化一个 Azure OpenAI 对象,您还需要指定在 Azure 上部署的模型的名称和 API 版本:

from pandasai import SmartDataframe

from pandasai.llm import AzureOpenAI



llm = AzureOpenAI(

    api_token="my-azure-openai-api-key",

    azure_endpoint="my-azure-openai-api-endpoint",

    api_version="2023-05-15",

    deployment_name="my-deployment-name"

)

df = SmartDataframe("data.csv", config={"llm": llm})

作为替代方案,您可以设置AZURE_OPENAI_API_KEYOPENAI_API_VERSIONAZURE_OPENAI_ENDPOINT环境变量,并在不传递它们的情况下实例化Azure OpenAI对象:

from pandasai import SmartDataframe

from pandasai.llm import AzureOpenAI



llm = AzureOpenAI(

    deployment_name="my-deployment-name"

)  # no need to pass the API key, endpoint and API version. They are read from the environment variable

df = SmartDataframe("data.csv", config={"llm": llm})

如果您位于显式代理后面,可以在实例化AzureOpenAI对象时指定openai_proxy,或者设置OPENAI_PROXY环境变量以通过代理。

通过文本生成的HuggingFace

为了通过text-generation使用HuggingFace模型,您首先需要提供一个支持的大型语言模型(LLM)。 阅读text-generation文档了解更多关于如何设置推理服务器的信息。

这可以用于使用像LLaMa2、CodeLLaMa等模型。你可以找到更多关于文本生成的信息这里

inference_server_url 是实例化 HuggingFaceTextGen 模型时唯一必需的参数:

from pandasai.llm import HuggingFaceTextGen

from pandasai import SmartDataframe



llm = HuggingFaceTextGen(

    inference_server_url="http://127.0.0.1:8080"

)

df = SmartDataframe("data.csv", config={"llm": llm})

LangChain 模型

PandasAI 还内置了对 LangChain 模型的支持。

为了使用LangChain模型,你需要安装langchain包:

pip install pandasai[langchain]

一旦你安装了langchain包,你就可以用它来实例化一个LangChain对象:

from pandasai import SmartDataframe

from langchain_openai import OpenAI



langchain_llm = OpenAI(openai_api_key="my-openai-api-key")

df = SmartDataframe("data.csv", config={"llm": langchain_llm})

PandasAI 会自动检测到您正在使用 LangChain LLM,并将其转换为 PandasAI LLM。

Amazon Bedrock 模型

为了使用Amazon Bedrock模型,您需要拥有 一个AWS AKSK并获得 模型访问权限

目前,仅支持Claude 3 Sonnet。

为了使用Bedrock模型,你需要安装bedrock包。

pip install pandasai[bedrock]

然后你可以如下使用Bedrock模型

from pandasai import SmartDataframe

from pandasai.llm import BedrockClaude

import boto3



bedrock_runtime_client = boto3.client(

    'bedrock-runtime',

    aws_access_key_id=ACCESS_KEY,

    aws_secret_access_key=SECRET_KEY

)



llm = BedrockClaude(bedrock_runtime_client)

df = SmartDataframe("data.csv", config={"llm": llm})

更多创建 bedrock_runtime_client 的方法可以在这里找到。

更多信息

有关LangChain模型的更多信息,请参阅 LangChain文档

IBM watsonx.ai 模型

为了使用IBM watsonx.ai模型,你需要具备

  1. IBM Cloud API 密钥
  2. IBM Cloud 中的 Watson Studio 项目
  3. 与项目区域相关联的服务URL

API密钥可以在IBM Cloud中创建。 项目ID可以在Watson Studio服务在IBM Cloud中配置后确定。然后可以在项目的管理选项卡中找到ID(Project -> Manage -> General -> Details)。服务URL取决于配置的服务实例的区域,可以在这里找到。

为了使用watsonx.ai模型,你需要安装ibm-watsonx-ai包。

目前,watsonx.ai 支持PandasAI代理

pip install pandasai[ibm-watsonx-ai]

然后你可以按照以下方式使用watsonx.ai模型

from pandasai import SmartDataframe

from pandasai.llm import IBMwatsonx



llm = IBMwatsonx(

    model="ibm/granite-13b-chat-v2",

    api_key=API_KEY,

    watsonx_url=WATSONX_URL,

    watsonx_project_id=PROJECT_ID,

)



df = SmartDataframe("data.csv", config={"llm": llm})

更多信息

有关watsonx.ai SDK的更多信息,您可以阅读更多这里

本地模型

PandasAI 支持本地模型,尽管较小的模型通常表现不佳。要使用本地模型,首先需要在遵循 OpenAI API 的本地推理服务器上托管一个模型。这已经过测试,可以与 OllamaLM Studio 一起使用。

Ollama

Ollama 的兼容性是实验性的(参见 docs)。

使用Ollama服务器,您可以通过指定模型名称来实例化一个LLM对象:

from pandasai import SmartDataframe

from pandasai.llm.local_llm import LocalLLM



ollama_llm = LocalLLM(api_base="http://localhost:11434/v1", model="codellama")

df = SmartDataframe("data.csv", config={"llm": ollama_llm})

LM Studio

LM Studio 服务器只托管一个模型,因此你可以在不指定模型名称的情况下实例化一个 LLM 对象:

from pandasai import SmartDataframe

from pandasai.llm.local_llm import LocalLLM



lm_studio_llm = LocalLLM(api_base="http://localhost:1234/v1")

df = SmartDataframe("data.csv", config={"llm": lm_studio_llm})