mirror of
https://github.com/Mintplex-Labs/langchain-python.git
synced 2026-08-27 01:15:22 -04:00
1f3b987860
Co-authored-by: Trevor Dobbertin <trevordobbertin@gmail.com>
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
"""
|
|
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}
|
|
|
|
TODO: remove below
|
|
Below is a sample script that uses the Github tool:
|
|
|
|
```python
|
|
from langchain.agents import AgentType
|
|
from langchain.agents import initialize_agent
|
|
from langchain.agents.agent_toolkits.github.toolkit import GitHubToolkit
|
|
from langchain.llms import OpenAI
|
|
from langchain.utilities.github import GitHubAPIWrapper
|
|
|
|
llm = OpenAI(temperature=0)
|
|
github = GitHubAPIWrapper()
|
|
toolkit = GitHubToolkit.from_github_api_wrapper(github)
|
|
agent = initialize_agent(
|
|
toolkit.get_tools(), llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
|
|
)
|
|
|
|
agent.run(
|
|
"{{Enter a prompt here to direct the agent}}"
|
|
)
|
|
|
|
```
|
|
"""
|
|
from typing import Optional
|
|
|
|
from pydantic import Field
|
|
|
|
from langchain.callbacks.manager import (
|
|
AsyncCallbackManagerForToolRun,
|
|
CallbackManagerForToolRun,
|
|
)
|
|
from langchain.tools.base import BaseTool
|
|
from langchain.utilities.github import GitHubAPIWrapper
|
|
|
|
|
|
class GitHubAction(BaseTool):
|
|
api_wrapper: GitHubAPIWrapper = Field(default_factory=GitHubAPIWrapper)
|
|
mode: str
|
|
name = ""
|
|
description = ""
|
|
|
|
def _run(
|
|
self,
|
|
instructions: str,
|
|
run_manager: Optional[CallbackManagerForToolRun] = None,
|
|
) -> str:
|
|
"""Use the GitHub API to run an operation."""
|
|
return self.api_wrapper.run(self.mode, instructions)
|
|
|
|
async def _arun(
|
|
self,
|
|
_: str,
|
|
run_manager: Optional[AsyncCallbackManagerForToolRun] = None,
|
|
) -> str:
|
|
"""Use the GitHub API to run an operation."""
|
|
raise NotImplementedError("GitHubAction does not support async")
|