Lerne, wie du mit LangManus ein Multi-Agenten-System aufbaust, um ein GitHub-Repository zu analysieren, seine Commit-Historie zu scrapen, Aktivitätstrends zu visualisieren und einen Markdown-Bericht zu erstellen.
LangManus ist ein von der Community entwickeltes Open-Source-Framework zur KI-Automatisierung, mit dem strukturierte Multi-Agenten-Systeme mit Sprachmodellen erstellt werden können. Mit LangManus kannst du intelligente Agenten erstellen, die Planung, Recherche, Codierung, Browser-Interaktion und Berichterstattung in einer einzigen, zusammenhängenden Pipeline kombinieren.
In diesem Tutorial zeige ich dir, wie du eine funktionierende Demo mit LangManus erstellst:
Findet ein aktuelles Open-Source-Repository auf GitHub
Die Architektur von LangManus unterstützt eine fein abgestufte Kontrolle, Nachvollziehbarkeit und Erweiterbarkeit. Es basiert auf leistungsstarken Tools wie:
Mit LangManus kannst du intelligente Agenten erstellen, die Planung, Recherche, Codierung, Browser-Interaktion und Berichterstattung in einer einzigen, zusammenhängenden Pipeline vereinen:
YAML oder .env-based Konfiguration für Modelle und Schlüssel.
OpenAI-kompatible LLM-APIs (über LiteLLM).
Integration mit Tools wie Jina und Tavily für die Suche.
Unterstützung für Visionsmodelle, REPLs, Browser-Sessions und Markdown-Formatierung.
Die App, die wir bauen werden, ist ein interaktiver Assistent, der die Multi-Agenten-Fähigkeiten von LangManus nutzt, um ein GitHub-Repository zu analysieren. Um LangManus-Agenten einzurichten, brauchen wir eine Struktur mit mehreren Dateien, wobei jede Datei eine bestimmte Rolle im Multi-Agenten-System spielt:
planner.py: Damit wird die Reihenfolge der Aufgaben festgelegt.
agent.py: Diese Datei koordiniert die Agenten und hält den Kontext aufrecht.
agents/: Dieser Ordner enthält spezielle Agenten für Recherche, Scraping, Analyse und Berichterstattung.
streamlit_app.py: Sie enthält die UI-Schicht, um die Pipeline auszuführen und die Ergebnisse zu visualisieren.
Lass uns diese nacheinander umsetzen.
Schritt 1: Voraussetzungen
Bevor wir beginnen, müssen wir sicherstellen, dass wir die folgenden Tools und Bibliotheken installiert haben:
Überprüfe die Python-Version, die mindestens 3.8 oder höher sein sollte. Dann installierst du einfach alle anderen oben genannten Abhängigkeiten. Du brauchst außerdem ein GitHub-API-Token, um Ratenbeschränkungen zu vermeiden, und legst es als Umgebungsvariable im Terminal fest.
Jetzt, wo wir alle Abhängigkeiten installiert haben, können wir den Planer und den Agent Controller für unsere Anwendung erstellen.
1. Eine planner.py-Datei erstellen
Die Datei planner.py definiert einen einfachen 4-Schritte-Plan für jede erforderliche Aufgabe, z. B. Recherche, Durchsuchen, Analysieren und Berichten.
defplan_task(user_query):return[{'agent':'researcher','task':'Find trending repo'},{'agent':'browser','task':'Scrape GitHub activity'},{'agent':'coder','task':'Analyze recent commits and features'},{'agent':'reporter','task':'Generate Markdown report'}]Bereitgestellt von
Die obige Funktion gibt einen Schritt-für-Schritt-Aufgabenplan für das System zurück, bei dem jeder Schritt:
Gibt an, welcher Bearbeiter verantwortlich ist (Agent); und
Legt fest, was dieser Agent tun soll (Aufgabe).
2. Eine agent.py-Datei erstellen
Die Agentendatei definiert die Kernklasse LangManusAgent, die alle Agenten orchestriert und einen gemeinsamen Kontext aufrechterhält, während sie ihre Aufgaben erfüllen.
Der Code beginnt mit dem Aufruf der Funktion plan_task(), um eine Liste von Schritten abzurufen (definiert in planner.py). Dann führt er jeden Schritt aus, indem er den entsprechenden spezialisierten Agenten in der folgenden Reihenfolge aufruft:
Der Forscher Agent holt sich ein aktuelles GitHub-Repository.
Die Browser Agent liest die Commit-Aktivitäten des Repositorys über die GitHub-API aus.
Der coder Agent analysiert die Commit-Daten und erstellt Diagramme.
Die reporter Agent fasst alles in einem endgültigen Markdown-Bericht zusammen.
Jeder Agent speichert seine Ergebnisse im context Wörterbuch, so dass die nachgeschalteten Agenten auf die vorherigen Ergebnisse zugreifen und darauf aufbauen können.
Schritt 3: Die Implementierung der LangManus-Agenten
Jetzt, wo wir die Kernfunktionen fertig haben, können wir die Agenten für unsere Anwendung erstellen.
1. Eine agents/researcher.py-Datei erstellen
Dieser Agent identifiziert ein beliebtes Open-Source-Python-Projekt auf GitHub, indem er die GitHub Trending Seite.
import requests
from bs4 import BeautifulSoup
deffind_trending_repo():
url ="https://github.com/trending/python"
res = requests.get(url)
soup = BeautifulSoup(res.text,'html.parser')
repo = soup.select_one('article h2 a')['href'].strip()returnf"https://github.com{repo}"Bereitgestellt von
So funktioniert es:
Der Agent sendet eine GET-Anfrage an das GitHub-Repository und parst die zurückgegebene HTML-Antwort mit BeautifulSoup.
Anschließend wird das erste Projekt, das unter dem Trending-Tag aufgeführt ist, mithilfe eines CSS-Selektors gefunden und der URL-Pfad des Repository extrahiert (z. B. /user/repo).
Schließlich wird die vollständige GitHub-URL wie "https://github.com/user/repo" erstellt und zurückgegeben.
2. Eine agents/browser.py-Datei erstellen
Der Browser-Agent wird verwendet, um die jüngsten Aktivitäten aus dem ausgewählten GitHub-Repository abzurufen. Sie nutzt die GitHub REST API, um Commit-Historie und Metadaten zu sammeln.
import requests
import os
defscrape_github_activity(repo_url):
token = os.getenv("GITHUB_TOKEN")# Set via environment or .env
headers ={"Authorization":f"Bearer {token}"}if token else{}
user_repo ="/".join(repo_url.split('/')[-2:])
api_url =f"https://api.github.com/repos/{user_repo}/commits"
res = requests.get(api_url, headers=headers)
res.raise_for_status()
data = res.json()
commits =[]
commit_dates =[]for item in data[:20]:# optional: increase window for better activity chart
message = item['commit']['message']
author = item['commit']['author']['name']
date = item['commit']['author']['date']
sha = item['sha'][:7]
commits.append(f"[{sha}] {message} — {author} @ {date}")
commit_dates.append(date)# in ISO 8601 format (perfect for parsing)return{'repo_url': repo_url,'commits': commits,'commit_dates': commit_dates
}Bereitgestellt von
Die obige Funktion funktioniert folgendermaßen:
Sie extrahiert den Benutzer/Repo-Teil der GitHub-URL und stellt eine GitHub-API-Anfrage.
Der Agent parst dann das zurückgegebene JSON, um es zu extrahieren:
SHA verpflichten
Commit Nachricht
Name des Autors
Zeitstempel
Diese Werte werden in zwei Listen gespeichert: commits und commit_dates.
Schließlich gibt die Funktion ein Wörterbuch zurück, das beides enthält und von nachgelagerten Agenten zur weiteren Analyse und Visualisierung verwendet wird.
3. Eine agents/coder.py-Datei erstellen
Dieser Agent verarbeitet und analysiert den von GitHub gesammelten Commit-Verlauf und erstellt sowohl eine textliche Zusammenfassung als auch visuelle Einblicke mithilfe von Matplotlib.
# agents/coder.pyimport matplotlib.pyplot as plt
from collections import defaultdict, Counter
from datetime import datetime
import matplotlib.dates as mdates
import re
import os
defcategorize_commit(message):
message = message.lower()ifany(kw in message for kw in["fix","bug"]):return"🐛 Bug Fixes"elifany(kw in message for kw in["add","feature","implement"]):return"✨ Features"elifany(kw in message for kw in["doc","readme"]):return"📄 Documentation"elifany(kw in message for kw in["remove","delete"]):return"🔥 Removals"elifany(kw in message for kw in["update","upgrade"]):return"🔧 Updates"elifany(kw in message for kw in["merge","pull"]):return"🔀 Merges"else:return"📦 Others"defanalyze_code_activity(repo_data):
commit_messages = repo_data['commits']
commit_dates = repo_data.get('commit_dates',[])# Chart 1: Commits per day (last 30 days)
commit_day_counts = defaultdict(int)for date in commit_dates:
day = datetime.fromisoformat(date).date()
commit_day_counts[day]+=1
recent_days =sorted(commit_day_counts.keys())
counts =[commit_day_counts[day]for day in recent_days]
plt.figure(figsize=(10,4))
plt.plot(recent_days, counts, marker='o', linestyle='-', color='tab:blue', label='Commits per day')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%b %d'))
plt.gcf().autofmt_xdate()
plt.xlabel("Date")
plt.ylabel("Commits")
plt.title("📈 Commits in Last 30 Days")
plt.legend()
path1 ="commit_chart.png"
plt.tight_layout()
plt.savefig(path1)
plt.close()# Chart 2: Commits per category
commit_categories = defaultdict(list)
category_counter = Counter()for msg in commit_messages:
short_msg = re.split(r'—|@', msg)[0].strip()
category = categorize_commit(short_msg)
commit_categories[category].append(short_msg)
category_counter[category]+=1
plt.figure(figsize=(8,4))
cats, values =zip(*category_counter.items())
plt.bar(cats, values, color='tab:green')
plt.ylabel("Commits")
plt.title("🧩 Commits by Category")
path2 ="category_chart.png"
plt.tight_layout()
plt.savefig(path2)
plt.close()# Chart 3: Word frequency in commit messages (basic proxy for hot areas)
word_freq = Counter()for msg in commit_messages:
words = re.findall(r'\b\w{4,}\b', msg.lower())# only words with length >= 4
word_freq.update(words)
most_common = word_freq.most_common(10)
labels, freqs =zip(*most_common)
plt.figure(figsize=(8,4))
plt.bar(labels, freqs, color='tab:purple')
plt.ylabel("Frequency")
plt.title("🔥 Most Mentioned Topics in Commits")
path3 ="topics_chart.png"
plt.tight_layout()
plt.savefig(path3)
plt.close()# Build markdown report
analysis =["## 🔍 Commit Highlights by Category"]for cat, msgs in commit_categories.items():
analysis.append(f"\n### {cat}")for m in msgs[:3]:
clean_msg = m.replace("\n"," ").strip()
analysis.append(f"- {clean_msg[:100]}{'...'iflen(clean_msg)>100else''}")
charts =[path1, path2, path3]return analysis, chartsBereitgestellt von
Dieser Agent verarbeitet die GitHub-Commit-Historie und erstellt eine Markdown-Zusammenfassung und visuelle Diagramme mit matplotlib. Es kategorisiert Commits in vordefinierte Gruppen wie Bugfixes, Features, Dokumentation und mehr, indem es Schlüsselwörter abgleicht. Unter matplotlib werden dann drei aufschlussreiche Diagramme erstellt, die zeigen:
Commit-Aktivitäten in den letzten 30 Tagen
Zusagen nach Kategorie
Die am häufigsten verwendeten Schlüsselwörter in Commit-Meldungen
Schließlich erstellt der Agent eine Markdown-Zusammenfassung, die die wichtigsten Commits in jeder Kategorie hervorhebt, und gibt sowohl die Zusammenfassung als auch die Diagramm-Pfade zur Darstellung im Bericht zurück.
4. Eine agents/reporter.py-Datei erstellen
Der Reporter-Agent erstellt den abschließenden Markdown-Bericht, der alles zusammenfasst:
Der Link zum GitHub-Repository
Eine Aufzählung der letzten Commits
Eine kategorisierte Zusammenfassung von Commit-Meldungen (vom Coder-Agent)
defgenerate_report(repo_url, repo_data, analysis, chart_path):
md =f"""# 🧠 GitHub Repo Analysis
## 🔗 Repo: [{repo_url}]({repo_url})
## 📝 Recent Commits:
"""for c in repo_data['commits']:
md +=f"- {c}\n"
md +="\n## 🔍 Analysis:\n"for line in analysis:
md +=f"- {line}\n"return mdBereitgestellt von
Die Funktion generate_report() stellt den endgültigen Markdown-Bericht mit der GitHub-URL, den Commit-Daten, der kategorisierten Analyse und den Diagramm-Pfaden zusammen. Sie gibt einen einzelnen Markdown-formatierten String zurück, der im Terminal angezeigt oder in einer Benutzeroberfläche wie Streamlit. Sie gibt einen einzelnen Markdown-formatierten String zurück, der auf der Konsole ausgegeben oder in Streamlit gerendert werden kann.
Schritt 4: Erstellen der Benutzeroberfläche mit Streamlit
Mit der Streamlit-App kannst du die gesamte Pipeline mit einem einzigen Klick ausführen. Erstelle eine streamlit_app.py Datei und füge den folgenden Code hinzu:
import streamlit as st
from agent import LangManusAgent
import os
from PIL import Image
st.set_page_config(page_title="LangManus GitHub Analyzer", layout="wide")
st.title("🧠 LangManus GitHub Repo Analyzer")if st.button("🔍 Run Analysis on Trending Repo"):with st.spinner("Running LangManus agents..."):
agent = LangManusAgent(task="Find a popular open-source project updated recently and summarize its new features with examples and charts.")
report, chart_paths = agent.run_and_return()
st.markdown(report)
st.subheader("📊 Charts")for path in chart_paths:if os.path.exists(path):
st.image(Image.open(path), caption=os.path.basename(path).replace('_',' ').replace('.png','').title(), use_container_width=True)else:
st.info("Click the button to run analysis on a trending GitHub Python repo.")Bereitgestellt von
Der Code funktioniert folgendermaßen:
Sie nutzt die streamlit Bibliothek, um ein minimales Dashboard zu erstellen, das beim Klicken auf die Schaltfläche "Analysieren" die Funktion LangManusAgent.run_and_return() auslöst.
Die App zeigt den Markdown-Bericht mit der Funktion st.markdown() an und durchläuft die einzelnen Diagrammpfade in einer Schleife, um sie dann mit der Funktion st.image() wiederzugeben.
Die endgültige Struktur unseres von LangManus betriebenen GitHub-Analyseprojekts sollte wie folgt aussehen:
Wenn du in deinem Browser auf die Schaltfläche "Run Analysis on Trending Repo" klickst, werden deine LangManus-gesteuerten Agenten innerhalb von Sekunden Einblicke in das GitHub-Repository abrufen, analysieren und präsentieren.
Fazit
Mit LangManus können wir strukturierte Multiagentensysteme aufbauen, die mit Daten aus der realen Welt interagieren. In diesem Leitfaden haben wir einen vollautomatischen GitHub Repo Analyzer erstellt, in dem wir:
Recherchiere die trendigen Repositories.
Gekratzte Commit-Historie.
Visualisierte Trends mit Diagrammen
Zusammengefasste Ergebnisse in Markdown
LangManus hat großes Potenzial für den Aufbau von Forschungsagenten, Dashboards und datengesteuerten Assistenten.
Ich bin Google Developers Expertin für ML (Gen AI), dreifache Kaggle-Expertin und Women-Techmakers-Botschafterin mit über drei Jahren Erfahrung in der Tech-Branche. 2020 habe ich ein Health-Tech-Startup mitgegründet und absolviere derzeit einen Master in Informatik an der Georgia Tech mit Schwerpunkt Machine Learning.
Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
LangManus ist ein von der Community entwickeltes Open-Source-Framework zur KI-Automatisierung, mit dem strukturierte Multi-Agenten-Systeme mit Sprachmodellen erstellt werden können. Mit LangManus kannst du intelligente Agenten erstellen, die Planung, Recherche, Codierung, Browser-Interaktion und Berichterstattung in einer einzigen, zusammenhängenden Pipeline kombinieren.
In diesem Tutorial zeige ich dir, wie du eine funktionierende Demo mit LangManus erstellst:
Was ist LangManus?
Die Architektur von LangManus unterstützt eine fein abgestufte Kontrolle, Nachvollziehbarkeit und Erweiterbarkeit. Es basiert auf leistungsstarken Tools wie:
Mit LangManus kannst du intelligente Agenten erstellen, die Planung, Recherche, Codierung, Browser-Interaktion und Berichterstattung in einer einzigen, zusammenhängenden Pipeline vereinen:
YAMLoder.env-basedKonfiguration für Modelle und Schlüssel.LangManus Projektübersicht: GitHub Repository Analyzer
Die App, die wir bauen werden, ist ein interaktiver Assistent, der die Multi-Agenten-Fähigkeiten von LangManus nutzt, um ein GitHub-Repository zu analysieren. Um LangManus-Agenten einzurichten, brauchen wir eine Struktur mit mehreren Dateien, wobei jede Datei eine bestimmte Rolle im Multi-Agenten-System spielt:
Lass uns diese nacheinander umsetzen.
Schritt 1: Voraussetzungen
Bevor wir beginnen, müssen wir sicherstellen, dass wir die folgenden Tools und Bibliotheken installiert haben:
Überprüfe die Python-Version, die mindestens 3.8 oder höher sein sollte. Dann installierst du einfach alle anderen oben genannten Abhängigkeiten. Du brauchst außerdem ein GitHub-API-Token, um Ratenbeschränkungen zu vermeiden, und legst es als Umgebungsvariable im Terminal fest.
So generierst du GitHub-Tokens:
Führe nun den folgenden Befehl aus:
Schritt 2: Planer und Agent Controller erstellen
Jetzt, wo wir alle Abhängigkeiten installiert haben, können wir den Planer und den Agent Controller für unsere Anwendung erstellen.
1. Eine planner.py-Datei erstellen
Die Datei
planner.pydefiniert einen einfachen 4-Schritte-Plan für jede erforderliche Aufgabe, z. B. Recherche, Durchsuchen, Analysieren und Berichten.Die obige Funktion gibt einen Schritt-für-Schritt-Aufgabenplan für das System zurück, bei dem jeder Schritt:
2. Eine agent.py-Datei erstellen
Die Agentendatei definiert die Kernklasse
LangManusAgent, die alle Agenten orchestriert und einen gemeinsamen Kontext aufrechterhält, während sie ihre Aufgaben erfüllen.Der Code beginnt mit dem Aufruf der Funktion
plan_task(), um eine Liste von Schritten abzurufen (definiert inplanner.py). Dann führt er jeden Schritt aus, indem er den entsprechenden spezialisierten Agenten in der folgenden Reihenfolge aufruft:Jeder Agent speichert seine Ergebnisse im
contextWörterbuch, so dass die nachgeschalteten Agenten auf die vorherigen Ergebnisse zugreifen und darauf aufbauen können.Schritt 3: Die Implementierung der LangManus-Agenten
Jetzt, wo wir die Kernfunktionen fertig haben, können wir die Agenten für unsere Anwendung erstellen.
1. Eine agents/researcher.py-Datei erstellen
Dieser Agent identifiziert ein beliebtes Open-Source-Python-Projekt auf GitHub, indem er die GitHub Trending Seite.
So funktioniert es:
2. Eine agents/browser.py-Datei erstellen
Der Browser-Agent wird verwendet, um die jüngsten Aktivitäten aus dem ausgewählten GitHub-Repository abzurufen. Sie nutzt die GitHub REST API, um Commit-Historie und Metadaten zu sammeln.
Die obige Funktion funktioniert folgendermaßen:
commitsundcommit_dates.3. Eine agents/coder.py-Datei erstellen
Dieser Agent verarbeitet und analysiert den von GitHub gesammelten Commit-Verlauf und erstellt sowohl eine textliche Zusammenfassung als auch visuelle Einblicke mithilfe von Matplotlib.
Dieser Agent verarbeitet die GitHub-Commit-Historie und erstellt eine Markdown-Zusammenfassung und visuelle Diagramme mit
matplotlib. Es kategorisiert Commits in vordefinierte Gruppen wie Bugfixes, Features, Dokumentation und mehr, indem es Schlüsselwörter abgleicht. Untermatplotlibwerden dann drei aufschlussreiche Diagramme erstellt, die zeigen:Schließlich erstellt der Agent eine Markdown-Zusammenfassung, die die wichtigsten Commits in jeder Kategorie hervorhebt, und gibt sowohl die Zusammenfassung als auch die Diagramm-Pfade zur Darstellung im Bericht zurück.
4. Eine agents/reporter.py-Datei erstellen
Der Reporter-Agent erstellt den abschließenden Markdown-Bericht, der alles zusammenfasst:
Die Funktion
generate_report()stellt den endgültigen Markdown-Bericht mit der GitHub-URL, den Commit-Daten, der kategorisierten Analyse und den Diagramm-Pfaden zusammen. Sie gibt einen einzelnen Markdown-formatierten String zurück, der im Terminal angezeigt oder in einer Benutzeroberfläche wie Streamlit. Sie gibt einen einzelnen Markdown-formatierten String zurück, der auf der Konsole ausgegeben oder in Streamlit gerendert werden kann.Schritt 4: Erstellen der Benutzeroberfläche mit Streamlit
Mit der Streamlit-App kannst du die gesamte Pipeline mit einem einzigen Klick ausführen. Erstelle eine
streamlit_app.pyDatei und füge den folgenden Code hinzu:Der Code funktioniert folgendermaßen:
streamlitBibliothek, um ein minimales Dashboard zu erstellen, das beim Klicken auf die Schaltfläche "Analysieren" die FunktionLangManusAgent.run_and_return()auslöst.st.markdown()an und durchläuft die einzelnen Diagrammpfade in einer Schleife, um sie dann mit der Funktionst.image()wiederzugeben.Die endgültige Struktur unseres von LangManus betriebenen GitHub-Analyseprojekts sollte wie folgt aussehen:
Schritt 5: Testen der StreamLit App
Jetzt, wo alle Komponenten vorhanden sind, können wir unsere Streamlit-Anwendung starten. Führe den folgenden Befehl im Terminal aus:
Wenn du in deinem Browser auf die Schaltfläche "Run Analysis on Trending Repo" klickst, werden deine LangManus-gesteuerten Agenten innerhalb von Sekunden Einblicke in das GitHub-Repository abrufen, analysieren und präsentieren.
Fazit
Mit LangManus können wir strukturierte Multiagentensysteme aufbauen, die mit Daten aus der realen Welt interagieren. In diesem Leitfaden haben wir einen vollautomatischen GitHub Repo Analyzer erstellt, in dem wir:
LangManus hat großes Potenzial für den Aufbau von Forschungsagenten, Dashboards und datengesteuerten Assistenten.