Home

Awesome

<p align="center"> <a href="https://x.com/GanatraSoham/?utm_campaign=github-readme" target="_blank"> <img src="./python/docs/imgs/follow_x.png" width="100%" alt="Follow me" /> </a> <br /> <br /> </p> <p align="center"> <a href="https://app.composio.dev/?utm_campaign=github-readme" target="_blank"> <img src="./python/docs/imgs/try_hosted.png" width="100%" alt="Sign up" /> </a>

<br /> <br />

</p> <p> <a href="https://github.com/composiohq/composio/blob/master/README.md">EN</a> | <a href="https://github.com/composiohq/composio/blob/master/README-CN.md">CN</a> | <a href="https://github.com/composiohq/composio/blob/master/README-JP.md">JP</a> </p> <p align="center"> <a href="https://composio.dev//#gh-dark-mode-only"> <img src="./python/docs/imgs/composio_white_font.svg" width="318px" alt="Composio logo" /> </a> <a href="https://composio.dev//#gh-light-mode-only"> <img src="./python/docs/imgs/composio_black_font.svg" width="318px" alt="Composio Logo" /> </a> </p> <p align="center"> <a href="https://github.com/composiodev/composio/actions/workflows/common.yml"> <img alt="Tests" src="https://img.shields.io/github/actions/workflow/status/composiodev/composio/common.yml?label=Tests&style=plastic&logo=github&color=blue&cacheSeconds=60"> </a> <a href="https://pypi.org/project/composio-core/"> <img alt="PyPI" src="https://img.shields.io/pypi/v/composio_core?label=Latest&style=plastic&logo=pypi&color=blue&cacheSeconds=60&logoColor=white"> </a> <a href="https://www.npmjs.com/package/composio-core"> <img alt="NPM" src="https://img.shields.io/npm/v/composio-core?style=plastic&logo=npm&logoColor=white&label=latest&color=blue&cacheSeconds=60"> </a> <a href="https://pypi.org/project/composio-core/"> <img alt="Downloads" src="https://img.shields.io/pypi/dm/composio-core?label=Downloads&style=plastic&logo=github&color=blue&cacheSeconds=60"> </a> </p> <h2 align="center"><i> Production Ready Toolset for AI Agents </i></h2> <h4 align="center">Equip your agent with high-quality tools & integrations without worrying about authentication, accuracy, and reliability in a single line of code! </h4> <div align="center"> <p> <a href="https://docs.composio.dev" rel="dofollow"><strong>Explore the Docs ยป</strong></a> </p> <p> <a href="https://app.composio.dev">Try on Dashboard</a> <b>|</b> <a href="https://www.composio.dev">Homepage</a> <b>|</b> <!-- <a href="https://docs.composio.dev/guides/examples">Examples</a> | <a href="https://docs.composio.dev/chat-with-docs">Chat with Docs</a> | --> <a href="https://docs.composio.dev/sdk">SDK</a> <b>|</b> <a href="https://docs.composio.dev/api-reference/">APIs</a> </p> </div> <hr> <div align="center"> <p > <b>โœจ Socials >></b> <a href="https://dub.composio.dev/JoinHQ">Discord</a> <b>|</b> <a href="https://www.youtube.com/@Composio">Youtube</a> <b>|</b> <a href="https://twitter.com/composiohq">Twitter</a> <b>|</b> <a href="https://www.linkedin.com/company/composio-dev"> Linkedin </a> </p> <p align="center"> <b>โ›๏ธ Contribute >></b> <a href="https://github.com/composiodev/composio/issues/new?assignees=&labels=type%3A+bug&template=bug_report.yml&title=%F0%9F%90%9B+Bug+Report%3A+">Report Bugs</a> <b>|</b> <a href="https://github.com/composiodev/composio/issues/new?assignees=&labels=feature&template=feature_request.yml&title=%F0%9F%9A%80+Feature%3A+">Request Feature</a> <b>|</b> <a href="https://github.com/composiodev/composio/blob/master/CONTRIBUTING.md">Contribute</a> </p> </div>

๐Ÿ“‹ Table of contents

๐Ÿค” Why Composio?

We believe AI Based Agents/Workflows are the future. Composio is the best toolset to integrate AI Agents to best Agentic Tools and use them to accomplish tasks.

<img alt="Illustration" src="./python/docs/imgs/banner.gif" style="border-radius: 5px"/>

๐Ÿ”ฅ Key Features

๐Ÿš€ Getting Started with Python

1. Installation

To get started, type the following command in your Terminal.

pip install composio-core

If you want to install the 'composio' package along with its openai plugin: pip install composio-openai.

2. Testing Composio in Action

Let's use Composio to create an AI Agent that can star a Github Repo.

composio add github # Connect your Github - Run this in terminal

from openai import OpenAI
from composio_openai import ComposioToolSet, App, Action

openai_client = OpenAI(
    api_key="{{OPENAIKEY}}"
)

# Initialise the Composio Tool Set

composio_tool_set = ComposioToolSet()

# Get GitHub tools that are pre-configured
actions = composio_tool_set.get_actions(
    actions=[Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER]
)

my_task = "Star a repo composiodev/composio on GitHub"

# Setup openai assistant
assistant_instruction = "You are a super intelligent personal assistant"

assistant = openai_client.beta.assistants.create(
    name="Personal Assistant",
    instructions=assistant_instruction,
    model="gpt-4-turbo",
    tools=actions,
)

# create a thread
thread = openai_client.beta.threads.create()

message = openai_client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content=my_task
)

# Execute Agent with integrations
run = openai_client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id
)


# Execute Function calls
response_after_tool_calls = composio_tool_set.wait_and_handle_assistant_tool_calls(
    client=openai_client,
    run=run,
    thread=thread,
)

print(response_after_tool_calls)

๐Ÿš€ Getting Started with Javascript

To get started with the Composio SDK in Javascript, follow these steps:

1. Install the Composio SDK:

npm install composio-core

2. Setup the OpenAI and Composio Tool Set:

import { OpenAI } from "openai";
import { OpenAIToolSet } from "composio-core";

const toolset = new OpenAIToolSet({
    apiKey: process.env.COMPOSIO_API_KEY,
});

async function setupUserConnectionIfNotExists(entityId) {
    const entity = await toolset.client.getEntity(entityId);
    const connection = await entity.getConnection('github');

    if (!connection) {
        // If this entity/user hasn't already connected the account
        const connection = await entity.initiateConnection(appName);
        console.log("Log in via: ", connection.redirectUrl);
        return connection.waitUntilActive(60);
    }

    return connection;
}

async function executeAgent(entityName) {
    const entity = await toolset.client.getEntity(entityName)
    await setupUserConnectionIfNotExists(entity.id);

    const tools = await toolset.get_actions({ actions: ["github_issues_create"] }, entity.id);
    const instruction = "Make an issue with sample title in the repo - himanshu-dixit/custom-repo-breaking"

    const client = new OpenAI({ apiKey: process.env.OPEN_AI_API_KEY })
    const response = await client.chat.completions.create({
        model: "gpt-4-turbo",
        messages: [{
            role: "user",
            content: instruction,
        }],
        tools: tools,
        tool_choice: "auto",
    })

    console.log(response.choices[0].message.tool_calls);
    await toolset.handle_tool_call(response, entity.id);
}

executeAgent("your-entity-name");

3. Run your script:

node your_script.js

This will set up the Composio SDK and execute an agent that creates a GitHub issue using the provided instructions.

For more details, refer to the Composio SDK Documentation.

๐Ÿ’ก Examples

Python Examples

Javascript Examples

Star History

Star History Chart

๐Ÿ“‹ Read Our Code Of Conduct

As part of our open-source community, we hold ourselves and other contributors to a high standard of communication. As a participant and contributor to this project, you agree to abide by our Code of Conduct.

๐Ÿค— Contributions

Composio is open-source and we welcome contributions. Please fork the repository, create a new branch for your feature, add your feature or improvement, and send a pull request.

Also go through our Contribution Guidelines and Code of Conduct before you start.

๐Ÿ”— Links

๐Ÿ›ก๏ธ License

Composio is licensed under the Elastic License - see the LICENSE file for details.

๐Ÿ’ช Thanks To All Contributors

<a href="https://github.com/composiohq/composio/graphs/contributors"> <img src="https://contributors-img.web.app/image?repo=composiodev/composio" alt="List of Contributors"/> </a>