""" 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)