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
- 造訪 Composio Dashboard 註冊帳號
- 建立新專案,獲取 API Key
- 設定環境變數:
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 的邏輯而非基礎設施。
核心價值
- 開發效率:從數週縮短到數小時
- 可靠性:託管認證和專業維護的工具整合
- 可擴展性:輕鬆新增工具,無需重構程式碼
- 可觀察性:完整的呼叫日誌幫助除錯和最佳化
適用情境
- ✅ 企業級 AI Agent 產品
- ✅ 需要多工具整合的複雜工作流程
- ✅ 快速原型驗證
- ✅ 需要稽核日誌的生產環境
下一步
- 造訪 Composio GitHub 檢視完整文件
- 在 Dashboard 建立免費帳戶
- 探索 Composio Hub 瀏覽所有可用工具
AI Agent 的未來在於行動能力,而 Composio 正是連接意圖與行動的橋樑。