在 ADK Python 中集成 Langchain YouTubeSearchTool 构建视频搜索 Agent
在 ADK Python 中集成 Langchain YouTubeSearchTool 构建视频搜索 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本文以 adk-python 仓库中的langchain_youtube_search_agent示例为主线讲解如何把 Langchain 社区生态的YouTubeSearchTool无缝接入 ADKAgent Development Kit的LlmAgent使其具备询问歌手名与搜索数量、自动调用工具检索 YouTube 视频的能力。读完本文你将掌握 Langchain 工具在 ADK 中的标准接入方式、LangchainTool适配器的工作原理并能把这个模式复用到 DuckDuckGo 搜索等其它 Langchain 工具上。示例概览一个可运行的最小 Agent示例位于 contributing/samples/integrations/langchain_youtube_search_agent目录结构如下contributing/samples/integrations/langchain_youtube_search_agent/ ├── README.md # 示例说明 ├── __init__.py # 包入口导入 agent 模块 ├── agent.py # Agent 定义与工具接线 └── requirements.txt # 依赖清单从功能上看这个 Agent 承担的是YouTube 视频搜索助手它先向用户询问歌手singer名字和期望搜索的视频数量然后调用YouTubeSearchTool完成检索最终把结果写入名为youtube_search_output的输出键。整个示例只有几十行代码却完整展示了 ADK 集成第三方工具生态的典型链路实例化一个 Langchain 工具YouTubeSearchTool用LangchainTool适配器把它包装成 ADK 可识别的工具把包装后的工具挂载到LlmAgent.tools上交给模型按需调用。环境准备与依赖安装官方 README 给出的依赖安装命令为uv pip install youtube_search对应的依赖清单见 contributing/samples/integrations/langchain_youtube_search_agent/requirements.txt其中只声明了一个运行时依赖youtube_search即YouTubeSearchTool所在的第三方包。需要注意的是LangchainTool适配器本身位于 ADK 的google.adk.integrations.langchain模块使用前还需确保环境中安装了 ADK 主包及其 Langchain 集成相关依赖仓库内约束文件如 constraints-3.12.txt可以帮你锁定兼容的版本组合。若使用 uv 管理环境直接在项目根目录执行uv pip install youtube_search即可完成示例依赖的补充。代码拆解agent.py 全流程完整的示例代码见 contributing/samples/integrations/langchain_youtube_search_agent/agent.py下面按步骤逐段解读。第一步导入所需模块from google.adk.agents.llm_agent import LlmAgent from google.adk.integrations.langchain import LangchainTool from langchain_community.tools.youtube.search import YouTubeSearchTool三个导入分别对应三层职责LlmAgentADK 的 LLM Agent 基座负责对话调度与工具调用LangchainToolADK 提供的 Langchain 工具适配器位于 src/google/adk/integrations/langchain/langchain_tool.py把 Langchain 工具转换为 ADK / Google GenAI 函数调用格式YouTubeSearchToolLangchain 社区提供的 YouTube 搜索工具。第二步实例化并包装工具# Instantiate the tool langchain_yt_tool YouTubeSearchTool() # Wrap the tool in the LangchainTool class from ADK adk_yt_tool LangchainTool( toollangchain_yt_tool, )LangchainTool构造函数接收一个 Langchain 工具实例。从源码看它对传入工具有明确的类型校验langchain_tool.py传入对象必须继承langchain_core.tools.BaseTool含StructuredTool或者拥有run/_run方法否则会抛出ValueError提示Tool must be a Langchain tool, have a run or _run method.。包装时适配器会按优先级确定工具的名称与描述显式传入的name/description参数优先其次取 Langchain 工具自带的name/description最后才回落到FunctionTool的默认值。YouTubeSearchTool自带名称与描述因此示例中直接透传即可。第三步组装 LlmAgentroot_agent LlmAgent( nameyoutube_search_agent, instruction Ask customer to provide singer name, and the number of videos to search. , descriptionHelp customer to search for a video on Youtube., tools[adk_yt_tool], output_keyyoutube_search_output, )关键配置项说明nameAgent 标识建议使用语义化名称这里是youtube_search_agentinstruction系统提示词明确告诉模型交互流程——先向客户索取歌手名与视频数量再触发工具搜索descriptionAgent 的功能描述供上层路由或其它 Agent 识别调用场景tools挂载的工具列表将包装后的adk_yt_tool注册给模型output_keyyoutube_search_output声明该 Agent 的输出键名便于在流程中读取搜索结果。深度原理LangchainTool 适配器如何工作LangchainTool继承自 ADK 的FunctionTool其核心职责是把 Langchain 工具翻译成 Google GenAI 的函数调用声明。理解这一点就能明白为什么任意符合规范的 Langchain 工具都可以一行接入 ADK。同步与异步执行LangchainTool在初始化时根据工具类型选择底层调用函数langchain_tool.py对StructuredTool优先取func若为异步工具且func为空则回退到coroutine对其它带run/_run的工具取对应的_run或run方法。这一点在 tests/unittests/integrations/langchain/test_langchain_tool.py 中有直接验证test_raw_async_function_works与test_raw_sync_function_works分别用异步、同步StructuredTool包装后调用run_async均返回正确结果。同时Langchain 工具参数中常见的run_manager会被自动加入忽略列表避免干扰声明构建。函数声明Schema生成调用时模型需要知道工具的入参结构。LangchainTool覆写了_get_declarationlangchain_tool.py若包装的是LangchainBaseTool且带有args_schema则复用其 Pydantic Schema通过_automatic_function_calling_util.build_function_declaration_for_langchainsrc/google/adk/tools/_automatic_function_calling_util.py把属性结构转换为FunctionDeclaration.parameters否则走FunctionTool的默认声明逻辑并覆写name与description因为 Langchain 原始函数名通常是.run描述也可能不满足业务需要。Schema 转换的内部实现build_function_declaration_util会把 Pydantic 类型映射为 GenAI Schema 类型并提取required字段最终构造出模型的工具声明。return_direct 与结果摘要控制部分 Langchain 工具声明了return_directTrue表示其结果应直接返回给用户、不再交给模型二次摘要。LangchainTool会读取该标志并在run_async中通过tool_context.actions.skip_summarization True跳过摘要langchain_tool.py。测试用例也覆盖了边界情况当工具因缺少参数而返回error时结果必须保持可摘要让模型看到错误后自行重试见test_return_direct_leaves_skip_summarization_on_error。配置化接入通过 YAML 声明 Langchain 工具除了代码直接构造LangchainTool还支持通过配置声明方式创建。其配套的LangchainToolConfiglangchain_tool.py包含三个字段字段类型说明toolstr必填Langchain 工具实例的完全限定路径fully qualified pathnamestr默认工具名称覆盖descriptionstr默认工具描述覆盖LangchainTool.from_config会解析配置中的完全限定名得到工具实例再走与代码构造相同的包装流程。这意味着在声明式 Agent 配置中也能直接引用任意 Langchain 工具适合需要集中管理工具清单的团队。运行与验证示例包通过init.py 导出agent模块因此在 ADK Runner 中可以直接把root_agent作为入口 Agent 运行。仓库中也有大量LlmAgent 工具的端到端测试可作为验证参考例如 tests/integration/test_tools.py 与 tests/integration/test_single_agent.py它们展示了如何用测试 Runner 驱动 Agent 并断言工具调用行为。启动前请确认已安装 ADK 主包、langchain-community与youtube_search依赖并按需配置好 LLM 模型凭据。运行后对话交互大致为Agent 询问歌手名与视频数量 → 模型触发YouTubeSearchTool→ 返回搜索结果 → 结果写入youtube_search_output。扩展把同样的模式用于其它 Langchain 工具LangchainTool适配器的设计是通用的不限于 YouTube 搜索。以适配器文档中的示例为例DuckDuckGo 搜索工具同样可以两行接入from langchain.tools import DuckDuckGoSearchTool from google.adk.integrations.langchain import LangchainTool search_tool DuckDuckGoSearchTool() wrapped_tool LangchainTool(search_tool)随后把wrapped_tool放进任意LlmAgent的tools列表即可。凡是符合继承BaseTool或拥有run/_run方法这一契约的 Langchain 工具都能复用本示例的接线方式这正是 ADK 保持开放生态的关键设计。【免费下载链接】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),仅供参考

相关新闻

lo 库 Slice 拼接指南:深入解析 lo.Concat 的泛型实现、类型保留与底层原理

lo 库 Slice 拼接指南:深入解析 lo.Concat 的泛型实现、类型保留与底层原理

lo 库 Slice 拼接指南:深入解析 lo.Concat 的泛型实现、类型保留与底层原理 【免费下载链接】lo 💥 A Lodash-style Go library based on Go 1.18 Generics (map, filter, contains, find...) 项目地址: https://gitcode.com/GitHub_Trending/lo/lo …

2026/9/13 18:50:46 阅读更多 →
Zola 快速上手实战:用 `zola init` 与 Tera 模板从零搭建一个多页面博客站点

Zola 快速上手实战:用 `zola init` 与 Tera 模板从零搭建一个多页面博客站点

Zola 快速上手实战:用 zola init 与 Tera 模板从零搭建一个多页面博客站点 【免费下载链接】zola A fast static site generator in a single binary with everything built-in. https://www.getzola.org 项目地址: https://gitcode.com/GitHub_Trending/zo/zola …

2026/9/13 18:50:46 阅读更多 →
Metabase ClickHouse 驱动完全指南:从连接配置到查询下推的完整指南

Metabase ClickHouse 驱动完全指南:从连接配置到查询下推的完整指南

Metabase ClickHouse 驱动完全指南:从连接配置到查询下推的完整指南 【免费下载链接】metabase The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart: 项目地址: https://gitcode.com/…

2026/9/13 18:49:46 阅读更多 →

最新新闻

PDF补丁丁:给没有目录的200页文档补上书签导航,50份PDF一次跑完

PDF补丁丁:给没有目录的200页文档补上书签导航,50份PDF一次跑完

PDF补丁丁:给没有目录的200页文档补上书签导航,50份PDF一次跑完 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 …

2026/9/13 19:37:08 阅读更多 →
Label Studio 模板快速上手:用预定义标注界面加速数据标注与机器学习工作流

Label Studio 模板快速上手:用预定义标注界面加速数据标注与机器学习工作流

Label Studio 模板快速上手:用预定义标注界面加速数据标注与机器学习工作流 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la…

2026/9/13 19:37:08 阅读更多 →
LabVIEW视觉目标跟踪原理与实现:从模板匹配到卡尔曼滤波

LabVIEW视觉目标跟踪原理与实现:从模板匹配到卡尔曼滤波

简介:面向 LabVIEW 开发者与机器视觉学习者的目标跟踪与颜色跟踪示例包,适合用 LabVIEW 完成视觉算法验证、课程设计或项目原型开发。资源围绕视觉 labview 主题,提供从图像获取、预处理、特征提取到跟踪算法实现的可运行 VI,以及…

2026/9/13 19:37:08 阅读更多 →
pybind11 版本发布指南:从版本号规范到完整的发布流程实战

pybind11 版本发布指南:从版本号规范到完整的发布流程实战

pybind11 版本发布指南:从版本号规范到完整的发布流程实战 【免费下载链接】pybind11 Seamless operability between C11 and Python 项目地址: https://gitcode.com/GitHub_Trending/py/pybind11 本篇指南以 pybind11 官方文档 docs/release.rst 为骨架&…

2026/9/13 19:37:08 阅读更多 →
基于Spring Boot的教务系统开发:状态流转、权限与并发控制

基于Spring Boot的教务系统开发:状态流转、权限与并发控制

简介:基于 Java 与 SSM 架构开发的教务查询系统,面向刚接触 SSM 整合的 Java 后端初学者,定位为可运行的练手项目。代码覆盖 Spring、SpringMVC、MyBatis 三大框架的完整整合,并引入 Shiro 安全框架、C3P0 数据源、Log4j 日志和 B…

2026/9/13 19:37:08 阅读更多 →
Kaiser窗+双谱线插值实现高精度谐波频率估计

Kaiser窗+双谱线插值实现高精度谐波频率估计

简介:本资源是一份面向信号处理初学者与MATLAB实践者的谐波分析教学代码,聚焦于高精度频谱估计中的关键算法实现。压缩包ct877.zip仅含1个核心文件ct877.m,为纯MATLAB脚本(.m类型),体积精简仅7KB&#xff0…

2026/9/13 19:36:08 阅读更多 →

日新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/13 16:51:11 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/12 18:29:34 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/12 19:02:44 阅读更多 →