이 노트북은 GitHub의 특정 repository에 대한 issue와 pull request(PR)를 로드하는 방법을 보여줍니다. 또한 GitHub의 특정 repository에 대한 github 파일을 로드하는 방법도 보여줍니다. 예제로 LangChain Python repository를 사용하겠습니다.

access token 설정

GitHub API에 접근하려면 personal access token이 필요합니다 - 여기에서 설정할 수 있습니다: github.com/settings/tokens?type=beta. 이 token을 환경 변수 GITHUB_PERSONAL_ACCESS_TOKEN으로 설정하면 자동으로 가져오거나, 초기화 시 access_token named parameter로 직접 전달할 수 있습니다.
# If you haven't set your access token as an environment variable, pass it in here.
from getpass import getpass

ACCESS_TOKEN = getpass()

Issue와 PR 로드하기

from langchain_community.document_loaders import GitHubIssuesLoader
loader = GitHubIssuesLoader(
    repo="langchain-ai/langchain",
    access_token=ACCESS_TOKEN,  # delete/comment out this argument if you've set the access token as an env var.
    creator="UmerHA",
)
“UmerHA”가 생성한 모든 issue와 PR을 로드해봅시다. 다음은 사용할 수 있는 모든 filter 목록입니다:
  • 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를 참조하세요.
docs = loader.load()
print(docs[0].page_content)
print(docs[0].metadata)

issue만 로드하기

기본적으로 GitHub API는 pull request도 issue로 간주합니다. pull request를 제외한 ‘순수한’ issue만 가져오려면 include_prs=False를 사용하세요.
loader = GitHubIssuesLoader(
    repo="langchain-ai/langchain",
    access_token=ACCESS_TOKEN,  # delete/comment out this argument if you've set the access token as an env var.
    creator="UmerHA",
    include_prs=False,
)
docs = loader.load()
print(docs[0].page_content)
print(docs[0].metadata)

Github 파일 내용 로드하기

아래 코드는 langchain-ai/langchain repository의 모든 markdown 파일을 로드합니다.
from langchain_community.document_loaders import GithubFileLoader
loader = GithubFileLoader(
    repo="langchain-ai/langchain",  # the repo name
    branch="master",  # the branch name
    access_token=ACCESS_TOKEN,
    github_api_url="https://api.github.com",
    file_filter=lambda file_path: file_path.endswith(
        ".md"
    ),  # load all markdowns files.
)
documents = loader.load()
document 중 하나의 예제 출력:
document.metadata:
    {
      "path": "README.md",
      "sha": "82f1c4ea88ecf8d2dfsfx06a700e84be4",
      "source": "https://github.com/langchain-ai/langchain/blob/master/README.md"
    }
document.content:
    mock content

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I