Yaap.Client.Abstractions 0.1.28-preview

This is a prerelease version of Yaap.Client.Abstractions.
dotnet add package Yaap.Client.Abstractions --version 0.1.28-preview
                    
NuGet\Install-Package Yaap.Client.Abstractions -Version 0.1.28-preview
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yaap.Client.Abstractions" Version="0.1.28-preview" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Yaap.Client.Abstractions" Version="0.1.28-preview" />
                    
Directory.Packages.props
<PackageReference Include="Yaap.Client.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Yaap.Client.Abstractions --version 0.1.28-preview
                    
#r "nuget: Yaap.Client.Abstractions, 0.1.28-preview"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Yaap.Client.Abstractions&version=0.1.28-preview&prerelease
                    
Install Yaap.Client.Abstractions as a Cake Addin
#tool nuget:?package=Yaap.Client.Abstractions&version=0.1.28-preview&prerelease
                    
Install Yaap.Client.Abstractions as a Cake Tool

yaap - Yet Another Agent Protocol

Yet Another Agent Protocol (YAAP) is a protocol that enables the dynamic addition and removal of experts to a Multi-Agent system.

With YAAP, it is possible to add expertise to an existing system without needing to re-deploy infrastructure.

This gives the user experience of evolving knowledge as the chat is made smarter & more useful over time as more experts are deployed.

Note: The majority of samples in this repo utilize YAAP as a concept only and have not yet been migrated to the YAAP SDK. Progress:

Sample Migration Status
WebSockets
gRPC
MCP
SignalR

Inspiration & Evolution

  • Could Experts (aka Agents) be added to an LLM conversation like a chat room?
  • Started with a SignalR implementation, loosely based on the SignalR Chat Room sample
  • Evolved into gRPC, then WebSockets, finally Model Context Protocol (MCP)

Protocol Basics

  1. Users interact with an Orchestrator via /chat entrypoint which offers LLM completions
  2. Orchestrator also exposes hello and goodbye functionality
    • hello – used by Experts to introduce themselves with a name and a description
      • Orchestrator then adds the Expert to the list of Tools given to the underlying LLM, using the name and description given by the Expert during this call
    • goodbye – used by Experts to remove themselves from considering by the Orchestrator (e.g., during Shutdown)
      • Removed from Orchestrator’s Tools collection
  3. Implementations vary based on the underlying protocol, for example:
    • SignalR – Hub directs Hello and Goodbye messages to connected Orchestrator
    • gRPC – mapped as a protocol definition to a handler
    • WebSockets – payload has action and detail
      • action = hello
      • detail = Agent definition
    • MCP – Experts introduce to the MCP server, updates ToolList, notifies Orchestrator

YAAP is built on top of the OpenAI concept of LLM Function Calling, which allows the LLM to call functions (or tools) that are registered with it. This allows the LLM to use the tools to perform actions or retrieve information that it may not have access to directly. In the context of YAAP, the tools are the experts that are registered with the Orchestrator.

In YAAP, however, there is a sequence prepended and included in the context of the overall system, the Introduction.

sequenceDiagram
    actor User
    participant Orchestrator
    actor Expert
    actor Expert
    participant LLM

rect rgba(100,100,100,.3)
    note over Orchestrator, Expert: Introduction sequence
    Expert->>Orchestrator: /hello (Expert details [name, description])
    Orchestrator->>Orchestrator: Update tools
    Orchestrator--)Expert: ACK
end
    User->>Orchestrator: prompt
    Orchestrator->>LLM: prompt + tools (experts)
rect rgba(100,100,100,.3)
loop
    note over Orchestrator, LLM: [Optional] Completion Loop
    LLM-->>Orchestrator: Tool request
    Orchestrator-->>Expert: prompt
    Expert-->>Orchestrator: completion
    Orchestrator-->>LLM: Expert completion
end
end
    LLM->>Orchestrator: completion
    Orchestrator->>User: completion
rect rgba(100,100,100,.3)
    note over Orchestrator, Expert: Goodbye sequence
    Expert->>Orchestrator: /goodbye(Expert name)
    Orchestrator->>Orchestrator: Update tools
    Orchestrator--)Expert: ACK
end

When each Expert comes online, it must Introduce itself to the Orchestrator. This is done by sending a message to the Orchestrator, which includes the Expert's name and description. The Orchestrator then updates its list of tools (experts) and sends an ACK back to the Expert.

When a User sends a chat completion request to the Orchestrator, the Orchestrator sends the User's prompt along with the list of tools (experts) to the LLM. The LLM then generates a response based on the User's prompt and the available tools.

Explore the samples area of this repo for example implementations of YAAP using different protocols.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Yaap.Client.Abstractions:

Package Downloads
Yaap.A2A.Client.Abstractions

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.28-preview 120 4/29/2025
0.1.27-preview 116 4/28/2025
0.1.23-preview 58 4/25/2025
0.1.10-preview 66 4/25/2025
0.1.8-preview 64 4/25/2025
0.1.7-preview 62 4/25/2025
0.1.3-preview 60 4/25/2025
0.1.2-preview 65 4/25/2025
0.1.0-preview 73 4/25/2025