# GitHubToolkit

> **Class** in `langchain_community`

📖 [View in docs](https://reference.langchain.com/python/langchain-community/agent_toolkits/github/toolkit/GitHubToolkit)

GitHub Toolkit.

*Security Note*: This toolkit contains tools that can read and modify
    the state of a service; e.g., by creating, deleting, or updating,
    reading underlying data.

    For example, this toolkit can be used to create issues, pull requests,
    and comments on GitHub.

    See [Security](https://python.langchain.com/docs/security) for more information.

## Signature

```python
GitHubToolkit()
```

## Description

**Setup:**

See detailed installation instructions here:
https://python.langchain.com/docs/integrations/tools/github/#installation

You will need to install ``pygithub`` and set the following environment
variables:

.. code-block:: bash

    pip install -U pygithub
    export GITHUB_APP_ID="your-app-id"
    export GITHUB_APP_PRIVATE_KEY="path-to-private-key"
    export GITHUB_REPOSITORY="your-github-repository"

**Instantiate:**

.. code-block:: python

from langchain_community.agent_toolkits.github.toolkit import GitHubToolkit
from langchain_community.utilities.github import GitHubAPIWrapper

github = GitHubAPIWrapper()
toolkit = GitHubToolkit.from_github_api_wrapper(github)

**Tools:**

.. code-block:: python

    tools = toolkit.get_tools()
    for tool in tools:
        print(tool.name)

.. code-block:: none

    Get Issues
    Get Issue
    Comment on Issue
    List open pull requests (PRs)
    Get Pull Request
    Overview of files included in PR
    Create Pull Request
    List Pull Requests' Files
    Create File
    Read File
    Update File
    Delete File
    Overview of existing files in Main branch
    Overview of files in current working branch
    List branches in this repository
    Set active branch
    Create a new branch
    Get files from a directory
    Search issues and pull requests
    Search code
    Create review request

**Include release tools:**

By default, the toolkit does not include release-related tools.
You can include them by setting ``include_release_tools=True`` when
initializing the toolkit:

.. code-block:: python

    toolkit = GitHubToolkit.from_github_api_wrapper(
        github, include_release_tools=True
    )

Setting ``include_release_tools=True`` will include the following tools:

.. code-block:: none

    Get latest release
    Get releases
    Get release

**Use within an agent:**

.. code-block:: python

    from langchain_openai import ChatOpenAI
    from langgraph.prebuilt import create_react_agent

    # Select example tool
    tools = [tool for tool in toolkit.get_tools() if tool.name == "Get Issue"]
    assert len(tools) == 1
    tools[0].name = "get_issue"

    llm = ChatOpenAI(model="gpt-4o-mini")
    agent_executor = create_react_agent(llm, tools)

    example_query = "What is the title of issue 24888?"

    events = agent_executor.stream(
        {"messages": [("user", example_query)]},
        stream_mode="values",
    )
    for event in events:
        event["messages"][-1].pretty_print()

.. code-block:: none

     ================================[1m Human Message [0m=================================

    What is the title of issue 24888?
    ==================================[1m Ai Message [0m==================================
    Tool Calls:
    get_issue (call_iSYJVaM7uchfNHOMJoVPQsOi)
    Call ID: call_iSYJVaM7uchfNHOMJoVPQsOi
    Args:
        issue_number: 24888
    =================================[1m Tool Message [0m=================================
    Name: get_issue

    {"number": 24888, "title": "Standardize KV-Store Docs", "body": "..."
    ==================================[1m Ai Message [0m==================================

    The title of issue 24888 is "Standardize KV-Store Docs".

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `tools` | `unknown` | Yes | List[BaseTool]. The tools in the toolkit. Default is an empty list. |

## Extends

- `BaseToolkit`

## Properties

- `tools`

## Methods

- [`from_github_api_wrapper()`](https://reference.langchain.com/python/langchain-community/agent_toolkits/github/toolkit/GitHubToolkit/from_github_api_wrapper)
- [`get_tools()`](https://reference.langchain.com/python/langchain-community/agent_toolkits/github/toolkit/GitHubToolkit/get_tools)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-community/blob/d5ea8358933260ad48dd31f7f8076555c7b4885a/libs/community/langchain_community/agent_toolkits/github/toolkit.py#L167)