在当今的数据驱动世界中,Power BI 是一种强大的商业智能工具。本文将展示如何使用一种智能代理与 Power BI 数据集进行交互。这个代理不仅可以回答关于数据集的一般性问题,还能从错误中恢复。请注意,本示例在 active development 阶段,返回的结果可能不全准确。代理通过 executequery
端点运行,该端点不允许删除操作。
技术背景介绍
Power BI 是一种业务分析工具,允许用户对数据进行可视化和分析。本示例主要基于 Azure 身份验证和 OpenAI 的大语言模型(LLM)进行查询构建和执行。可使用 azure.identity
包进行身份验证(安装方式为 pip install azure-identity
)。代理也可以用字符串形式的 token 创建 Power BI 数据集,而无需凭证。此外,可提供用户名来代入角色使用启用 RLS 的数据集。
本示例工具包利用 LLM 从问题生成查询,主要测试了 gpt-3.5-turbo-instruct
模型,且在语境理解上有良好表现。
核心原理解析
初始化需要以下几个关键步骤:
- 身份验证设置:使用 Azure 的
DefaultAzureCredential
进行认证。 - 工具包和代理配置:包括 Power BI 数据集和 LLM 的设置。
- 代理运行:通过
agent_executor
执行查询或描述任务。
代码实现演示
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
# LLM配置
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>", # 替换为实际数据集ID
table_names=["table1", "table2"],
credential=DefaultAzureCredential(),
),
llm=smart_llm,
)
# 代理创建
agent_executor = create_pbi_agent(
llm=fast_llm,
toolkit=toolkit,
verbose=True,
)
# 示例:描述表格
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")
应用场景分析
这种交互代理特别适合数据科学家和分析师快速探索和查询数据,而不需要精通 DAX 或 SQL。通过使用 LLM 和 Power BI 集成,用户可以自然语言形式请求数据分析,降低学习和使用门槛。此外,应用于启用 RLS 的数据集时,用户可以查看特定角色下的数据。
实践建议
- 安全性:确保使用安全的 Azure 凭据及适当的访问控制。
- 性能优化:根据查询复杂度调整
max_tokens
和temperature
以优化响应时间和准确性。 - 错误处理:在生产环境中,添加异常捕获以处理潜在的运行时错误。
如果遇到问题欢迎在评论区交流。
—END—