...,
        description=(
            "A keyword-focused natural language search"
            "query for code, e.g. `MyFunctionName()`."
        ),
    )
[docs]class CreateReviewRequest(BaseModel):
    username: str = Field(
        ...,
        description="GitHub username of the user being requested, e.g. `my_username`.",
    )
[docs]class SearchIssuesAndPRs(BaseModel):
    search_query: str = Field(
        ...,
        description="Natural language search query, e.g. `My issue title or topic`.",
    )
[docs]class GitHubToolkit(BaseToolkit):
    """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.
    """
    tools: List[BaseTool] = []
[docs]    @classmethod
    def from_github_api_wrapper(
        cls, github_api_wrapper: GitHubAPIWrapper
    ) -> "GitHubToolkit":
        operations: List[Dict] = [
            {
                "mode": "get_issues",
                "name": "Get Issues",
                "description": GET_ISSUES_PROMPT,
                "args_schema": NoInput,
            },
            {
                "mode": "get_issue",
                "name": "Get Issue",
                "description": GET_ISSUE_PROMPT,
                "args_schema": GetIssue,
            },
            {
                "mode": "comment_on_issue",