conversationalsemantic-kernelcsharp
Agent2Agent
18by Donelle
This repository demonstrates a multi-agent proof-of-concept using Microsoft Semantic Kernel and A2A Protocol
Updated 2025-08-20
Quality Score18/100
★ Community
0
◷ Freshness
20
✓ Official
30
⚡ Skills
10
⬡ Protocol
30
🔒 Security
20
Getting Started
1Clone the repository
$ git clone https://github.com/Donelle/Agent2Agent
2Navigate to the project
$ cd Agent2Agent
3Install dependencies
$ dotnet restore
4Run the agent
$ dotnet run
README
Agent2Agent — Proof of Concept
This repository contains a proof-of-concept multi-agent system built with Microsoft Semantic Kernel and ASP.NET Core. It demonstrates agent-to-agent (A2A) registration, discovery, inter-agent task delegation, and a Blazor web frontend for user interaction.
Quick architecture summary
- Orchestrator (AppHost) launches and health-checks agents and the Web frontend.
- Agent A (Customer Advocate) — user-facing semantic agent (POST /api/agent/chat).
- Agent B (Registry) — manages agent registration/discovery; A2A endpoints (
/tasks,/.well-known/agent.json). - Agent C (Knowledge Graph) — vector search and factual grounding (Redis + embeddings).
- Agent D (Internet Search) — external search and caching.
- DatasetCreator — ingests CSV/PDF, creates embeddings, populates Redis for Agent C.
Project structure (high level)
- Agent2Agent.AppHost — orchestrator and entry point.
- Agent2Agent.Web — Blazor Server web UI (chat frontend).
- Agent2Agent.AgentA — Customer Advocate agent (POST /api/agent/chat).
- Agent2Agent.AgentB — Registry agent (A2A server).
- Agent2Agent.AgentC — Knowledge Graph agent (vector store + embeddings).
- Agent2Agent.AgentD — Internet Search agent (external search + caching).
- Agent2Agent.ServiceDefaults — shared bootstrap/middleware/extensions.
- DatasetCreator — data ingestion and embedding pipeline.
- Docs/ — architecture and agent role documentation.
Prerequisites
- .NET 9 SDK
- Docker (to run Redis via docker-compose)
- OpenAI API key (or other embedding/chat provider) configured in each agent's appsettings
Getting started (local development)
- Clone repository
- Restore and build
dotnet restore
dotnet build
- Start Redis via Docker Compose (uses
docker_compose.yaml)
docker-compose -f docker_compose.yaml up -d
- (Optional) Ingest sample data into Redis
dotnet run --project DatasetCreator
See DatasetCreator/README.md for options and sample data formats.
- Launch the orchestrator (starts AppHost, Web, and configured agents)
dotnet run --project Agent2Agent.AppHost
- Open the Web frontend in your browser (default)
https://localhost:5000
If custom URLs are configured in
launchSettings.json, use those instead.
How the system works (short)
- The Web frontend sends user queries to AgentA.
- AgentA uses Semantic Kernel chat completion to craft responses and may invoke other agents for factual enrichment.
- AgentB (Registry) provides discovery and delegates tasks to AgentC (KnowledgeGraph) and AgentD (InternetSearch) as needed.
- DatasetCreator populates Redis so AgentC can answer fact-based queries through semantic vector search.
Documentation and further reading
Docs/architecture.md— architecture overview, diagrams, startup sequence.Docs/agents.md— agent roles, endpoints, and sequences.- Agent-specific READMEs:
Agent2Agent.AgentA/README.md,Agent2Agent.AgentB/README.md, etc. - A2A Spec: https://a2aproject.github.io/A2A/v0.2.5/
- Microsoft Semantic Kernel: https://learn.microsoft.com/en-us/semantic-kernel/
Troubleshooting (common)
- OpenAI errors: verify API key, model id, and network access.
- Redis: ensure docker container is running and connection string matches.
- Inter-agent calls: ensure agents are running and reachable; check logs for plugin/DI registration errors.
Contributing
Contributions welcome. Open issues or PRs and include tests or usage notes where relevant.
License
MIT
Capabilities
StreamingPush NotificationsMulti-TurnAuth: none
a2a-serveraiblazorchatgptsemantic-kernel