ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

composio-crewai 集成实战:让 CrewAI Agent 通过 Composio 会话调用 1000+ 应用工具

composio-crewai 集成实战:让 CrewAI Agent 通过 Composio 会话调用 1000+ 应用工具 composio-crewai 集成实战让 CrewAI Agent 通过 Composio 会话调用 1000 应用工具【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio本指南讲解 Composio 官方 CrewAI 提供器composio-crewai的完整集成方案它将 Composio 平台上的 1000 应用工具适配为 CrewAI 的BaseTool格式使 CrewAI 的Agent可以在同一个 Composio 会话内跨应用执行真实操作发邮件、操作 GitHub、管理日历等。读完本文你将掌握安装配置、会话创建、工具注入、参数校验与结构化错误处理的全链路实操方法并能理解其底层适配原理。背景为什么需要 CrewAI 适配层CrewAI 的 Agent 依赖crewai.tools.BaseTool这一统一工具协议来执行动作而 Composio 平台的工具以平台自身的格式暴露包含 JSON Schema 输入参数、工具 slug 等元数据两者无法直接互通。composio-crewai包提供的CrewAIProvider正是二者之间的桥梁——它把每个 Composio 工具包装成一个BaseTool实例且所有工具共享同一个 Composio 会话Session执行因此你的 Crew 可以跨 Gmail、GitHub、Slack 等 1000 应用连贯地完成多步任务而无需为每个应用单独写适配代码。该适配器基于 Composio SDK 统一的AgenticProvider抽象实现见 python/composio/core/provider/agentic.py该基类定义了wrap_tool与wrap_tools两个核心契约各框架提供器只需实现自己的包装逻辑即可接入。安装与依赖在python/providers/crewai/pyproject.toml中定义了该包的核心依赖约束crewai1.15.7,2.0.0composio同仓库 SDK本地安装时即依赖主包requires-python 3.10,4实际使用中一条命令即可完成全部安装pip install composio composio-crewai crewai安装完成后还需在环境中配置两个密钥COMPOSIO_API_KEY用于认证 Composio 平台服务和OPENAI_API_KEY用于 CrewAI 内置的 LLM 调用。通过环境变量注入即可export COMPOSIO_API_KEYxxxxxxxxx export OPENAI_API_KEYxxxxxxxxx快速开始五分钟跑通一个 Crew核心流程只有四步创建 Composio 客户端绑定 CrewAI 提供器→ 为用户创建会话 → 拉取会话工具 → 注入 Agent 并让 Crew 执行任务。from crewai import Agent, Crew, Task from composio import Composio from composio_crewai import CrewAIProvider composio Composio(providerCrewAIProvider()) # Each session is scoped to one of your users session composio.create(user_iduser_123) tools session.tools() agent Agent( roleEmail Agent, goalSend emails on behalf of the user, backstoryYou are an AI agent that sends emails using Gmail., toolstools, llmgpt-5.2, ) task Task( descriptionSend an email to johnexample.com with the subject Hello and body Hello from Composio!, agentagent, expected_outputConfirmation that the email was sent, ) crew Crew(agents[agent], tasks[task]) result crew.kickoff() print(result)关键点说明composio.create(user_iduser_123)返回一个会话Session会话与某个终端用户绑定后续该用户的所有工具调用都在此会话上下文内完成天然支持多用户隔离session.tools()返回该会话可用工具且这些工具已经过CrewAIProvider包装成BaseTool列表可直接塞进Agent(tools...)CrewAI 负责编排任务与 LLM 推理而每个工具真正执行时由 Composio 后端完成 Gmail 等应用的 API 调用执行结果原样回流到 Crew 的任务输出中。会话与工具获取的底层机制从源码看composio.create(...)实际创建的是ToolRouterSession见 python/composio/core/models/tool_router_session.py其tools()方法同文件 L182-L209会将提供器传入ToolsModel再按提供器格式批量包装工具返回。也就是说工具获取并不是一次简单的列表拉取而是按会话配置 按提供器包装两步完成。create()还支持丰富的高级配置参数见 python/composio/core/models/tool_router.py 的签名重载常用项包括toolkits会话预启用的工具集例如[GITHUB]auth_configs/connected_accounts预绑定认证配置或已连接账号省去运行时授权sandbox/workbench沙箱与工作台配置mcpTrue显式启用会话的 MCP 端点返回类型升级为ToolRouterSessionWithMcppreload预加载工具减少首次调用延迟。从代码结构可以推断默认场景下 Agent 通过原生tools()方式使用工具MCP 属于显式可选路径。进阶用法按工具集Toolkit拉取工具仓库内的演示脚本 python/providers/crewai/crewai_demo.py 展示了另一种常见用法——按toolkits参数按需拉取某个应用的全部工具此处为 GitHubfrom composio_crewai import CrewAIProvider from crewai import Agent, Crew, Task from langchain_openai import ChatOpenAI from composio import Composio # Initialize tools. openai_client ChatOpenAI() composio Composio(providerCrewAIProvider()) # Get All the tools tools composio.tools.get(user_iddefault, toolkits[GITHUB]) # Define agent crewai_agent Agent( roleGithub Agent, goalYou take action on Github using Github APIs, backstory( You are AI agent that is responsible for taking actions on Github on users behalf. You need to take action on Github using Github APIs ), verboseTrue, toolstools, llmopenai_client, ) # Define task task Task( description( Star a repo composiohq/composio on GitHub, if the action is successful include Action executed successfully ), agentcrewai_agent, expected_outputif the star happened, ) my_crew Crew(agents[crewai_agent], tasks[task]) result my_crew.kickoff() print(result)这段代码与 README 快速开始的区别在于它通过composio.tools.get(...)直接按工具集过滤这里为 GITHUB并且用ChatOpenAILangChain作为 LLM展示了两条工具获取路径与两种 LLM 接入方式的组合。toolkits参数同样支持传列表批量启用多个应用。工具包装原理从 Composio Tool 到 BaseToolCrewAIProvider的核心实现在 python/providers/crewai/composio_crewai/providers.py。从源码看其适配过程分四层Schema 解引用dereference工具输入参数中若包含 JSON Schema 内部的$ref/$defs引用会先通过dereference_json_schema内联展开避免引用属性被类型化为Any而失去类型信息无法解析的悬空引用则降级为宽松的 object 类型而非直接报错生成 Pydantic 模型解引用后的 JSON Schema 交给json_schema_to_model见 python/composio/utils/shared.py构建args_schemaCrewAI 据此对 Agent 传入的参数做进入工具前的校验包装为BaseTool动态生成Wrapper(BaseTool)类以tool.slug作为工具名、tool.description作为描述执行回调_run内部调用execute_tool(slug..., arguments...)回调把实际执行交给 Composio 会话完成。值得注意的细节_run在执行前还会调用normalize_tool_arguments做一次防御性归一化见 python/composio/utils/shared.py。这是因为部分模型或 MCP 传输层会把工具参数以 JSON 字符串形式而非 dict 传出导致后端报 Input should be a valid dictionary 类错误该函数会把None归一为空 dict、把合法 JSON 字符串解析为 dict从而保证所有提供器行为一致。单元测试 python/tests/test_crewai_provider.py 专门验证了$ref解引用后被引用属性在args_schema中仍保持正确的嵌套 Pydantic 模型类型。错误处理结构化返回而非异常抛出README 明确给出了一条重要的工程实践工具校验失败时不会抛异常而是返回结构化结果{successful: False, error: validation message, data: None}也就是说在任务输出中检查successful字段即可判断工具调用是否成功而无需用try/except包裹调用。其实现路径从源码看有双重保障一方面CrewAI 的Wrapper.run捕获pydantic.ValidationError通过parse_pydantic_error见 python/composio/utils/pydantic.py把校验错误转成可读的字符串封装进上述结构另一方面_validate_kwargs在执行前先用validate_and_serialize_tool_arguments见 python/composio/utils/shared.py完成参数校验与序列化这一过程同样可能触发校验错误并被上层捕获。此外validate_and_serialize_tool_arguments的序列化语义也值得了解它利用 Pydantic 模型对可选字段的None占位与model_fields_set元数据在保留显式 null、默认值与别名映射的同时只向后端发送应当出现的参数避免未传字段被写成 null或默认值被丢弃两类问题。验证与调试建议仓库自带的测试 python/tests/test_crewai_provider.py 可帮助你理解包装器的 Schema 行为若需快速体验完整链路可直接运行 crewai_demo.py需先配置COMPOSIO_API_KEY与OPENAI_API_KEY调试时优先检查任务输出中的successful字段与error信息而不是依赖框架层日志参数形态异常如字符串化的 JSON已被normalize_tool_arguments兜底处理若使用多用户场景务必为每个用户创建独立会话不同user_id避免跨用户串用连接与授权状态。小结composio-crewai以极小的接入成本把 CrewAI 与 Composio 的工具生态打通安装两个依赖、配置两个环境变量、三行核心代码即可让 CrewAI Agent 具备跨 1000 应用的执行能力。其底层通过CrewAIProvider.wrap_tool完成 Schema 解引用、Pydantic 模型生成与BaseTool包装并通过normalize_tool_arguments与validate_and_serialize_tool_arguments双重保障参数的健壮性最终以successful结构化结果统一错误语义——这套轻接入、重结构的设计让 CrewAI 团队可以专注于编排逻辑而把工具生态与执行稳定性交给 Composio 平台。【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表