Github仓库分析聊天机器人
本文介绍如何使用抓取的数据和LLM构建一个分析GitHub仓库的AI聊天机器人。

我建立了一个AI聊天机器人,它可以回答关于GitHub仓库的问题,并通过提取仓库数据的关键见解来提供答案。我使用了Bright Data的数据AI网络抓取工具来收集结构化的数据,并使用Ollama的Phi3模型训练了一个聊天机器人来分析和与这些数据进行交互。
在这篇文章中,我将带你了解:
- 如何使用Bright Data的数据AI网络抓取工具获取GitHub仓库数据。
- 使用Ollama的Phi3模型训练聊天机器人的步骤。
- 实现基于Streamlit的GitHub见解工具以实现实时交互。
- 使用AI进行仓库分析的经验教训及其影响。
1、使用Bright Data获取GitHub数据集
为了训练聊天机器人,我需要一个包含关键仓库详细信息的高质量数据集。我没有手动从GitHub抓取数据,而是使用了Bright Data的AI抓取器,它提供了结构化且自动化的收集仓库数据的方法。
他们有使用其网络抓取器从任何网站抓取数据的两种方法。这些网络抓取器具有Scraper API和任何人都可以使用的无代码抓取器。
使用Bright Data网络抓取器提取GitHub数据的步骤如下:
a) 在Bright Data上注册并点击左侧栏中的网络抓取器。
如果你是新用户首次登录,你将获得5美元的免费试用服务,有效期为7天。

b) 在搜索栏中搜索 “GitHub”并点击第一个结果。

c) 会出现一系列GitHub抓取器。选择 “GitHub Repository — Collect by URL”用于此用途。

d) 选择无代码抓取器。

e) 点击 “添加输入”以添加所需的GitHub仓库链接,然后点击“开始收集”。

f) 一旦状态字段显示为”就绪”,点击“下载”并选择CSV格式。

2、构建GitHub见解工具
这个项目使用Python进行数据处理,并使用Streamlit构建简单的UI。
前提条件
- 任意你喜欢的代码编辑器。
- 安装Python(推荐版本3.8及以上)。
2.1 设置项目
创建项目文件夹:
mkdir github-insights-tool
cd github-insights-tool
设置虚拟环境:
python -m venv venv
激活环境:
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
安装依赖项:
pip install pandas streamlit langchain_community
Streamlit — 用于构建UI
- Pandas — 用于处理数据集操作
- LangChain (Ollama) — 用于AI驱动的仓库分析
项目结构:
github-insights-tool/
│── github.csv #你的数据集来自Bright Data
│── ai.py
2.2 本地安装和运行聊天机器人(Ollama Phi3模型)
这个AI工具通过分析GitHub仓库的优缺点和可用性生成有关仓库的见解。它还提供了关键的仓库详情,而无需导航到GitHub的多个部分。
为什么选择Ollama?
- 免费且易于设置
- 本地运行,无需互联网依赖
- 提供快速且可定制的响应
安装Ollama
Ollama 提供了一个简单的CLI工具来本地运行大型语言模型(LLMs)。根据你的操作系统安装它:
- Windows(PowerShell):
curl -LO https://ollama.com/download/latest/windows && start ollama.exe
- Linux(Curl):
curl -fsSL https://ollama.ai/install.sh | sh
- macOS(Homebrew):
brew install ollama
下载Phi3模型:
ollama pull phi3
运行Ollama模型:
ollama run phi3
注意: 始终确保Ollama模型正在本地运行后再执行代码。否则,AI模型将无法访问。
2.3 实现GitHub见解工具
该工具包含以下功能:
初始化Ollama
import streamlit as st
import pandas as pd
from langchain_ollama import OllamaLLM
# 使用选定的模型初始化Ollama
llm = OllamaLLM(model="phi3")
加载GitHub数据库
@st.cache_data
def load_github_data():
df = pd.read_csv("githubdata.csv")
df.columns = df.columns.str.strip().str.lower() # 将列名标准化为小写
return df
使用AI分析所需仓库
def analyze_repository(repo_data, llm):
prompt = f"""
分析以下GitHub仓库数据并提供见解:
{repo_data.to_dict()}
关注点:
1. 代码质量和可维护性
2. 流行度和参与度
3. 潜在用途
4. 关键优势和劣势
"""
try:
return llm.invoke(prompt)
except Exception as e:
return f"生成分析时出错:{e}"
此函数基于代码质量、参与度和潜在用途生成见解。
与AI生成的分析进行交互
def interact_with_analysis(analysis, query, llm):
prompt = f"""
根据以下分析:
{analysis}
回答用户的查询:{query}
"""
try:
return llm.invoke(prompt)
except Exception as e:
return f"处理查询时出错:{e}"
这允许用户与AI生成的仓库分析进行交互。
2.4 定义Streamlit应用程序
核心功能
- 允许用户输入GitHub网址(这是CSV文件中的任何一个网址,因此它可以提供针对特定GitHub仓库的答案)。
- 基于分析启动AI聊天机器人交互。
def main():
# 在标题旁边添加GitHub徽标
st.markdown("""<h1 style='display: flex; align-items: center;'>
<img src='https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png' width='40' style='margin-right:10px;'>
GitHub仓库见解工具
</h1>""", unsafe_allow_html=True)
github_df = load_github_data()
# 用户输入字段,用于输入GitHub仓库网址
repo_url = st.text_input("输入GitHub仓库网址")
analysis_result = ""
if repo_url:
# 根据输入的网址过滤数据集
repo_data = github_df[github_df["url"] == repo_url]
if not repo_data.empty:
repo_data = repo_data.iloc[0]
# 显示仓库详情
st.subheader("仓库详情")
st.write(f"语言:{repo_data['code_language']}")
st.write(f"星数:{repo_data['num_stared']}")
st.write(f"分叉数:{repo_data['num_fork']}")
st.write(f"拉取请求:{repo_data['num_pull_requests']}")
st.write(f"最后功能:{repo_data['last_feature']}")
st.write(f"最新更新:{repo_data['latest_update']}")
# 显示仓库所有者详情
st.subheader("所有者详情")
st.write(f"所有者:{repo_data['user_name']}")
st.write(f"网址:{repo_data['url']}")
# AI驱动的仓库分析
st.subheader("AI分析")
if st.button("生成分析"):
with st.spinner("分析仓库..."):
analysis_result = analyze_repository(repo_data, llm)
st.session_state["analysis"] = analysis_result # 将分析存储在会话状态中
st.write(analysis_result)
else:
st.warning("仓库不在数据集中。请输入有效的网址。")
# 基于生成的分析与AI聊天机器人进行交互
if "analysis" in st.session_state:
st.subheader("与AI关于此仓库的聊天")
user_query = st.text_input("询问关于仓库分析的问题")
if user_query:
with st.spinner("处理查询..."):
response = interact_with_analysis(st.session_state["analysis"], user_query, llm)
st.write(response)
# 运行Streamlit应用程序
if __name__ == "__main__":
main()
运行应用程序:
在终端上,运行以下命令:
streamlit run app.py
2.5 使用GitHub见解工具应用程序
粘贴仓库网址并查看分析。

点击 **“生成分析”** 以生成仓库报告。

与聊天机器人互动以获得更多见解。

3、结束语
使用Bright Data的数据AI网络抓取工具和Ollama Phi3模型在GitHub仓库上训练聊天机器人非常有效,能够自动化仓库分析。这种方法节省时间,提高准确性,并提供基于真实仓库数据的AI响应。
对于寻找干净、结构化GitHub数据集的开发人员,Bright Data提供了可靠的现成数据集和API集成,以简化数据提取和分析。
原文链接:How I Trained a Chatbot on GitHub Repositories Using an AI Scraper and LLM
汇智网翻译整理,转载请标明出处
