FEATURED · 精选文章

ADK 中 BigQuery AI.GENERATE 函数完全指南:语法、参数与 Agent 集成实战

发布时间 / 2026/9/14 3:34:45
来源 / 创域科博编辑部
栏目 / 资讯中心
ADK 中 BigQuery AI.GENERATE 函数完全指南:语法、参数与 Agent 集成实战 ADK 中 BigQuery AI.GENERATE 函数完全指南语法、参数与 Agent 集成实战【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python本篇技术指南聚焦 ADKadk-python预置的bigquery-ai-mlSkill 中最核心的通用内容生成函数AI.GENERATE系统讲解其 SQL 语法、输入参数、输出 STRUCT 结构以及四个可直接运行的实战示例文本生成、结构化输出、GCS 图片处理、Grounding 联网搜索。读完本文你将掌握在 ADK Agent 中通过execute_sql()使用AI.GENERATE的完整方法并能结合BigQueryToolset与SkillToolset快速搭建数据洞察 Agent。一、背景bigquery-ai-mlSkill 与 AI.GENERATE 的定位在 ADK 的 BigQuery 集成中官方推荐优先使用 SQL Skill 而非专用高层工具来处理 AI/ML 类功能如预测、异常检测。这一约定明确写在预置 Skill 的说明文件 SKILL.md 中Agents should prefer using the Skill (SQL viaexecute_sql()) over dedicated BigQuery tools for functionalities like Forecasting and Anomaly Detection.bigquery-ai-mlSkill 覆盖了 11 个AI.*系列函数其中AI.GENERATE是通用目的general-purpose的文本与内容生成函数负责调用 Gemini 等模型完成摘要、抽取、问答、多模态理解等任务。其余函数各有分工函数用途参考文档AI.FORECAST基于预训练 TimesFM 模型做时序预测bigquery_ai_forecast.mdAI.CLASSIFY将非结构化数据分类到预定义标签bigquery_ai_classify.mdAI.DETECT_ANOMALIES基于 TimesFM 识别时序异常bigquery_ai_detect_anomalies.mdAI.GENERATE通用文本与内容生成bigquery_ai_generate.mdAI.GENERATE_BOOL依据 prompt 生成布尔值TRUE/FALSEbigquery_ai_generate_bool.mdAI.GENERATE_DOUBLE依据 prompt 生成浮点数bigquery_ai_generate_double.mdAI.GENERATE_INT依据 prompt 生成整数bigquery_ai_generate_int.mdAI.IF求值自然语言布尔条件bigquery_ai_if.mdAI.SCORE按语义相关性排序配合ORDER BYbigquery_ai_score.mdAI.SIMILARITY计算两个输入的余弦相似度bigquery_ai_similarity.mdAI.SEARCH在表上做语义搜索自动生成 embeddingbigquery_ai_search.md关键路由规则SKILL.md明确要求 Agent 在生成 SQL之前必须读取对应的参考文档且严禁猜测文件名只能使用表中给出的精确路径。本文所讲的AI.GENERATE完整语法即来自 bigquery_ai_generate.md。二、AI.GENERATE 语法参考AI.GENERATE的完整函数签名如下AI.GENERATE( [ prompt ] PROMPT, [, endpoint ENDPOINT] [, model_params MODEL_PARAMS] [, output_schema OUTPUT_SCHEMA] [, connection_id CONNECTION_ID] [, request_type REQUEST_TYPE] )参数全部采用**命名参数named argument**形式通过传值除prompt外其余参数均为可选项可按需组合prompt可以是一个字符串字面量也可以是由列名、字符串拼接||、元组(...)构成的表达式——下文示例会展示这三种用法。三、输入参数详解参数必填类型说明prompt必填String传给模型的提示词文本或指令。可拼接列值、可传多模态内容如图片引用connection_id可选StringBigQuery 连接 ID格式形如my-project.us.my-connection。若通过其他方式配置如默认连接或仅做测试时可不填endpoint可选String模型名称例如gemini-2.5-flash。不指定时使用默认模型output_schema可选String结构化输出的 Schema 定义例如answer BOOL, reason STRING使模型返回符合该结构的字段而非自由文本request_type可选String取值为DEDICATED或SHARED控制请求使用专用还是共享的资源通道model_params可选JSONJSON 对象形式的模型参数例如temperature、max_output_tokens以及 Grounding 工具配置见下文各参数要点prompt与列数据的结合最典型的用法是用||将列值与指令拼接例如Summarize this article: || article_content让模型对每一行数据分别生成结果也可以使用元组形式(指令, 列或表达式)同时传入多个内容片段。endpoint决定模型能力选择不同的endpoint会直接影响生成质量、速度与成本示例中给出的gemini-2.5-flash是面向高吞吐、低成本场景的选择你可以按任务复杂度替换为其他可用模型。output_schema触发结构化输出一旦指定返回结果中原本的result字段将被 Schema 中定义的字段取代模型输出将严格对齐字段名与类型便于下游直接做类型化解析。model_params的 Grounding 扩展该参数不仅支持temperature、max_output_tokens等常规采样参数还能通过 JSON 内嵌工具声明启用 Google 搜索 Grounding见示例四让模型获得实时外部信息。四、输出结构Output SchemaAI.GENERATE返回一个STRUCT包含以下字段字段类型说明resultSTRING或自定义类型生成的内容。若使用了output_schema该字段被 Schema 中的字段取代statusSTRINGAPI 响应状态成功时为空字符串full_responseJSON模型返回的完整原始 JSON 响应包含安全评分safety ratings、用量元数据usage metadata等理解这个返回结构对编写查询很重要直接SELECT AI.GENERATE(...)会得到整个 STRUCT若要只取文本通常配合.*展开字段或访问result字段status字段可用于在 SQL 中做错误处理判断——非空即表示本次生成未成功full_response保留完整的模型原始输出便于审计、调试与计量 token 用量适合在需要追溯生成过程的场景下保留。五、实战示例以下四个示例均直接取自参考文档覆盖了AI.GENERATE最典型的四类使用场景。5.1 基础文本生成对dataset.articles表中前 5 篇文章做摘要生成prompt用||拼接列值指定 Gemini 模型与连接SELECT AI.GENERATE( Summarize this article: || article_content, connection_id my-project.us.my-connection, endpoint gemini-2.5-flash ) as summary FROM dataset.articles LIMIT 5;5.2 结构化输出生成从发票文本中抽取日期与金额通过output_schema强制模型输出DATE与FLOAT64类型字段返回结果可直接参与类型化运算SELECT AI.GENERATE( Extract the date and amount from this invoice: || invoice_text, output_schema date DATE, amount FLOAT64 ) as extracted_data FROM dataset.invoices;5.3 处理 Cloud Storage 桶中的图片这是多模态能力的典型用法先创建引用 GCS 图片的外部表再用OBJ.GET_ACCESS_URL为每张图片生成带签名的访问 URL并把图片与指令以元组形式传入prompt配合output_schema要求模型返回图片描述与实体数组最后用.*展开 STRUCT 字段CREATE SCHEMA IF NOT EXISTS bqml_tutorial; CREATE OR REPLACE EXTERNAL TABLE bqml_tutorial.product_images WITH CONNECTION DEFAULT OPTIONS ( object_metadata SIMPLE, uris [gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png]); SELECT uri, STRING(OBJ.GET_ACCESS_URL(ref,r).access_urls.read_url) AS signed_url, AI.GENERATE( (What is this: , OBJ.GET_ACCESS_URL(ref, r)), output_schema image_description STRING, entities_in_the_image ARRAYSTRING).* FROM bqml_tutorial.product_images WHERE uri LIKE %aquarium%;要点外部表通过WITH CONNECTION DEFAULT OPTIONS声明object_metadata SIMPLE只读取对象元数据uris以通配符形式批量指向桶内图片prompt的元组写法(What is this: , OBJ.GET_ACCESS_URL(ref, r))将指令与图片一并交给多模态模型返回的result字段已被output_schema替换为image_description与entities_in_the_image两个字段.*展开后每行图片直接得到结构化描述。5.4 使用 Grounding联网搜索通过model_params传入JSON {tools: [{googleSearch: {}}]}让模型在生成前借助 Google 搜索获取实时信息从而回答天气这类依赖时效性数据的问题SELECT name, AI.GENERATE( (Please check the weather of , name, for today.), model_params JSON {tools: [{googleSearch: {}}]} ) FROM UNNEST([Seattle, NYC, Austin]) AS name;UNNEST数组展开后三座城市各生成一行查询模型会为每座城市分别进行联网检索并返回当日天气结论。六、在 ADK Agent 中集成 bigquery-ai-ml Skillbigquery-ai-mlSkill 以预打包形式随 ADK 分发官方加载入口是 bigquery_skill.py 中的get_bigquery_skill()其内部通过load_skill_from_dir()加载skills/bigquery-ai-ml目录遵循 agentskills.io 规范。参考文档中给出的集成骨架如下from google.adk.tools.bigquery import BigQueryToolset from google.adk.tools.bigquery.bigquery_skill import get_bigquery_skill from google.adk.tools.skill_toolset import SkillToolset bq_skill get_bigquery_skill() toolset SkillToolset(skills[bq_skill]) bigquery_toolset BigQueryToolset(...) agent LlmAgent(tools[bigquery_toolset, toolset])这样配置后Agent 同时获得两类能力BigQueryToolset提供execute_sql、list_table_ids、get_table_info等查询与元数据工具当前实现在 src/google/adk/integrations/bigquery 模块下而SkillToolset让 Agent 能按 SKILL.md 的强制路由规则先读取参考文档、再据此写出正确的AI.GENERATESQL。更完整的可运行 Agent 示例见 contributing/samples/integrations/bigquery/agent.py该示例展示了四种凭据模式的配置方式ADCApplication Default CredentialsCREDENTIALS_TYPE None适合本地开发通过google.auth.default()获取凭据服务账号AuthCredentialTypes.SERVICE_ACCOUNT从service_account_key.json加载并刷新凭据交互式 OAuthAuthCredentialTypes.OAUTH2依赖OAUTH_CLIENT_ID/OAUTH_CLIENT_SECRET环境变量外部 Access TokenAuthCredentialTypes.HTTP通过external_access_token_keyAUTH_ID从 tool context 读取 Gemini Enterprise 注入的令牌。同时可通过BigQueryToolConfig控制写入策略write_mode的默认值是BLOCKED只读演示时可用ALLOWED会话匿名数据集场景可考虑PROTECTEDmax_query_result_rows用于限制返回行数示例中设为 50。值得说明的是bigquery-ai-ml的查询行为本身由 BigQuery 侧模型能力决定上述工具配置主要影响 SQL 的执行通道与权限边界。七、工程质量保障Skill 的测试验证ADK 为bigquery-ai-mlSkill 提供了专门的单元测试 test_bigquery_skill.py从多个维度保证该 Skill 与AI.GENERATE参考文档可被 Agent 正常加载使用Skill 元数据完整get_bigquery_skill()返回的 Skill 名称必须为 kebab-case 的bigquery-ai-ml且与目录名一致description 与 instructions 非空test_get_bigquery_skill_returns_valid_skill、test_skill_name_matches_spec参考文档齐全非空包括bigquery_ai_generate.md在内的全部 11 个参考文件必须存在且内容非空test_skill_has_expected_references与 SkillToolset 无缝集成Skill 挂载到SkillToolset后应产出 4 个工具——ListSkillsTool、LoadSkillTool、LoadSkillResourceTool、RunSkillScriptTooltest_skill_works_with_skill_toolset通过内置校验器Skill 目录必须通过_validate_skill_dir校验且 frontmatter 中 license 为Apache-2.0、metadata 含 author 与 version 字段test_skill_passes_validation、test_skill_frontmatter_has_license、test_skill_frontmatter_has_metadata。这些测试保证了只要 Agent 走 Skill 路由就一定能读取到本文所讲的AI.GENERATE权威语法而不会出现“猜测文件名导致加载失败”的情况。八、使用建议与注意事项遵循强制路由在 ADK Agent 中使用AI.GENERATE时应始终先让 Agent 读取 bigquery_ai_generate.md 再生成 SQL不要凭记忆构造语法。优先 Skill 而非专用工具按SKILL.md的约定AI/ML 类查询统一通过execute_sql()AI.*函数完成这比维护专用高层工具更简洁、可控。结构化输出优先需要下游程序化消费结果时务必使用output_schema让模型输出严格对齐字段类型如DATE、FLOAT64、ARRAYSTRING减少后处理成本。善用full_response与status生产环境建议保留full_response用于审计与用量统计并借助status字段识别失败调用。凭据与写入安全生产部署优先使用服务账号或 Gemini Enterprise 托管令牌write_mode保持默认BLOCKED只读模式避免 Agent 误写数据。通过本文你已掌握AI.GENERATE的完整语法、参数语义、四种实战模式以及如何在 ADK 中通过get_bigquery_skill()与SkillToolset将其接入 Agent——下一步即可在真实 BigQuery 数据上验证这些 SQL构建自己的数据智能体。【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻