📚 KEI-Agent SDK Examples¶
🏢 Unternehmensbewertung börsennotierter Unternehmen¶
Vollständiges Multi-Agent-System für die Bewertung börsennotierter Unternehmen mit Datensammlung, Analyse und Berichterstellung.
import asyncio
import httpx
import json
from datetime import datetime
from kei_agent import UnifiedKeiAgentClient, AgentClientConfig, CapabilityManager, CapabilityProfile
# DATENSAMMLUNG-TOOLS
async def financial_reports_tool(symbol: str) -> dict:
"""Sammelt Geschäftsberichte und Finanzdaten."""
async with httpx.AsyncClient() as client:
# Alpha Vantage API für Finanzdaten
response = await client.get(
f"https://www.alphavantage.co/query?function=OVERVIEW&symbol={symbol}&apikey=demo"
)
data = response.json()
return {
"symbol": symbol,
"company_name": data.get("Name", ""),
"market_cap": data.get("MarketCapitalization", ""),
"pe_ratio": data.get("PERatio", ""),
"revenue": data.get("RevenueTTM", ""),
"profit_margin": data.get("ProfitMargin", ""),
"timestamp": datetime.now().isoformat()
}
async def stock_data_tool(symbol: str) -> dict:
"""Sammelt Kapitalmarktdaten."""
async with httpx.AsyncClient() as client:
response = await client.get(
f"https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={symbol}&apikey=demo"
)
data = response.json().get("Global Quote", {})
return {
"symbol": symbol,
"price": data.get("05. price", ""),
"change": data.get("09. change", ""),
"change_percent": data.get("10. change percent", ""),
"volume": data.get("06. volume", ""),
"timestamp": datetime.now().isoformat()
}
async def industry_data_tool(sector: str) -> dict:
"""Sammelt Branchen- und Marktdaten."""
return {
"sector": sector,
"growth_rate": "5.2%",
"market_size": "850B USD",
"key_trends": ["Digitalisierung", "Nachhaltigkeit", "KI-Integration"],
"competitive_landscape": "Fragmentiert mit 3 Marktführern",
"timestamp": datetime.now().isoformat()
}
# DATENSAMMLUNG-AGENT
async def data_collection_agent(symbol: str):
"""Agent 1: Sammelt alle relevanten Daten."""
config = AgentClientConfig(
base_url="https://api.kei-framework.com",
api_token="data-collector-token",
agent_id="data-collection-agent"
)
async with UnifiedKeiAgentClient(config=config) as client:
# Tools registrieren
capability_manager = CapabilityManager(client._legacy_client)
tools = [
("financial_reports", "Geschäftsberichte sammeln", financial_reports_tool),
("stock_data", "Kapitalmarktdaten sammeln", stock_data_tool),
("industry_data", "Branchendaten sammeln", industry_data_tool)
]
for name, desc, handler in tools:
await capability_manager.register_capability(
CapabilityProfile(
name=name,
version="1.0.0",
description=desc
),
handler=handler
)
# Datensammlung durchführen
financial_data = await client.use_tool("financial_reports", **{"symbol": symbol})
market_data = await client.use_tool("stock_data", **{"symbol": symbol})
industry_data = await client.use_tool("industry_data", **{"sector": "Technology"})
return {
"financial": financial_data,
"market": market_data,
"industry": industry_data
}
# ANALYSE-AGENT
async def analysis_agent(raw_data: dict):
"""Agent 2: Analysiert und verdichtet die Daten."""
config = AgentClientConfig(
base_url="https://api.kei-framework.com",
api_token="analysis-token",
agent_id="analysis-agent"
)
async with UnifiedKeiAgentClient(config=config) as client:
# Analyse-Tool
async def valuation_analysis_tool(data: dict) -> dict:
financial = data["financial"]
market = data["market"]
# Bewertungsmetriken berechnen
market_cap = float(financial.get("market_cap", "0") or "0")
pe_ratio = float(financial.get("pe_ratio", "0") or "0")
current_price = float(market.get("price", "0") or "0")
# Einfache Bewertungslogik
valuation_score = 0
if pe_ratio > 0 and pe_ratio < 15:
valuation_score += 30
elif pe_ratio < 25:
valuation_score += 15
if market_cap > 1000000000: # > 1B
valuation_score += 20
return {
"valuation_score": valuation_score,
"pe_assessment": "Unterbewertet" if pe_ratio < 15 else "Fair bewertet",
"market_position": "Large Cap" if market_cap > 1000000000 else "Mid Cap",
"recommendation": "Kaufen" if valuation_score > 40 else "Halten",
"timestamp": datetime.now().isoformat()
}
# Tool registrieren
capability_manager = CapabilityManager(client._legacy_client)
await capability_manager.register_capability(
CapabilityProfile(
name="valuation_analysis",
version="1.0.0",
description="Unternehmensbewertung"
),
handler=valuation_analysis_tool
)
# Analyse durchführen
analysis_result = await client.use_tool("valuation_analysis", **{"data": raw_data})
return analysis_result
# BERICHT-AGENT
async def report_agent(raw_data: dict, analysis: dict):
"""Agent 3: Erstellt den finalen Bewertungsbericht."""
config = AgentClientConfig(
base_url="https://api.kei-framework.com",
api_token="report-token",
agent_id="report-agent"
)
async with UnifiedKeiAgentClient(config=config) as client:
# Report-Tool
async def report_generator_tool(data: dict, analysis: dict) -> dict:
company = data["financial"]["company_name"]
symbol = data["financial"]["symbol"]
report = f"""
# Unternehmensbewertung: {company} ({symbol})
## Executive Summary
- Bewertungsscore: {analysis['valuation_score']}/100
- Empfehlung: {analysis['recommendation']}
- KGV-Bewertung: {analysis['pe_assessment']}
## Finanzkennzahlen
- Marktkapitalisierung: {data['financial']['market_cap']}
- KGV: {data['financial']['pe_ratio']}
- Gewinnmarge: {data['financial']['profit_margin']}
## Marktdaten
- Aktueller Kurs: {data['market']['price']}
- Tagesveränderung: {data['market']['change_percent']}
- Handelsvolumen: {data['market']['volume']}
## Branchenanalyse
- Sektor: {data['industry']['sector']}
- Wachstumsrate: {data['industry']['growth_rate']}
- Marktgröße: {data['industry']['market_size']}
## Fazit
{analysis['recommendation']} - Bewertungsscore von {analysis['valuation_score']}/100 Punkten.
"""
return {
"report": report,
"summary": {
"company": company,
"recommendation": analysis['recommendation'],
"score": analysis['valuation_score']
},
"timestamp": datetime.now().isoformat()
}
# Tool registrieren
capability_manager = CapabilityManager(client._legacy_client)
await capability_manager.register_capability(
CapabilityProfile(
name="report_generator",
version="1.0.0",
description="Bewertungsbericht erstellen"
),
handler=report_generator_tool
)
# Bericht erstellen
report_result = await client.use_tool("report_generator", **{"data": raw_data, "analysis": analysis})
return report_result
# HAUPTPROZESS
async def company_valuation_system():
"""Vollständiges Multi-Agent-System für Unternehmensbewertung."""
symbol = "AAPL" # Apple Inc.
print(f"🏢 Starte Unternehmensbewertung für {symbol}")
# Agent 1: Datensammlung
print("📊 Agent 1: Sammle Daten...")
raw_data = await data_collection_agent(symbol)
print(f"✅ Daten gesammelt für {raw_data['financial']['company_name']}")
# Agent 2: Analyse
print("🔍 Agent 2: Analysiere Daten...")
analysis = await analysis_agent(raw_data)
print(f"✅ Analyse abgeschlossen: {analysis['recommendation']}")
# Agent 3: Bericht
print("📝 Agent 3: Erstelle Bericht...")
report = await report_agent(raw_data, analysis)
print(f"✅ Bericht erstellt")
# Ergebnis ausgeben
print("\n" + "="*50)
print(report["report"])
print("="*50)
return report
# Ausführung
asyncio.run(company_valuation_system())
Ausgabe-Beispiel¶
🏢 Starte Unternehmensbewertung für AAPL
📊 Agent 1: Sammle Daten...
✅ Daten gesammelt für Apple Inc.
🔍 Agent 2: Analysiere Daten...
✅ Analyse abgeschlossen: Halten
📝 Agent 3: Erstelle Bericht...
✅ Bericht erstellt
==================================================
# Unternehmensbewertung: Apple Inc. (AAPL)
## Executive Summary
- Bewertungsscore: 35/100
- Empfehlung: Halten
- KGV-Bewertung: Fair bewertet
## Finanzkennzahlen
- Marktkapitalisierung: 3.5T
- KGV: 28.5
- Gewinnmarge: 0.25
## Marktdaten
- Aktueller Kurs: 185.50
- Tagesveränderung: +1.2%
- Handelsvolumen: 45M
## Branchenanalyse
- Sektor: Technology
- Wachstumsrate: 5.2%
- Marktgröße: 850B USD
## Fazit
Halten - Bewertungsscore von 35/100 Punkten.
==================================================