You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CrewAI自定义Youtube搜索工具初始化报错:不存在'app'字段

排查CustomYoutubeChannelSearchTool初始化报错"no field 'app'"的解决步骤

核心原因

该错误源于你实现的CustomYoutubeChannelSearchTool类未满足CrewAI工具基类的属性要求——要么没显式声明app属性,要么初始化时未传入该参数。

具体解决方法

1. 补全工具类的属性声明

确保你的工具类正确继承CrewAI的工具基类,并显式声明app属性(类型根据实际业务定义,比如API客户端实例或字符串标识):

from crewai_tools import BaseTool

class CustomYoutubeChannelSearchTool(BaseTool):
    # 显式声明app属性,匹配父类要求
    app: object  # 可替换为实际需要的类型,如YouTube API客户端
    name: str = "Custom Youtube Channel Search Tool"
    description: str = "用于检索YouTube频道内容的自定义工具"

    def _run(self, query: str) -> str:
        # 此处实现你的搜索逻辑
        return f"针对[{query}]的搜索结果"

2. 初始化工具时传入合法的app参数

创建工具实例时,必须传入符合类型要求的app值,比如已初始化的YouTube API客户端:

# 示例:初始化YouTube客户端(根据你使用的库调整)
from googleapiclient.discovery import build
youtube_client = build('youtube', 'v3', developerKey='你的API密钥')

# 创建工具实例并传入app参数
tool = CustomYoutubeChannelSearchTool(app=youtube_client)

3. 验证CrewAI版本兼容性

不同版本的CrewAI对工具基类的属性要求可能不同,先确认当前版本:

pip show crewai

若版本较新,需对照官方文档调整工具类的属性定义,避免因API变更导致的属性缺失。

4. 检查Agent注册工具的逻辑

在给Agent绑定工具时,确保传入的是已初始化的工具实例,而非类本身:

from crewai import Agent

agent = Agent(
    role="YouTube内容检索专家",
    goal="精准获取指定频道的相关内容",
    backstory="精通自定义工具调用与YouTube数据解析",
    tools=[tool]  # 这里传入初始化后的tool实例,而非CustomYoutubeChannelSearchTool类
)

错误场景验证

如果你的代码既没声明app属性,初始化时也未传入该参数,就会触发如下错误:

AttributeError: 'CustomYoutubeChannelSearchTool' object has no field 'app'

覆盖上述步骤即可解决问题。

内容的提问来源于stack exchange,提问作者Herminio Henriques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:02:08