MAT496 Capstone项目-GitHub存储库分析代理
我的项目视频演示链接
https://drive.google.com/drive/folders/1W21nlAV7Ess8TDhaJ_CDK_3y31Dy5kLL?usp=sharing
MAT496概述
在本课程中,我们学习了Langgraph,这是一个非常有用的工具,用于构建可以处理非结构化文本、找到我们需要的信息并以我们想要的任何格式呈现的应用程序。我们讨论的主要主题是:
- 提示
- 结构化输出
- 语义搜索
- 检索增强生成(RAG)
- 工具调用LLM和MCP
- 语言图:状态、节点、图形
我们还了解到Langsmith有助于调试Langgraph代码。
______________________________________________________________________
Capstone项目目标
顶点项目让我们有机会练习课程中的所有主要主题,并展示一些创造力。这个想法是思考以前无法解决但现在可以用我们所学到的知识解决的问题。例如,法学硕士可以分析不同类型的新闻,建立法律助理,或者帮助处理任何需要大量阅读的事情。
______________________________________________________________________
项目报告
标题:使用LangGraph的GitHub存储库分析器代理
概述
该项目是一个分析GitHub存储库和问题的AI代理。它可以调查代码库、研究错误、回答有关存储库的问题,并提供修复建议。代理使用LangGraph进行编排,并将任务委托给专门的子代理(RepoInvestigator和ErrorResearcher)进行集中研究。
选择此项目的原因
该项目与课程内容完美契合,因为它使用了:
- 提示:主代理和子代理的自定义提示,以指导他们的行为
- 结构化输出:用于状态管理和工具输入的Pydantic模型
- 检索增强生成:获取存储库文件和问题详细信息,为分析提供上下文
- 工具调用:用于GitHub API、web搜索、文件系统和分析的16+工具
- 兰格拉夫:具有用于代理推理、工具执行和子代理委托的节点的状态机
- 主控程序:GitHub MCP用于存储库访问,FileSystem MCP用于本地操作
- 郎史密斯:用于调试和跟踪代理执行
基本上,它将我们学到的一切结合到一个项目中,解决了一个真正的问题——帮助开发人员理解和调试代码。
计划
- \[完成\] 步骤1:设置具有依赖关系的项目结构(LangChain、LangGraph、PyGithub、Tavily)
- \[完成\] 步骤2:为代理对话和上下文创建状态管理架构
- \[完成\] 步骤3:实施16个工具,分为5类(GitHub、搜索、文件、分析、TODO)
- \[完成\] 步骤4:使用RepoInvestigator和ErrorResearcher设计和实现子代理架构
- \[完成\] 步骤5:使用任务委派系统构建主代理编排
- \[完成\] 步骤6:使用Click和Rich创建CLI界面以进行用户交互
- \[完成\] 步骤7:添加增强的错误处理功能,并提供有用的消息
- \[完成\] 步骤8:使用真实存储库进行测试并修复错误(状态验证、API兼容性)
结论
我计划使用LangGraph构建一个功能齐全的GitHub分析代理,我认为我实现了。该代理可以成功:
- 分析GitHub问题并提供调查报告
- 回答有关存储库的问题
- 将任务委托给专门的子代理
- 用有用的消息优雅地处理错误
我很满意,因为代理实际上可以工作并使用所有课程概念。让子代理委托工作很有挑战性(必须修复状态验证问题),但使用Langsmith Traces进行调试有很大帮助。最终产品可以真正帮助开发人员更快地理解代码库。
______________________________________________________________________
一个智能AI代理,可以分析GitHub存储库,调查问题,回答有关代码的问题,并使用LangChain/LangGraph和专门的子代理提出修复建议。
特性✨
- 问题分析:自动分析GitHub问题,提取堆栈跟踪,并查找错误来源
- 存储库问答:询问有关任何GitHub存储库的自然语言问题
- 错误研究:在网络上搜索已知的解决方案和文档
- 代码调查:导航存储库结构并跟踪依赖关系
- 多代理架构:用于深入分析的专业子代理(RepoInvestigator、ErrorResearcher)
建筑🏗️
Main Agent (Orchestrator)
├── RepoInvestigator → Analyzes code structure and locates files
├── ErrorResearcher → Searches for solutions and documentation
└── Context Files → Stores detailed findings for efficiencyLangSmith github代理项目中的我的痕迹
list_repository_structure工具调用: alt text alt text alt text
相关事件输出测试屏幕截图: alt text read_file_from_repo工具调用: alt text alt text
代理的各种功能: alt text 使用Streamlit干净前端UI的代理的小型生产就绪现场演示: alt text alt text alt text Github仓库问题的详细分析以及用户截图: alt text alt text 为解决该问题而提出的建议: alt text
示例测试仓库: alt text alt text alt text alt text alt text alt text alt text alt text alt text alt text 最后一个的跟踪: alt text alt text
安装📦
1.克隆或导航到项目目录
cd github_agent2.安装依赖项
pip install -r requirements.txt3.配置API密钥
复制 .env.example 到 .env 并填写您的API密钥:
cp .env.example .env所需的API密钥:
- OpenAI: 获取API密钥 - 人类学: 获取API密钥
4.验证配置
python -c "from src.config import Config; Config.print_config()"用法🚀
分析GitHub问题
python -m src.main analyze-issue https://github.com/owner/repo/issues/123询问存储库
python -m src.main ask owner/repo "How does the authentication work?"交互模式
python -m src.main interactive项目结构📁
github_agent/
├── src/
│ ├── config.py # Configuration management
│ ├── state.py # Agent state schema
│ ├── tools/ # Tool implementations
│ │ ├── github_tools.py # GitHub API tools
│ │ ├── search_tools.py # Web search tools
│ │ ├── file_tools.py # File system tools
│ │ └── analysis_tools.py # Code analysis tools
│ ├── agents/ # Sub-agent definitions
│ │ ├── repo_investigator.py
│ │ └── error_researcher.py
│ └── main.py # Main orchestrator
├── tests/ # Unit tests
├── examples/ # Example scripts
├── requirements.txt # Python dependencies
├── .env # Your API keys (not committed)
└── .env.example # Template for API keys配置⚙️
编辑 .env 自定义:
# Model Selection
DEFAULT_MODEL=anthropic:claude-sonnet-4-20250514
# or
DEFAULT_MODEL=openai:gpt-4o
# Agent Limits
MAX_CONCURRENT_RESEARCH_UNITS=3 # Parallel sub-agents
MAX_RESEARCHER_ITERATIONS=3 # Max search iterations
MAX_SEARCH_RESULTS=3 # Results per search开发状态🚧
- ✅ 第一阶段:项目设置和基础
- ✅ 第二阶段:核心工具开发
- ✅ 第3阶段:子代理架构
- ✅ 阶段4:主代理编排
- ✅ 第5阶段:工作流实施
- ✅ 第6阶段:CLI界面
- ✅ 第7阶段:测试和改进
- ✅ 第8阶段:文件编制
示例输出📊
# Investigation Report: Issue #123
## Issue Summary
Error in authentication module when using OAuth2 flow
## Stack Trace Analysis
- Error: KeyError: 'access_token'
- File: src/auth/oauth.py:45
- Function: process_callback()
## Code Investigation
Found 3 relevant files:
1. src/auth/oauth.py - Contains error location
2. src/config.py - OAuth configuration
3. tests/test_oauth.py - Related tests
## Research Findings
Similar issues found:
- Issue #87: Missing token validation
- StackOverflow solution for OAuth callbacks
## Proposed Fix
Add token validation before access...贡献🤝
这是一个顶点项目。请随意分叉和伸展!
鸣谢🙏
Ajit Kumar博士,Shiv Nadar大学助理教授,MAT496-法学硕士课程项目介绍
内置:
______________________________________________________________________
由...制作❤️ MAT496-法学硕士课程项目简介
单元测试 alt text
