> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub 集成

> 使用 LangChain Python 与 GitHub 文档加载器集成。

本笔记本展示了如何加载 [GitHub](https://github.com/) 上给定仓库的问题和拉取请求（PR）。同时也展示了如何加载 [GitHub](https://github.com/) 上给定仓库的 GitHub 文件。我们将以 LangChain Python 仓库为例。

## 设置访问令牌

要访问 GitHub API，您需要一个个人访问令牌 - 您可以在此处设置您的令牌：[github.com/settings/tokens?type=beta](https://github.com/settings/tokens?type=beta)。您可以将此令牌设置为环境变量 `GITHUB_PERSONAL_ACCESS_TOKEN`，它将被自动读取，或者您可以在初始化时直接将其作为 `access_token` 命名参数传入。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# 如果您尚未将访问令牌设置为环境变量，请在此处传入。
from getpass import getpass

ACCESS_TOKEN = getpass()
```

## 加载问题和拉取请求

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_community.document_loaders import GitHubIssuesLoader
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
loader = GitHubIssuesLoader(
    repo="langchain-ai/langchain",
    access_token=ACCESS_TOKEN,  # 如果您已将访问令牌设置为环境变量，请删除/注释掉此参数。
    creator="UmerHA",
)
```

让我们加载由 "UmerHA" 创建的所有问题和拉取请求。

以下是您可以使用的所有过滤器列表：

* include\_prs
* milestone
* state
* assignee
* creator
* mentioned
* labels
* sort
* direction
* since

更多信息，请参阅 [docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#list-repository-issues](https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#list-repository-issues)。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
docs = loader.load()
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
print(docs[0].page_content)
print(docs[0].metadata)
```

## 仅加载问题

默认情况下，GitHub API 返回的结果将拉取请求也视为问题。要仅获取“纯粹”的问题（即不包括拉取请求），请使用 `include_prs=False`

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
loader = GitHubIssuesLoader(
    repo="langchain-ai/langchain",
    access_token=ACCESS_TOKEN,  # 如果您已将访问令牌设置为环境变量，请删除/注释掉此参数。
    creator="UmerHA",
    include_prs=False,
)
docs = loader.load()
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
print(docs[0].page_content)
print(docs[0].metadata)
```

## 加载 GitHub 文件内容

对于以下代码，加载仓库 `langchain-ai/langchain` 中的所有 markdown 文件

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_community.document_loaders import GithubFileLoader
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
loader = GithubFileLoader(
    repo="langchain-ai/langchain",  # 仓库名称
    branch="master",  # 分支名称
    access_token=ACCESS_TOKEN,
    github_api_url="https://api.github.com",
    file_filter=lambda file_path: file_path.endswith(
        ".md"
    ),  # 加载所有 markdown 文件。
)
documents = loader.load()
```

其中一个文档的示例输出：

```json theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
document.metadata:
    {
      "path": "README.md",
      "sha": "82f1c4ea88ecf8d2dfsfx06a700e84be4",
      "source": "https://github.com/langchain-ai/langchain/blob/master/README.md"
    }
document.content:
    mock content
```

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs)通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/python/integrations/document_loaders/github.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
