使用PowerBI Toolkit构建智能数据查询Agent

在本篇文章中,我们将探讨如何使用PowerBI Toolkit创建一个智能Agent,以便与Power BI数据集进行交互。该Agent能够回答有关数据集的一般性问题,并能从错误中恢复。本文将详细介绍其核心原理,并展示一些可运行的代码示例,以便您能够在自己的项目中实际应用。

技术背景介绍

PowerBI Toolkit是一个强大的工具,允许用户通过自然语言与Power BI数据集交互。它利用Azure身份认证,通过executequery端点执行查询。值得注意的是,executequery端点不允许删除操作,因此该Agent非常适合于只读查询和数据分析。

核心原理解析

该工具依赖于语言模型(LLM)来生成查询,并使用LLM整体执行来解析问题并生成相应的DAX查询。我们在本文中使用 gpt-3.5-turbogpt-4 模型,这些模型经过测试能有效支持该任务。

代码实现演示

首先,我们需要进行初始化设置,这涉及到Azure的身份认证和使用PowerBI数据集。

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)

# 配置PowerBI工具包
toolkit = PowerBIToolkit(
    powerbi=PowerBIDataset(
        dataset_id="<dataset_id>",
        table_names=["table1", "table2"],
        credential=DefaultAzureCredential(),
    ),
    llm=smart_llm,
)

# 创建Agent
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")
添加自定义少样本提示

您可以通过少样本学习的方式来增强Agent的理解和响应能力:

few_shots = """
Question: How many rows are in the table revenue?
DAX: EVALUATE ROW("Number of rows", COUNTROWS(revenue_details))
----
...
"""
toolkit = PowerBIToolkit(
    powerbi=PowerBIDataset(
        dataset_id="<dataset_id>",
        table_names=["table1", "table2"],
        credential=DefaultAzureCredential(),
    ),
    llm=smart_llm,
    examples=few_shots,
)

# 重建Agent以应用新示例
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?")

应用场景分析

这种智能Agent主要应用于数据分析师和商业分析人员,他们需要快速获取数据见解而无需深入了解DAX语言。同时,这种工具可用于构建自助查询平台,帮助非技术用户提取有用的信息。

实践建议

  1. 确保Azure身份认证设置正确,并已赋予必要的访问权限。
  2. 使用少样本学习技巧来提高Agent的准确性,尤其在特定领域或复杂查询场景下。
  3. 在开发和测试过程使用不同的LLM模型,选择最佳模型以平衡性能和准确性。

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值