Composio 是什麼?

在 AI Agent 開發領域,工具呼叫(Tool Calling) 是讓大型語言模型從「聊天機器人」進化為「智慧助手」的關鍵能力。然而,為 Agent 整合外部工具一直是個痛點:你需要處理 OAuth 認證、API 限流、錯誤重試、權限管理等複雜問題。

Composio 正是為解決這個問題而生的開源框架。它被描述為 「AI Agent 的行動層(Action Layer)」,提供了 500+ 預建置的 LLM-ready 工具,涵蓋 GitHub、Slack、Gmail、Notion、Jira 等主流應用,以及 Hacker News、Reddit 等內容平台。

核心特性

  • 1000+ 應用整合:支援主流 SaaS 工具和內容平台
  • 託管認證(Managed Auth):自動處理 OAuth 權杖更新、權限管理
  • 多框架支援:無縫整合 LangChain、LlamaIndex、OpenAI Agents、CrewAI、AutoGen 等
  • 沙箱執行環境:安全的工具呼叫隔離
  • 並行執行:支援多個工具同時呼叫,提升 Agent 效率
  • 即時儀表板:監控工具呼叫日誌和效能

為什麼選擇 Composio?

傳統方式 使用 Composio
手動實作每個工具的 OAuth 流程 一行程式碼完成認證
自己處理 API 限流和重試 內建速率限制和錯誤處理
為每個框架編寫適配程式碼 統一的 SDK 介面
除錯困難,缺乏可觀察性 完整的呼叫日誌和監控

對於企業級 AI Agent 專案,Composio 可以節省數週的整合開發時間。對於個人開發者,它是快速原型驗證的最佳選擇。


安裝 Composio

Composio 提供 Python 和 TypeScript 兩種 SDK,你可以根據專案技術棧選擇。

Python 安裝

# 使用 pip
pip install composio

# 或使用 poetry
poetry add composio

如果你使用 OpenAI Agents 框架,還需要安裝對應的 provider:

pip install composio_openai_agents openai-agents

TypeScript/Node.js 安裝

# 使用 npm
npm install @composio/core

# 使用 yarn
yarn add @composio/core

# 使用 pnpm
pnpm add @composio/core

對於 OpenAI Agents 整合:

npm install @composio/openai-agents @openai/agents

獲取 API Key

  1. 造訪 Composio Dashboard 註冊帳號
  2. 建立新專案,獲取 API Key
  3. 設定環境變數:
export COMPOSIO_API_KEY="your-api-key-here"

快速上手:第一個 AI Agent

讓我們建立一個簡單的 Agent,讓它能夠查詢 Hacker News 的最新動態。

Python 範例

import asyncio
from agents import Agent, Runner
from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider

# 初始化 Composio 客戶端
composio = Composio(provider=OpenAIAgentsProvider())

# 獲取使用者 ID(用於認證隔離)
user_id = "user@example.com"

# 獲取 Hacker News 工具
tools = composio.tools.get(
    user_id=user_id,
    toolkits=["HACKERNEWS"]
)

# 建立 Agent
agent = Agent(
    name="HackerNews Agent",
    instructions="你是一個 Hacker News 助手,可以幫助使用者了解最新的技術動態。",
    tools=tools,
)

# 執行 Agent
async def main():
    result = await Runner.run(
        starting_agent=agent,
        input="今天 Hacker News 上最熱門的技術文章是什麼?",
    )
    print(result.final_output)

asyncio.run(main())

TypeScript 範例

import { Composio } from '@composio/core';
import { OpenAIAgentsProvider } from '@composio/openai-agents';
import { Agent, run } from '@openai/agents';

// 初始化 SDK
const composio = new Composio({
  provider: new OpenAIAgentsProvider(),
});

const userId = 'user@example.com';

// 獲取工具
const tools = await composio.tools.get(userId, {
  toolkits: ['HACKERNEWS'],
});

// 建立 Agent
const agent = new Agent({
  name: 'HackerNews assistant',
  tools: tools,
});

// 執行
const result = await run(agent, 'What is the latest hackernews post about?');
console.log(JSON.stringify(result.finalOutput, null, 2));

執行上述程式碼後,Agent 會自動呼叫 Hacker News API,獲取最新文章並返回摘要。整個過程無需你手動處理 API 認證或資料解析。


進階功能:多工具整合

Composio 的強大之處在於可以同時為 Agent 賦予多個工具的能力。下面是一個更複雜的範例:建立一個能夠管理 GitHub Issue 並發送 Slack 通知的 Agent。

設定多工具 Agent

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider

# 初始化
composio = Composio(provider=OpenAIAgentsProvider())
user_id = "dev-team@company.com"

# 獲取多個工具包
tools = composio.tools.get(
    user_id=user_id,
    toolkits=["GITHUB", "SLACK"],
)

# 建立 DevOps Agent
agent = Agent(
    name="DevOps Assistant",
    instructions="""
    你是一個 DevOps 助手,可以:
    1. 查詢 GitHub 儲存庫的 Issue 狀態
    2. 建立新的 Issue 或 Pull Request
    3. 向 Slack 頻道發送通知

    當發現重要的 Issue 更新時,自動通知團隊。
    """,
    tools=tools,
)

實際應用情境

情境 1:自動化 Issue 追蹤

async def monitor_issues():
    """監控關鍵 Issue 並通知團隊"""
    result = await Runner.run(
        starting_agent=agent,
        input="""
        檢查 composiohq/composio 儲存庫中標籤為 'bug' 且超過 7 天未回覆的 Issue,
        將列表發送到 #engineering Slack 頻道。
        """,
    )
    print(result.final_output)

情境 2:CI/CD 通知機器人

Agent 可以監聽 GitHub Actions 的執行狀態,當建置失敗時自動建立 Issue 並通知相關負責人。


認證管理:Composio 的核心優勢

傳統 Agent 開發中,OAuth 認證是最繁瑣的部分之一。Composio 透過託管認證(Managed Authentication)徹底解決了這個問題。

認證流程比較

傳統方式: 1. 在 Google Cloud Console 註冊應用 2. 設定 OAuth 同意畫面 3. 處理授權碼交換 4. 實作權杖更新邏輯 5. 安全儲存憑證 6. 處理權限撤銷

使用 Composio:

# 只需一行程式碼觸發認證流程
connection = composio.connections.initiate(
    user_id=user_id,
    app_name="gmail",
)
# 使用者完成 OAuth 授權後,Composio 自動管理權杖

支援的認證類型

  • OAuth 2.0:Google、GitHub、Slack、Notion 等
  • API Key:OpenAI、Anthropic、Stripe 等
  • Basic Auth:部分舊有系統
  • JWT:自訂服務

Composio 會自動處理權杖更新、權限範圍管理和安全儲存。你的 Agent 程式碼無需關心這些細節。


與主流框架整合

Composio 設計為框架無關的工具層,可以輕鬆整合到任何 AI Agent 生態中。

LangChain 整合

from composio_langchain import ComposioToolSet

toolset = ComposioToolSet()
tools = toolset.get_tools(apps=["github", "slack"])

from langchain.agents import initialize_agent
agent = initialize_agent(
    tools=tools,
    llm=your_llm,
    agent_type="zero-shot-react-description"
)

CrewAI 整合

from crewai import Agent, Task, Crew
from composio_crewai import ComposioToolSet

toolset = ComposioToolSet()
github_tools = toolset.get_tools(apps=["github"])

researcher = Agent(
    role='GitHub Researcher',
    goal='分析 GitHub 趨勢專案',
    tools=github_tools,
    backstory='你是一位開源專案分析師',
)

AutoGen 整合

from composio_autogen import ComposioToolSet

toolset = ComposioToolSet()
tools = toolset.get_tools(apps=["notion", "gmail"])

# 將工具傳遞給 AutoGen Agent
assistant = ConversableAgent(
    "assistant",
    llm_config={"config_list": config_list},
    function_map=tools.get_function_map(),
)

實戰案例:建置智慧客服 Agent

讓我們建置一個完整的智慧客服 Agent,它能夠: 1. 查詢知識庫(Notion) 2. 建立支援工單(Jira) 3. 發送郵件回覆(Gmail)

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider

# 初始化
composio = Composio(provider=OpenAIAgentsProvider())
user_id = "support-bot@company.com"

# 獲取客服相關工具
tools = composio.tools.get(
    user_id=user_id,
    toolkits=["NOTION", "JIRA", "GMAIL"],
)

# 建立客服 Agent
support_agent = Agent(
    name="Customer Support Agent",
    instructions="""
    你是公司的智慧客服助手。工作流程:

    1. 首先在 Notion 知識庫中搜尋使用者問題的答案
    2. 如果找到答案,透過 Gmail 發送給使用者
    3. 如果找不到答案,在 Jira 中建立支援工單,
       分配給技術支援團隊,並透過 Gmail 告知使用者工單號

    保持友善、專業的語氣。
    """,
    tools=tools,
)

# 處理使用者查詢
async def handle_customer_query(customer_email: str, question: str):
    prompt = f"""
    客戶信箱:{customer_email}
    問題:{question}

    請按照工作流程處理。
    """

    result = await Runner.run(
        starting_agent=support_agent,
        input=prompt,
    )
    return result.final_output

這個 Agent 可以部署為 webhook 服務,自動處理來自郵件表單的客戶諮詢。


效能最佳化實務

1. 並行工具呼叫

Composio 支援並行執行多個工具,顯著提升 Agent 回應速度:

# 同時查詢多個資料來源
tools = composio.tools.get(
    user_id=user_id,
    toolkits=["GITHUB", "GITLAB", "BITBUCKET"],
)
# Agent 可以並行查詢三個平台的專案資訊

2. 工具快取

對於頻繁呼叫的唯讀操作,啟用快取可以減少 API 呼叫次數:

tools = composio.tools.get(
    user_id=user_id,
    toolkits=["HACKERNEWS"],
    cache_ttl=300,  # 快取 5 分鐘
)

3. 按需載入工具

不要一次載入所有工具,根據情境動態選擇:

# 開發情境:只載入程式碼相關工具
dev_tools = composio.tools.get(user_id, toolkits=["GITHUB", "GITLAB"])

# 辦公情境:只載入生產力工具
office_tools = composio.tools.get(user_id, toolkits=["GMAIL", "NOTION", "SLACK"])

4. 錯誤處理

Composio 內建了重試機制,但你也可以新增自訂錯誤處理:

try:
    result = await Runner.run(agent, input)
except ToolExecutionError as e:
    print(f"工具執行失敗: {e}")
    # 降級策略:使用備用工具或返回友善提示

Composio vs 其他方案

特性 Composio LangChain Tools 自建整合
預建置工具數量 500+ ~50 0
託管認證 需自建
多框架支援 僅 LangChain N/A
可觀察性 ✅ 完整儀表板 有限 需自建
開源 ✅ MIT N/A
自託管選項 N/A N/A

對於生產環境,Composio 的託管認證和可觀察性是無可替代的優勢。對於學習目的,LangChain 內建工具足夠入門。


總結

Composio 代表了 AI Agent 開發的未來方向:將複雜性抽象化,讓開發者專注於 Agent 的邏輯而非基礎設施

核心價值

  1. 開發效率:從數週縮短到數小時
  2. 可靠性:託管認證和專業維護的工具整合
  3. 可擴展性:輕鬆新增工具,無需重構程式碼
  4. 可觀察性:完整的呼叫日誌幫助除錯和最佳化

適用情境

  • ✅ 企業級 AI Agent 產品
  • ✅ 需要多工具整合的複雜工作流程
  • ✅ 快速原型驗證
  • ✅ 需要稽核日誌的生產環境

下一步

AI Agent 的未來在於行動能力,而 Composio 正是連接意圖與行動的橋樑。