Toggle Menu
Prev Up Next

# Source code for langchain_community.tools.github.tool

    """
    This tool allows agents to interact with the pygithub library
    and operate on a GitHub repository.

    To use this tool, you must first set as environment variables:
        GITHUB_API_TOKEN
        GITHUB_REPOSITORY -> format: {owner}/{repo}

    """
    from typing import Optional, Type

    from langchain_core.callbacks import CallbackManagerForToolRun
    from langchain_core.pydantic_v1 import BaseModel, Field
    from langchain_core.tools import BaseTool

    from langchain_community.utilities.github import GitHubAPIWrapper

    class GitHubAction(BaseTool):
        """Tool for interacting with the GitHub API."""

        api_wrapper: GitHubAPIWrapper = Field(default_factory=GitHubAPIWrapper)
        mode: str
        name: str = ""
        description: str = ""
        args_schema: Optional[Type[BaseModel]] = None

        def _run(
            self,
            instructions: Optional[str] = "",
            run_manager: Optional[CallbackManagerForToolRun] = None,
        ) -> str:
            """Use the GitHub API to run an operation."""
            if not instructions or instructions == "{}":
                # Catch other forms of empty input that GPT-4 likes to send.
                instructions = ""
            return self.api_wrapper.run(self.mode, instructions)