Skip to main content

GitHub

这个笔记本展示了如何在GitHub上为给定的存储库加载问题和拉取请求(PRs)。我们将使用LangChain Python存储库作为示例。

设置访问令牌 (Setup access token)

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

# 如果您还没有将访问令牌设置为环境变量,请在此处传递它。
from getpass import getpass

ACCESS_TOKEN = getpass()

加载问题和PRs (Load Issues and PRs)

from langchain.document_loaders import GitHubIssuesLoader
loader = GitHubIssuesLoader(
repo="hwchase17/langchain",
access_token=ACCESS_TOKEN, # 如果您已将访问令牌设置为环境变量,请删除/注释掉此参数。
creator="UmerHA",
)

让我们加载由"UmerHA"创建的所有问题和PRs。

以下是您可以使用的所有筛选器列表:

  • include_prs
  • milestone
  • state
  • assignee
  • creator
  • mentioned
  • labels
  • sort
  • direction
  • since

有关更多信息,请参见https://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)
    # 创建GitHubLoader (#5257)

GitHubLoader是一个从GitHub加载问题和PRs的DocumentLoader。

修复 #5257

社区成员可以在测试通过后审查PR。标记可能感兴趣的维护者/贡献者:
DataLoaders
- @eyurtsev

{'url': 'https://github.com/hwchase17/langchain/pull/5408', 'title': 'DocumentLoader for GitHub', 'creator': 'UmerHA', 'created_at': '2023-05-29T14:50:53Z', 'comments': 0, 'state': 'open', 'labels': ['enhancement', 'lgtm', 'doc loader'], 'assignee': None, 'milestone': None, 'locked': False, 'number': 5408, 'is_pull_request': True}

仅加载问题 (Only load issues)

默认情况下,GitHub API将拉取请求也视为问题。要仅获取“纯粹”的问题(即没有拉取请求),请使用include_prs=False

loader = GitHubIssuesLoader(
repo="hwchase17/langchain",
access_token=ACCESS_TOKEN, # 如果您已将访问令牌设置为环境变量,请删除/注释掉此参数。
creator="UmerHA",
include_prs=False,
)
docs = loader.load()
print(docs[0].page_content)
print(docs[0].metadata)
    ### 系统信息 (System Info)

LangChain版本 = 0.0.167
Python版本 = 3.11.0
系统 = Windows 11(使用Jupyter)

### 谁可以帮助? (Who can help?)

- @hwchase17
- @agola11
- @UmerHA(我已经准备好修复,将提交PR)

### 信息 (Information)

- [ ] 官方示例笔记本/脚本
- [X] 我自己修改的脚本

### 相关组件 (Related Components)

- [X] LLMs/Chat Models
- [ ] 嵌入模型 (Embedding Models)
- [X] 提示 / 提示模板 / 提示选择器 (Prompts / Prompt Templates / Prompt Selectors)
- [ ] 输出解析器 (Output Parsers)
- [ ] 文档加载器 (Document Loaders)
- [ ] 向量存储 / 检索器 (Vector Stores / Retrievers)
- [ ] 内存 (Memory)
- [ ] 代理 / 代理执行器 (Agents / Agent Executors)
- [ ] 工具 / 工具包 (Tools / Toolkits)
- [ ] 链 (Chains)
- [ ] 回调/跟踪 (Callbacks/Tracing)
- [ ] 异步 (Async)

### 复现 (Reproduction)

```
import os
os.environ["OPENAI_API_KEY"] = "..."

from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.prompts.chat import ChatPromptTemplate
from langchain.schema import messages_from_dict

role_strings = [
("system", "you are a bird expert"),
("human", "which bird has a point beak?")
]
prompt = ChatPromptTemplate.from_role_strings(role_strings)
chain = LLMChain(llm=ChatOpenAI(), prompt=prompt)
chain.run({})
```

### 期望的行为 (Expected behavior)

链应该运行
{'url': 'https://github.com/hwchase17/langchain/issues/5027', 'title': "ChatOpenAI models don't work with prompts created via ChatPromptTemplate.from_role_strings", 'creator': 'UmerHA', 'created_at': '2023-05-20T10:39:18Z', 'comments': 1, 'state': 'open', 'labels': [], 'assignee': None, 'milestone': None, 'locked': False, 'number': 5027, 'is_pull_request': False}