Skip to main content

BigQuery 回调处理器

CommunityPythonPreview
Google BigQuery 是一个无服务器、经济高效的企业级数据仓库,支持跨云运行并随数据规模弹性扩展。
BigQueryCallbackHandler 允许您将 LangChain 和 LangGraph 的事件记录到 Google BigQuery,可用于监控、审计和分析 LLM 应用的性能。 核心特性:
  • LangGraph 支持:自动检测 LangGraph 节点,支持 NODE_STARTINGNODE_COMPLETEDGRAPH_START/END 事件
  • 延迟追踪:内置对所有 LLM 和工具调用的延迟测量
  • 事件过滤:可配置的白名单/黑名单,以控制记录哪些事件
  • Graph 上下文管理器:通过显式的图执行边界实现精确计时
  • 实时仪表盘:基于 FastAPI 的监控 Web 应用,支持实时事件流
预览版本BigQuery 回调处理器目前处于预览阶段,API 和功能可能随时更改。 更多信息请参阅 发布阶段说明
BigQuery Storage Write API此功能使用 BigQuery Storage Write API,这是一项付费服务。 有关费用信息,请参阅 BigQuery 文档

安装

您需要安装带有 bigquery 额外依赖的 langchain-google-community。本示例还需要 langchain-google-genailanggraph
pip install "langchain-google-community[bigquery]" langchain langchain-google-genai langgraph

前提条件

  1. 已启用 BigQuery APIGoogle Cloud 项目
  2. BigQuery 数据集:在使用回调处理器之前,请先创建一个数据集用于存储日志表。如果表不存在,回调处理器会在数据集中自动创建所需的事件表。
  3. Google Cloud Storage 存储桶(可选):如果您计划记录多模态内容(图像、音频等),建议创建一个 GCS 存储桶用于卸载大型文件。
  4. 身份验证
    • 本地环境:运行 gcloud auth application-default login
    • 云端环境:确保您的服务账号拥有所需权限。

IAM 权限

回调处理器正常工作需要运行应用程序的主体(如服务账号、用户账号)具备以下 Google Cloud 角色:
  • 项目级别的 roles/bigquery.jobUser,用于运行 BigQuery 查询。
  • 表级别的 roles/bigquery.dataEditor,用于写入日志/事件数据。
  • 如使用 GCS 卸载功能:目标存储桶上的 roles/storage.objectCreatorroles/storage.objectViewer

与 LangGraph Agent 配合使用

要将 BigQueryCallbackHandler 与 LangGraph Agent 配合使用,请使用您的 Google Cloud 项目 ID、数据集 ID 和表 ID 进行实例化。使用 graph_context() 方法来追踪图的执行边界,并启用带有延迟测量的 GRAPH_START/GRAPH_END 事件。 调用 Agent 时,通过 config 对象的 metadata 字典传入 session_iduser_idagent
import os
from datetime import datetime

from langchain.agents import create_agent
from langchain.messages import HumanMessage
from langchain.tools import tool
from langchain_google_community.callbacks.bigquery_callback import (
    BigQueryCallbackHandler,
    BigQueryLoggerConfig,
)
from langchain_google_genai import ChatGoogleGenerativeAI

# 1. Define tools for the agent
@tool
def get_current_time() -> str:
    """Returns the current local time."""
    now = datetime.now()
    return f"Current time: {now.strftime('%I:%M:%S %p')} on {now.strftime('%B %d, %Y')}"

@tool
def get_weather(city: str) -> str:
    """Returns the current weather for a specific city."""
    # Simulated weather data (use real API in production)
    weather_data = {
        "new york": {"temp": 22, "condition": "Clear"},
        "tokyo": {"temp": 24, "condition": "Sunny"},
        "london": {"temp": 14, "condition": "Overcast"},
    }
    city_lower = city.lower()
    if city_lower in weather_data:
        data = weather_data[city_lower]
        return f"Weather in {city.title()}: {data['temp']}°C, {data['condition']}"
    return f"Weather data for '{city}' not available."

@tool
def convert_currency(amount: float, from_currency: str, to_currency: str) -> str:
    """Convert an amount between currencies."""
    rates = {"USD": 1.0, "EUR": 1.08, "GBP": 1.27, "JPY": 0.0067}
    from_curr, to_curr = from_currency.upper(), to_currency.upper()
    if from_curr not in rates or to_curr not in rates:
        return f"Unknown currency"
    result = amount * rates[from_curr] / rates[to_curr]
    return f"{amount} {from_curr} = {result:.2f} {to_curr}"

def run_agent_example(project_id: str):
    """Run a LangGraph agent with BigQuery logging."""

    dataset_id = "agent_analytics"
    table_id = "agent_events_v2"

    # 2. Configure the callback handler
    config = BigQueryLoggerConfig(
        batch_size=1,
        batch_flush_interval=0.5,
    )

    handler = BigQueryCallbackHandler(
        project_id=project_id,
        dataset_id=dataset_id,
        table_id=table_id,
        config=config,
        graph_name="travel_assistant",  # Enable LangGraph tracking
    )

    # 3. Create the LLM and agent
    # Use project parameter for Vertex AI, or api_key for Gemini Developer API
    llm = ChatGoogleGenerativeAI(
        model="gemini-2.5-flash",
        project=project_id,  # For Vertex AI
    )
    tools = [get_current_time, get_weather, convert_currency]
    agent = create_agent(llm, tools)

    # 4. Run with graph_context for GRAPH_START/GRAPH_END events
    query = "What time is it? What's the weather in Tokyo? How much is 100 USD in EUR?"

    run_metadata = {
        "session_id": "session-001",
        "user_id": "user-123",
        "agent": "travel_assistant",
    }

    with handler.graph_context("travel_assistant", metadata=run_metadata):
        result = agent.invoke(
            {"messages": [HumanMessage(content=query)]},
            config={
                "callbacks": [handler],
                "metadata": run_metadata,
            },
        )

    print(f"Response: {result['messages'][-1].content}")

    # 5. Clean up
    handler.shutdown()

if __name__ == "__main__":
    project_id = os.environ.get("GCP_PROJECT_ID", "your-project-id")
    run_agent_example(project_id)

配置选项

您可以使用 BigQueryLoggerConfig 自定义回调处理器。
enabled
bool
default:"True"
将此参数设置为 False 可禁止处理器将数据记录到 BigQuery 表中。
clustering_fields
List[str]
default:"['event_type', 'agent', 'user_id']"
自动创建 BigQuery 表时所使用的聚簇字段。
gcs_bucket_name
str
default:"None"
用于卸载大型内容(图像、二进制数据、大文本)的 GCS 存储桶名称。若未提供,大型内容可能会被截断或替换为占位符。
connection_id
str
default:"None"
BigQuery 连接 ID(如 us.my-connection),用作 ObjectRef 列的授权方。使用 ObjectRef 与 BigQuery ML 时必需。
max_content_length
int
default:"512000"
(500 KB)在内联存储到 BigQuery 之前文本内容的最大长度(字符数)。超出此长度的内容将卸载到 GCS(如已配置)或被截断。
batch_size
int
default:"1"
写入 BigQuery 前批量缓存的事件数量。
batch_flush_interval
float
default:"1.0"
刷新不完整批次前等待的最长时间(秒)。
shutdown_timeout
float
default:"10.0"
关闭时等待日志刷新的秒数。
event_allowlist
List[str]
default:"None"
要记录的事件类型列表。若为 None,则记录除 event_denylist 中以外的所有事件。
event_denylist
List[str]
default:"None"
要跳过记录的事件类型列表。
log_multi_modal_content
bool
default:"True"
是否记录详细的内容部分(包括 GCS 引用)。
table_id
str
default:"agent_events_v2"
如果回调处理器构造函数中未明确提供,则使用的默认表 ID。
retry_config
RetryConfig
default:"RetryConfig()"
写入 BigQuery 失败时的重试逻辑配置(最大重试次数、延迟、倍增系数)。
queue_max_size
int
default:"10000"
内部缓冲队列可容纳的最大事件数,超出后新事件将被丢弃。
以下代码示例展示了如何为 BigQuery 回调处理器配置事件过滤:
from langchain_google_community.callbacks.bigquery_callback import (
    BigQueryCallbackHandler,
    BigQueryLoggerConfig,
)

# 1. Configure BigQueryLoggerConfig
config = BigQueryLoggerConfig(
    enabled=True,
    event_allowlist=["LLM_REQUEST", "LLM_RESPONSE"],  # Only log these specific events
    shutdown_timeout=10.0,  # Wait up to 10s for logs to flush on exit
    max_content_length=500,  # Truncate content to 500 characters
)

# 2. Initialize the Callback Handler
handler = BigQueryCallbackHandler(
    project_id="your-project-id",
    dataset_id="your_dataset",
    table_id="your_table",
    config=config,
)

表结构与生产环境配置

该插件会在表不存在时自动创建表。但对于生产环境,我们建议使用以下 DDL 手动创建表,该表使用 JSON 类型以保证灵活性,并使用 REPEATED RECORD 支持多模态内容。 推荐 DDL:
CREATE TABLE `your-gcp-project-id.adk_agent_logs.agent_events_v2`
(
  timestamp TIMESTAMP NOT NULL OPTIONS(description="The UTC timestamp when the event occurred."),
  event_type STRING OPTIONS(description="The category of the event."),
  agent STRING OPTIONS(description="The name of the agent."),
  session_id STRING OPTIONS(description="A unique identifier for the conversation session."),
  invocation_id STRING OPTIONS(description="A unique identifier for a single turn."),
  user_id STRING OPTIONS(description="The identifier of the end-user."),
  trace_id STRING OPTIONS(description="OpenTelemetry trace ID."),
  span_id STRING OPTIONS(description="OpenTelemetry span ID."),
  parent_span_id STRING OPTIONS(description="OpenTelemetry parent span ID."),
  content JSON OPTIONS(description="The primary payload of the event."),
  content_parts ARRAY<STRUCT<
    mime_type STRING,
    uri STRING,
    object_ref STRUCT<
      uri STRING,
      version STRING,
      authorizer STRING,
      details JSON
    >,
    text STRING,
    part_index INT64,
    part_attributes STRING,
    storage_mode STRING
  >> OPTIONS(description="For multi-modal events, contains a list of content parts."),
  attributes JSON OPTIONS(description="Arbitrary key-value pairs."),
  latency_ms JSON OPTIONS(description="Latency measurements."),
  status STRING OPTIONS(description="The outcome of the event."),
  error_message STRING OPTIONS(description="Detailed error message."),
  is_truncated BOOLEAN OPTIONS(description="Flag indicating if content was truncated.")
)
PARTITION BY DATE(timestamp)
CLUSTER BY event_type, agent, user_id;

事件类型与数据载荷

content 列包含与 event_type 对应的 JSON 对象。 content_parts 列提供内容的结构化视图,对图像或已卸载的数据尤为有用。
内容截断
  • 可变内容字段将被截断至 max_content_length(在 BigQueryLoggerConfig 中配置,默认为 500KB)。
  • 若配置了 gcs_bucket_name,大型内容将卸载到 GCS 而非被截断,并在 content_parts.object_ref 中存储引用。

LLM 交互

这些事件追踪发送给 LLM 的原始请求以及接收到的响应。
事件类型Content(JSON)结构Attributes(JSON)示例 Content(简化)
LLM_REQUEST聊天模型: {"messages": [{"content": "..."}]} 旧版模型: {"prompts": ["..."]}{"tags": ["tag1"], "model": "gemini-2.5-flash"}{"messages": [{"content": "What is the weather?"}]}
LLM_RESPONSE"The weather is sunny." (存储为 JSON 字符串){"usage": {"total_tokens": 20}}"The weather is sunny."
LLM_ERRORnull{}null

工具使用

这些事件追踪 Agent 执行工具的情况。
事件类型Content(JSON)结构
TOOL_STARTING输入字符串: "city='Paris'"
TOOL_COMPLETED输出字符串: "25°C, Sunny"
TOOL_ERROR"Error: Connection timeout"

Chain 执行

这些事件追踪高级 Chain/图的开始和结束。
事件类型Content(JSON)结构
CHAIN_START{"messages": [...]}
CHAIN_END{"output": "..."}
CHAIN_ERRORnull(见 error_message 列)

检索器使用

这些事件追踪检索器的执行情况。
事件类型Content(JSON)结构
RETRIEVER_START查询字符串: "What is the capital of France?"
RETRIEVER_END文档列表: [{"page_content": "Paris is the capital...", "metadata": {"source": "wiki"}}]
RETRIEVER_ERRORnull(见 error_message 列)

Agent 动作

这些事件追踪 Agent 执行的特定动作。
事件类型Content(JSON)结构
AGENT_ACTION{"tool": "Calculator", "input": "2 + 2"}
AGENT_FINISH{"output": "The answer is 4"}

其他事件

事件类型Content(JSON)结构
TEXT任意文本: "Some logging text..."

高级分析查询

Agent 运行并记录事件后,您可以对 agent_events_v2 表进行深度分析。

1. 重建追踪记录(对话轮次)

使用 trace_id 将属于同一执行流的所有事件(Chain、LLM、Tool)分组。
SELECT
  timestamp,
  event_type,
  span_id,
  parent_span_id,
  -- Extract summary or specific content based on event type
  COALESCE(
    JSON_VALUE(content, '$.messages[0].content'),
    JSON_VALUE(content, '$.summary'),
    JSON_VALUE(content)
  ) AS summary,
  JSON_VALUE(latency_ms, '$.total_ms') AS duration_ms
FROM
  `your-gcp-project-id.adk_agent_logs.agent_events_v2`
WHERE
    -- Replace with a specific trace_id from your logs
  trace_id = '019bb986-a0db-7da1-802d-2725795ab340'
ORDER BY
  timestamp ASC;

2. 分析 LLM 延迟与 Token 使用情况

计算 LLM 调用的平均延迟和总 Token 使用量。
SELECT
  JSON_VALUE(attributes, '$.model') AS model,
  COUNT(*) AS total_calls,
  AVG(CAST(JSON_VALUE(latency_ms, '$.total_ms') AS FLOAT64)) AS avg_latency_ms,
  SUM(CAST(JSON_VALUE(attributes, '$.usage.total_tokens') AS INT64)) AS total_tokens
FROM
  `your-gcp-project-id.adk_agent_logs.agent_events_v2`
WHERE
  event_type = 'LLM_RESPONSE'
GROUP BY
  1;

3. 使用 BigQuery 远程模型(Gemini)分析多模态内容

如果您将图像卸载到 GCS,可以使用 BigQuery ML 直接对其进行分析。
SELECT
  logs.session_id,
  -- Get a signed URL for the image (optional, for viewing)
  STRING(OBJ.GET_ACCESS_URL(parts.object_ref, "r").access_urls.read_url) as signed_url,
  -- Analyze the image using a remote model (e.g., gemini-2.5-flash)
  AI.GENERATE(
    ('Describe this image briefly. What company logo?', parts.object_ref)
  ) AS generated_result
FROM
  `your-gcp-project-id.adk_agent_logs.agent_events_v2` logs,
  UNNEST(logs.content_parts) AS parts
WHERE
  parts.mime_type LIKE 'image/%'
ORDER BY logs.timestamp DESC
LIMIT 1;

4. 分析 Span 层级与持续时间

使用 span ID 可视化 Agent 操作(LLM 调用、工具使用)的执行流程和性能。
SELECT
  span_id,
  parent_span_id,
  event_type,
  timestamp,
  -- Extract duration from latency_ms for completed operations
  CAST(JSON_VALUE(latency_ms, '$.total_ms') AS INT64) as duration_ms,
  -- Identify the specific tool or operation
  COALESCE(
    JSON_VALUE(content, '$.tool'),
    'LLM_CALL'
  ) as operation
FROM `your-gcp-project-id.adk_agent_logs.agent_events_v2`
WHERE trace_id = 'your-trace-id'
  AND event_type IN ('LLM_RESPONSE', 'TOOL_COMPLETED')
ORDER BY timestamp ASC;

5. 查询已卸载的内容(获取签名 URL)

SELECT
  timestamp,
  event_type,
  part.mime_type,
  part.storage_mode,
  part.object_ref.uri AS gcs_uri,
  -- Generate a signed URL to read the content directly (requires connection_id configuration)
  STRING(OBJ.GET_ACCESS_URL(part.object_ref, 'r').access_urls.read_url) AS signed_url
FROM `your-gcp-project-id.adk_agent_logs.agent_events_v2`,
UNNEST(content_parts) AS part
WHERE part.storage_mode = 'GCS_REFERENCE'
ORDER BY timestamp DESC
LIMIT 10;

6. 高级 SQL 场景

以下高级模式展示了如何使用 BigQuery ML 对数据进行会话化、分析工具使用情况以及执行根因分析。
-- 1. Sessionize Conversation History (Create View)
-- Consolidates all events into a single row per session with a formatted history.
CREATE OR REPLACE VIEW `your-project.your-dataset.agent_sessions` AS
SELECT
  session_id,
  user_id,
  MIN(timestamp) AS session_start,
  MAX(timestamp) AS session_end,
  ARRAY_AGG(
    STRUCT(timestamp, event_type, TO_JSON_STRING(content) as content, error_message)
    ORDER BY timestamp ASC
  ) AS events,
  STRING_AGG(
      CASE
          WHEN event_type = 'USER_MESSAGE_RECEIVED' THEN CONCAT('User: ', JSON_VALUE(content, '$.input'))
          WHEN event_type = 'LLM_RESPONSE' THEN CONCAT('Agent: ', JSON_VALUE(content, '$.text'))
          WHEN event_type = 'TOOL_STARTING' THEN CONCAT('SYS: Calling ', JSON_VALUE(content, '$.tool_name'))
          WHEN event_type = 'TOOL_COMPLETED' THEN CONCAT('SYS: Result from ', JSON_VALUE(content, '$.tool_name'))
          WHEN event_type = 'TOOL_ERROR' THEN CONCAT('SYS: ERROR in ', JSON_VALUE(content, '$.tool_name'))
          ELSE NULL
      END,
      '\n' ORDER BY timestamp ASC
  ) AS full_conversation
FROM
  `your-project.your-dataset.agent_events_v2`
GROUP BY
  session_id, user_id;

-- 2. Tool Usage Analysis
-- Extract tool names and count execution status
SELECT
  JSON_VALUE(content, '$.tool_name') AS tool_name,
  event_type,
  COUNT(*) as count
FROM `your-project.your-dataset.agent_events_v2`
WHERE event_type IN ('TOOL_STARTING', 'TOOL_COMPLETED', 'TOOL_ERROR')
GROUP BY 1, 2
ORDER BY tool_name, event_type;

-- 3. Granular Cost & Token Estimation
-- Estimate tokens based on content character length (approx 4 chars/token)
SELECT
  session_id,
  COUNT(*) as interaction_count,
  SUM(LENGTH(TO_JSON_STRING(content))) / 4 AS estimated_tokens,
  -- Example cost: $0.0001 per 1k tokens
  ROUND((SUM(LENGTH(TO_JSON_STRING(content))) / 4) / 1000 * 0.0001, 6) AS estimated_cost_usd
FROM `your-project.your-dataset.agent_events_v2`
GROUP BY session_id
ORDER BY estimated_cost_usd DESC
LIMIT 5;

-- 4. AI-Powered Root Cause Analysis (Requires BigQuery ML)
-- Use Gemini to analyze failed sessions
SELECT
  session_id,
  AI.GENERATE(
    ('Analyze this conversation and explain the failure root cause. Log: ', full_conversation),
    connection_id => 'your-project.us.bqml_connection',
    endpoint => 'gemini-2.5-flash'
  ).result AS root_cause_explanation
FROM `your-project.your-dataset.agent_sessions`
WHERE error_message IS NOT NULL
LIMIT 5;

BigQuery 对话式分析

对话式分析您还可以使用 BigQuery 对话式分析,通过自然语言分析您的 Agent 日志。 例如提问:
  • “显示随时间变化的错误率”
  • “最常见的工具调用有哪些?”
  • “找出 Token 使用量较高的会话”

Looker Studio 仪表盘

您可以使用我们预构建的 Looker Studio 仪表盘模板 可视化 Agent 的性能。 要将此仪表盘连接到您自己的 BigQuery 表,请使用以下链接格式,将占位符替换为您的项目、数据集和表 ID:
https://lookerstudio.google.com/reporting/create?c.reportId=f1c5b513-3095-44f8-90a2-54953d41b125&ds.ds3.connector=bigQuery&ds.ds3.type=TABLE&ds.ds3.projectId=<your-project-id>&ds.ds3.datasetId=<your-dataset-id>&ds.ds3.tableId=<your-table-id>

LangGraph 集成

BigQueryCallbackHandler 为 LangGraph Agent 提供了增强支持,包括自动节点检测、图级别追踪和延迟测量。

LangGraph 事件类型

除标准 LangChain 事件外,回调处理器还会自动检测并记录 LangGraph 特有事件:
事件类型描述
NODE_STARTINGLangGraph 节点开始执行时触发
NODE_COMPLETEDLangGraph 节点成功完成时触发
NODE_ERRORLangGraph 节点执行失败时触发
GRAPH_START图执行开始时触发(通过上下文管理器)
GRAPH_END图执行完成时触发
GRAPH_ERROR图执行失败时触发

Graph 上下文管理器

使用 graph_context() 方法显式标记图的执行边界,以启用带有精确延迟测量的 GRAPH_STARTGRAPH_END 事件:
from langchain.agents import create_agent
from langchain.messages import HumanMessage
from langchain_google_community.callbacks.bigquery_callback import (
    BigQueryCallbackHandler,
    BigQueryLoggerConfig,
)

# Initialize handler with graph name
handler = BigQueryCallbackHandler(
    project_id="your-project-id",
    dataset_id="agent_analytics",
    table_id="agent_events_v2",
    graph_name="my_agent",
)

# Create your agent
agent = create_agent(llm, tools)

# Use the graph context manager for proper GRAPH_START/GRAPH_END events
run_metadata = {
    "session_id": "session-123",
    "user_id": "user-456",
    "agent": "my_agent",
}

with handler.graph_context("my_agent", metadata=run_metadata):
    result = agent.invoke(
        {"messages": [HumanMessage(content="What is the weather in Tokyo?")]},
        config={
            "callbacks": [handler],
            "metadata": run_metadata,
        },
    )

延迟追踪

回调处理器自动追踪所有操作的延迟,并将测量值存储在 latency_ms JSON 列中:
-- Query latency by event type
SELECT
    event_type,
    agent,
    COUNT(*) as count,
    ROUND(AVG(CAST(JSON_EXTRACT_SCALAR(latency_ms, '$.total_ms') AS FLOAT64)), 2) as avg_latency_ms,
    ROUND(APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(latency_ms, '$.total_ms') AS FLOAT64), 100)[OFFSET(95)], 2) as p95_latency_ms
FROM `your-project.your-dataset.agent_events_v2`
WHERE DATE(timestamp) = CURRENT_DATE()
  AND event_type IN ('LLM_RESPONSE', 'TOOL_COMPLETED', 'GRAPH_END')
GROUP BY event_type, agent
ORDER BY avg_latency_ms DESC;

事件过滤

使用 event_allowlistevent_denylist 控制记录哪些事件:
from langchain_google_community.callbacks.bigquery_callback import (
    BigQueryCallbackHandler,
    BigQueryLoggerConfig,
)

# Production config: Only log important events
config = BigQueryLoggerConfig(
    event_allowlist=[
        "LLM_RESPONSE",
        "LLM_ERROR",
        "TOOL_COMPLETED",
        "TOOL_ERROR",
        "GRAPH_END",
        "GRAPH_ERROR",
    ],
)

handler = BigQueryCallbackHandler(
    project_id="your-project-id",
    dataset_id="agent_analytics",
    config=config,
)
或排除噪音较多的事件:
# Exclude chain events but log everything else
config = BigQueryLoggerConfig(
    event_denylist=["CHAIN_START", "CHAIN_END"],
)

示例与资源

示例代码

以下示例展示了 BigQuery 回调处理器的各项功能:
示例描述
基础示例使用 LLM 调用的基础回调用法
LangGraph Agent带有 6 个真实工具的完整 ReAct Agent
异步示例支持并发查询的异步处理器
事件过滤白名单/黑名单配置
示例数据生成器生成跨多种 Agent 类型的示例数据

分析 Notebook

LangGraph Agent 分析 Notebook 提供了全面的 BigQuery 分析查询,涵盖:
  • 实时事件监控
  • 工具使用分析
  • 延迟分析与趋势
  • 错误调试
  • 用户参与度指标
  • 时序可视化

实时监控仪表盘

基于 FastAPI 的监控仪表盘 提供 Agent 实时监控功能: 功能特性:
  • 通过 Server-Sent Events(SSE)提供实时事件流
  • 事件分布和延迟趋势的交互式图表
  • 带详细时间线视图的会话追踪
  • 20+ 个用于分析查询的 REST API 端点
  • 每 5 秒自动刷新
# Run the dashboard
cd libs/community/examples/bigquery_callback/webapp
pip install -r requirements.txt
uvicorn main:app --port 8001
# Open http://localhost:8001

反馈

我们欢迎您对 BigQuery Agent Analytics 提出反馈。如有问题、建议或遇到任何 Issue,请通过 bqaa-feedback@google.com 联系团队。

更多资源