Tutorial Composio: Platform Integrasi Tool untuk AI Agents

# Tutorial Composio: Platform Integrasi Tool untuk AI Agents Composio adalah platform open-source yang memungkinkan AI agents terhubung dengan lebih dari 250+ tools dan aplikasi eksternal seperti Git...

By Ruby Abdullah · · tutorial
ComposioAI AgentsTool IntegrationLangChainPython

Tutorial Composio: Platform Integrasi Tool untuk AI Agents

Composio adalah platform open-source yang memungkinkan AI agents terhubung dengan lebih dari 250+ tools dan aplikasi eksternal seperti GitHub, Slack, Gmail, Google Sheets, Jira, dan banyak lagi. Dengan Composio, Anda bisa membangun AI agents yang tidak hanya bisa berpikir, tetapi juga bertindak langsung di dunia nyata melalui integrasi API yang aman dan terkelola.

Dalam tutorial ini, kita akan mempelajari cara menggunakan Composio mulai dari instalasi, autentikasi, hingga membangun AI agent yang bisa berinteraksi dengan berbagai tools secara otomatis.

Mengapa Composio?

Membangun AI agent yang bisa berinteraksi dengan tools eksternal biasanya memerlukan banyak boilerplate code: mengelola OAuth tokens, menulis wrapper API, menangani rate limiting, dan memastikan keamanan. Composio menyelesaikan semua masalah ini dengan menyediakan:

  • Managed Authentication: OAuth2, API Key, dan Basic Auth dikelola secara otomatis
  • 250+ Pre-built Integrations: GitHub, Slack, Gmail, Notion, Jira, Linear, Google Drive, dan banyak lagi
  • Framework Agnostic: Mendukung LangChain, CrewAI, AutoGen, LlamaIndex, OpenAI, dan framework lainnya
  • Type-safe Actions: Setiap tool action memiliki schema yang jelas untuk input dan output
  • Execution Environment: Mendukung eksekusi lokal, Docker, dan cloud

Instalasi

Instalasi Python SDK

pip install composio-core

Untuk integrasi dengan framework spesifik, install paket tambahan:

# Untuk OpenAI

pip install composio-openai

Untuk LangChain

pip install composio-langchain

Untuk CrewAI

pip install composio-crewai

Untuk Autogen

pip install composio-autogen

Untuk LlamaIndex

pip install composio-llamaindex

Instalasi CLI

Composio menyediakan CLI untuk mengelola koneksi dan tools:

pip install composio-core

Login ke Composio

composio login

Cek status

composio whoami

Setup API Key

Setelah login, Anda bisa mendapatkan API key dari dashboard Composio:

export COMPOSIOAPIKEY="your-api-key-here"

Atau simpan di file .env:

COMPOSIOAPIKEY=your-api-key-here

Basic Usage

Menghubungkan App

Langkah pertama adalah menghubungkan aplikasi yang ingin digunakan oleh agent. Composio mengelola proses OAuth secara otomatis:

from composio import ComposioToolSet, App, Action

Inisialisasi toolset

toolset = ComposioToolSet()

Memulai koneksi ke GitHub

Ini akan membuka browser untuk OAuth authorization

entity = toolset.getentity(id="default")

connectionrequest = entity.initiateconnection(

appname=App.GITHUB

)

print(f"Buka URL ini untuk authorize: {connectionrequest.redirectUrl}")

print(f"Connection status: {connectionrequest.connectionStatus}")

Untuk CLI, proses koneksi lebih sederhana:

# Menambahkan koneksi GitHub

composio add github

Menambahkan koneksi Slack

composio add slack

Melihat daftar koneksi aktif

composio connections

Menggunakan Tools dengan OpenAI

Berikut contoh sederhana menggunakan Composio dengan OpenAI untuk membuat agent yang bisa berinteraksi dengan GitHub:

from composioopenai import ComposioToolSet, Action

from openai import OpenAI

Inisialisasi

client = OpenAI()

toolset = ComposioToolSet()

Ambil tools untuk GitHub

tools = toolset.gettools(actions=[

Action.GITHUBCREATEISSUE,

Action.GITHUBLISTREPOS,

Action.GITHUBSTARREPO,

])

Buat request ke OpenAI dengan tools

response = client.chat.completions.create(

model="gpt-4o",

messages=[

{

"role": "system",

"content": "Kamu adalah asisten yang bisa membantu mengelola GitHub repositories."

},

{

"role": "user",

"content": "Buatkan issue baru di repo 'myorg/myproject' dengan judul 'Fix login bug' dan deskripsi 'Login page returns 500 error when using SSO'"

}

],

tools=tools,

toolchoice="auto"

)

Eksekusi tool calls

result = toolset.handletoolcalls(response)

print(result)

Menggunakan Tools dengan LangChain

from composiolangchain import ComposioToolSet, Action

from langchainopenai import ChatOpenAI

from langchain.agents import createopenaifunctionsagent, AgentExecutor

from langchaincore.prompts import ChatPromptTemplate

Setup

llm = ChatOpenAI(model="gpt-4o")

toolset = ComposioToolSet()

Ambil tools

tools = toolset.gettools(actions=[

Action.GMAILSENDEMAIL,

Action.GMAILLISTEMAILS,

Action.GMAILREADEMAIL,

])

Buat prompt

prompt = ChatPromptTemplate.frommessages([

("system", "Kamu adalah asisten email yang membantu mengelola inbox."),

("human", "{input}"),

("placeholder", "{agentscratchpad}"),

])

Buat agent

agent = createopenaifunctionsagent(llm, tools, prompt)

agentexecutor = AgentExecutor(agent=agent, tools=tools, verbose=True)

Jalankan

result = agentexecutor.invoke({

"input": "Tampilkan 5 email terbaru di inbox saya"

})

print(result["output"])

Advanced Usage

Custom Actions

Selain menggunakan actions bawaan, Anda bisa membuat custom action sendiri:

from composio import action

@action(toolname="customtool")

def calculateprojectcost(

hours: float,

hourlyrate: float,

taxpercentage: float = 10.0

) -> dict:

"""

Menghitung total biaya proyek berdasarkan jam kerja dan tarif.

:param hours: Jumlah jam kerja

:param hourlyrate: Tarif per jam dalam USD

:param taxpercentage: Persentase pajak (default 10%)

:return: Dictionary berisi subtotal, tax, dan total

"""

subtotal = hours hourlyrate

tax = subtotal (taxpercentage / 100)

total = subtotal + tax

return {

"subtotal": subtotal,

"tax": tax,

"total": total,

"currency": "USD"

}

Triggers (Event-Driven Agents)

Composio mendukung triggers yang memungkinkan agent merespons event secara real-time:

from composio import ComposioToolSet, Action

toolset = ComposioToolSet()

Membuat listener untuk GitHub events

listener = toolset.createtriggerlistener()

@listener.callback(filters={"triggername": "GITHUBPULLREQUESTEVENT"})

def onpullrequest(event):

"""Dipanggil setiap ada PR baru di repository"""

prdata = event.payload

print(f"New PR: {prdata['title']}")

print(f"Author: {prdata['user']['login']}")

print(f"Repository: {prdata['repository']['fullname']}")

# Agent bisa otomatis melakukan code review

# atau mengirim notifikasi ke Slack

return {"status": "processed"}

Mulai mendengarkan events

print("Listening for GitHub events...")

listener.listen()

Entity Management (Multi-User)

Untuk aplikasi yang melayani banyak pengguna, Composio menyediakan entity management:

from composio import ComposioToolSet

toolset = ComposioToolSet()

Setiap user memiliki entity sendiri

userentity = toolset.getentity(id="user-123")

Cek apakah user sudah terkoneksi ke GitHub

connections = userentity.getconnections()

githubconnected = any(

conn.appName == "github" for conn in connections

)

if not githubconnected:

# Inisiasi koneksi untuk user ini

request = userentity.initiateconnection(appname="github")

print(f"User perlu authorize: {request.redirectUrl}")

else:

# User sudah terkoneksi, langsung gunakan tools

tools = toolset.gettools(

actions=["GITHUBLISTREPOS"],

entityid="user-123"

)

Filtering Tools

Ketika bekerja dengan banyak tools, Anda bisa memfilter berdasarkan use case:

from composio import ComposioToolSet, App

toolset = ComposioToolSet()

Filter tools berdasarkan app

githubtools = toolset.gettools(apps=[App.GITHUB])

Filter berdasarkan tags/use case

tools = toolset.gettools(

apps=[App.GITHUB],

tags=["issues", "pullrequests"]

)

Filter actions spesifik

tools = toolset.gettools(actions=[

"GITHUBCREATEISSUE",

"GITHUBLISTPULLREQUESTS",

"GITHUBMERGEPULLREQUEST",

])

Integrasi dengan CrewAI

Composio sangat powerful ketika dikombinasikan dengan multi-agent frameworks seperti CrewAI:

from composiocrewai import ComposioToolSet, Action

from crewai import Agent, Task, Crew

toolset = ComposioToolSet()

Tools untuk project manager agent

pmtools = toolset.gettools(actions=[

Action.GITHUBCREATEISSUE,

Action.GITHUBLISTISSUES,

Action.SLACKSENDMESSAGE,

])

Tools untuk developer agent

devtools = toolset.gettools(actions=[

Action.GITHUBCREATEPULLREQUEST,

Action.GITHUBLISTPULLREQUESTS,

Action.GITHUBGETFILECONTENT,

])

Definisi agents

projectmanager = Agent(

role="Project Manager",

goal="Mengelola task dan koordinasi tim",

backstory="PM berpengalaman yang efisien mengelola proyek software",

tools=pmtools,

verbose=True

)

developer = Agent(

role="Software Developer",

goal="Mengimplementasikan fitur dan fix bugs",

backstory="Developer senior yang menulis kode berkualitas tinggi",

tools=devtools,

verbose=True

)

Definisi tasks

reviewtask = Task(

description="Review semua open issues di repo 'myorg/myproject' dan buat ringkasan prioritas",

agent=projectmanager,

expectedoutput="Daftar issues terurut berdasarkan prioritas"

)

Jalankan crew

crew = Crew(

agents=[projectmanager, developer],

tasks=[reviewtask],

verbose=True

)

result = crew.kickoff()

print(result)

Contoh Proyek: Automated PR Review Agent

Berikut contoh lengkap membangun agent yang otomatis melakukan code review pada setiap Pull Request baru:

from composioopenai import ComposioToolSet, Action

from openai import OpenAI

client = OpenAI()

toolset = ComposioToolSet()

def reviewpullrequest(repo: str, prnumber: int):

"""Review sebuah Pull Request secara otomatis"""

# Ambil tools yang diperlukan

tools = toolset.gettools(actions=[

Action.GITHUBGETPULLREQUEST,

Action.GITHUBLISTPULLREQUESTFILES,

Action.GITHUBCREATEREVIEWCOMMENT,

])

messages = [

{

"role": "system",

"content": """Kamu adalah senior code reviewer. Tugasmu:

  • Baca diff dari Pull Request
  • Identifikasi potential bugs, security issues, dan code quality problems
  • Berikan review comment yang konstruktif
  • Fokus pada masalah penting, bukan formatting"""
  • },

    {

    "role": "user",

    "content": f"Review PR #{prnumber} di repository {repo}. "

    f"Ambil daftar files yang berubah, analisis perubahannya, "

    f"dan berikan review comments."

    }

    ]

    # Loop untuk menangani multiple tool calls

    while True:

    response = client.chat.completions.create(

    model="gpt-4o",

    messages=messages,

    tools=tools,

    toolchoice="auto"

    )

    message = response.choices[0].message

    if message.toolcalls:

    # Eksekusi tool calls

    results = toolset.handletoolcalls(response)

    messages.append(message)

    for result in results:

    messages.append({

    "role": "tool",

    "toolcallid": result["toolcallid"],

    "content": str(result["result"])

    })

    else:

    # Agent selesai review

    print("Review selesai:")

    print(message.content)

    break

    Contoh penggunaan

    reviewpullrequest("myorg/myproject", 42)

    Daftar App yang Didukung

    Berikut beberapa kategori app yang didukung Composio:

    | Kategori | Apps |

    |----------|------|

    | Version Control | GitHub, GitLab, Bitbucket |

    | Communication | Slack, Discord, Microsoft Teams |

    | Email | Gmail, Outlook |

    | Project Management | Jira, Linear, Asana, Trello, Notion |

    | Cloud Storage | Google Drive, Dropbox, OneDrive |

    | CRM | Salesforce, HubSpot |

    | Database | Supabase, Airtable |

    | Monitoring | Datadog, PagerDuty |

    | CI/CD | GitHub Actions, CircleCI |

    | Social | Twitter/X, LinkedIn |

    Best Practices

    1. Gunakan Actions Spesifik

    Jangan load semua tools dari sebuah app. Pilih actions yang spesifik sesuai kebutuhan agent untuk mengurangi token usage dan meningkatkan akurasi:

    # Kurang optimal - terlalu banyak tools
    

    tools = toolset.gettools(apps=[App.GITHUB]) # 50+ actions

    Lebih optimal - hanya yang diperlukan

    tools = toolset.gettools(actions=[

    Action.GITHUBCREATEISSUE,

    Action.GITHUBLISTISSUES,

    ])

    2. Kelola Koneksi dengan Aman

    Selalu gunakan entity management untuk multi-user scenarios dan jangan hardcode credentials:

    # Jangan lakukan ini
    

    toolset = ComposioToolSet(apikey="hardcoded-key")

    Gunakan environment variable

    toolset = ComposioToolSet() # Otomatis baca COMPOSIOAPIKEY

    3. Handle Errors dengan Baik

    from composio.exceptions import ComposioSDKError
    
    

    try:

    result = toolset.executeaction(

    action=Action.GITHUBCREATEISSUE,

    params={

    "owner": "myorg",

    "repo": "myproject",

    "title": "Bug report",

    "body": "Description of the bug"

    }

    )

    except ComposioSDKError as e:

    print(f"Composio error: {e}")

    # Handle gracefully

    4. Gunakan Triggers untuk Event-Driven Architecture

    Daripada polling, gunakan triggers untuk merespons events secara real-time. Ini lebih efisien dan responsif.

    5. Testing dengan Sandbox

    Saat development, gunakan Composio sandbox environment untuk testing tanpa mengubah data production:

    # Gunakan environment sandbox untuk testing
    

    toolset = ComposioToolSet(

    workspaceconfig={

    "type": "docker",

    "image": "composio/sandbox:latest"

    }

    )

    6. Monitoring dan Logging

    Aktifkan logging untuk memantau penggunaan tools oleh agent:

    import logging
    
    

    logging.basicConfig(level=logging.INFO)

    logger = logging.getLogger("composio")

    Composio SDK akan log setiap action yang dieksekusi

    Kesimpulan

    Composio menyederhanakan proses membangun AI agents yang bisa berinteraksi dengan dunia nyata melalui integrasi tools yang terkelola. Dengan dukungan untuk 250+ aplikasi, managed authentication, dan kompatibilitas dengan berbagai AI framework, Composio menghilangkan kompleksitas boilerplate code sehingga Anda bisa fokus pada logika bisnis agent.

    Poin-poin penting yang perlu diingat:

    • Mulai dari yang sederhana: Pilih satu atau dua tools yang paling relevan dengan use case Anda
    • Gunakan actions spesifik: Hindari loading semua tools sekaligus untuk efisiensi token
    • Manfaatkan triggers: Untuk event-driven agents yang responsif dan efisien
    • Entity management: Wajib untuk aplikasi multi-user production
    • Keamanan: Selalu gunakan environment variables untuk API keys dan manfaatkan managed OAuth dari Composio

    Dengan fondasi ini, Anda bisa mulai membangun AI agents yang benar-benar produktif dan bisa menyelesaikan tugas nyata secara otomatis.

    Artikel Terkait

    Tutorial LangChain: Framework Paling Populer untuk Membangun Aplikasi LLM

    Tutorial LangChain: Framework Paling Populer untuk Membangun Aplikasi LLM LangChain adalah framework open-source yang di...

    Tutorial Lengkap LangGraph: Membangun AI Agents yang Kompleks

    Tutorial Lengkap LangGraph: Membangun AI Agents yang Kompleks LangGraph adalah library dari LangChain untuk membangun st...

    Tutorial Zep: Memori Jangka Panjang untuk AI Agent dengan Temporal Knowledge Graph

    Zep: Bikin AI Agent Punya Memori Jangka Panjang dengan Temporal Knowledge Graph Temen-temen, pernah ngobrol sama chatbot...

    Tutorial Lengkap Google Agent Development Kit (ADK): Membangun AI Agent dengan Python

    Tutorial Lengkap Google Agent Development Kit (ADK): Membangun AI Agent dengan Python Google Agent Development Kit (ADK)...