Delen via


Een overzicht van de agentarchitectuur

Dit artikel bevat belangrijke concepten in de architectuur van het Agent Framework, waaronder basisprincipes, ontwerpdoelstellingen en strategische doelen.

Doelstellingen

Het Agent Framework is ontwikkeld met de volgende belangrijke prioriteiten in gedachten:

  • Het Semantic Kernel Agent Framework fungeert als de kernbasis voor het implementeren van agentfunctionaliteiten.
  • Meerdere agents van verschillende typen kunnen samenwerken binnen één gesprek, die elk hun unieke mogelijkheden bijdragen, terwijl menselijke invoer wordt geïntegreerd.
  • Een agent kan gelijktijdig meerdere gelijktijdige gesprekken aangaan en beheren.

Vertegenwoordiger

De abstracte Agent klasse fungeert als de kernabstractie voor alle typen agents, waardoor een fundamentele structuur wordt geboden die kan worden uitgebreid om meer gespecialiseerde agents te maken. Deze basisklasse vormt de basis voor specifiekere agent-implementaties, die allemaal gebruikmaken van de mogelijkheden van de kernel om hun respectieve functies uit te voeren. Bekijk alle beschikbare agenttypen in de sectie Agenttypen .

De onderliggende Semantische kernelabstractie Agent vindt u hier.

De onderliggende Semantische kernelabstractie Agent vindt u hier.

Agents kunnen rechtstreeks worden aangeroepen om taken uit te voeren of gecoördineerd worden door verschillende patronen. Met deze flexibele structuur kunnen agents zich aanpassen aan verschillende gespreks- of taakgestuurde scenario's, waardoor ontwikkelaars robuuste hulpprogramma's kunnen bieden voor het bouwen van intelligente systemen met meerdere agents.

Agenttypen in Semantische Kernel

Agentthread

De abstracte AgentThread klasse fungeert als de kernabstractie voor threads of gespreksstatus. Het abstraheert de verschillende manieren waarop de gespreksstatus voor verschillende agents kan worden beheerd.

Stateful agentservices slaan vaak de gespreksstatus op in de service en u kunt ermee communiceren via een id. Voor andere agents moet mogelijk de volledige chatgeschiedenis worden doorgegeven aan de agent bij elke aanroep. In dat geval wordt de gespreksstatus lokaal beheerd in de toepassing.

Stateful agents werken doorgaans alleen met een overeenkomende AgentThread implementatie, terwijl andere typen agents met meer dan één AgentThread type kunnen werken. AzureAIAgent vereist een overeenkomende AzureAIAgentThread. Dit komt doordat de Azure AI Agent-service gesprekken opslaat in de service en specifieke service-aanroepen nodig heeft om een thread te maken en bij te werken. Als er een ander threadtype van de AzureAIAgentagent wordt gebruikt, mislukken we snel vanwege een onverwacht threadtype en genereren we een uitzondering om de beller te waarschuwen.

Agentorchestratie

Belangrijk

Agent Orchestratiefuncties in de Agent Framework bevinden zich in de experimentele fase. Ze zijn in actieve ontwikkeling en kunnen aanzienlijk veranderen voordat ze naar de preview- of releasekandidaatfase gaan.

Opmerking

Als u het AgentGroupChat orchestratiepatroon hebt gebruikt, houd er rekening mee dat het niet meer wordt onderhouden. Ontwikkelaars wordt aangeraden het nieuwe GroupChatOrchestration patroon te gebruiken. Hier vindt u een migratiehandleiding.

Met het agentindelingsframework in Semantische kernel kan de coördinatie van meerdere agents complexe taken gezamenlijk oplossen. Het biedt een flexibele structuur voor het definiëren van hoe agents communiceren, informatie delen en verantwoordelijkheden delegeren. De belangrijkste onderdelen en concepten zijn:

  • Indelingspatronen: Vooraf gebouwde patronen zoals Concurrent, Sequentiële, Handoff, Group Chat en Magentic stellen ontwikkelaars in staat om het meest geschikte samenwerkingsmodel voor hun scenario te kiezen. Elk patroon definieert een andere manier voor agents om taken te communiceren en te verwerken (zie de tabel Indelingspatronen voor meer informatie).
  • Logica voor gegevenstransformatie: Met invoer- en uitvoertransformaties kunnen indelingsstromen gegevens tussen agents en externe systemen aanpassen, die zowel eenvoudige als complexe gegevenstypen ondersteunen.
  • Human-in-the-loop: Sommige patronen ondersteunen human-in-the-loop, waardoor menselijke agenten kunnen deelnemen aan het coördinatieproces. Dit is met name handig voor scenario's waarin menselijke beoordeling of expertise vereist is.

Deze architectuur biedt ontwikkelaars de mogelijkheid om intelligente systemen met meerdere agents te bouwen die echte problemen kunnen aanpakken door middel van samenwerking, specialisatie en dynamische coördinatie.

Agentuitlijning met Semantische kernelfuncties

Het Agent Framework is gebaseerd op de fundamentele concepten en functies die veel ontwikkelaars kennen binnen het Semantische Kernel-ecosysteem. Deze kernprincipes fungeren als de bouwstenen voor het ontwerp van het Agent Framework. Door gebruik te maken van de vertrouwde structuur en mogelijkheden van de Semantische kernel, breidt het Agent Framework de functionaliteit uit om geavanceerdere, autonome agentgedrag mogelijk te maken, terwijl de consistentie met de bredere Semantische Kernel-architectuur behouden blijft. Dit zorgt voor een soepele overgang voor ontwikkelaars, zodat ze hun bestaande kennis kunnen toepassen om intelligente, aanpasbare agents binnen het framework te maken.

Invoegtoepassingen en functie-aanroepen

Invoegtoepassingen zijn een fundamenteel aspect van de Semantische kernel, waardoor ontwikkelaars aangepaste functionaliteiten kunnen integreren en de mogelijkheden van een AI-toepassing kunnen uitbreiden. Deze invoegtoepassingen bieden een flexibele manier om gespecialiseerde functies of bedrijfsspecifieke logica op te nemen in de kern-AI-werkstromen. Daarnaast kunnen agentmogelijkheden binnen het framework aanzienlijk worden verbeterd door invoegtoepassingen te gebruiken en functiegesprekken te gebruiken. Hierdoor kunnen agents dynamisch communiceren met externe services of complexe taken uitvoeren, waardoor het bereik en de veelzijdigheid van het AI-systeem binnen diverse toepassingen verder worden uitgebreid.

Leer hoe u agents kunt configureren om invoegtoepassingen te gebruiken hier.

Agentberichten

Agentberichten, inclusief invoer en respons, zijn gebaseerd op de kerninhoudstypen van de Semantische kernel, die een uniforme structuur bieden voor communicatie. Deze ontwerpkeuze vereenvoudigt het proces van overgang van traditionele patronen voor chatvoltooiing tot geavanceerdere door agents gestuurde patronen in uw toepassingsontwikkeling. Door gebruik te maken van bekende Semantische Kernel-inhoudstypen, kunnen ontwikkelaars naadloos agentmogelijkheden in hun toepassingen integreren zonder bestaande systemen te hoeven herzien. Deze stroomlijning zorgt ervoor dat naarmate u zich ontwikkelt van eenvoudige conversationele AI tot meer autonome, taakgerichte agents, het onderliggende framework consistent blijft, waardoor ontwikkeling sneller en efficiënter wordt.

Sjablonen maken

De rol van een agent wordt voornamelijk gevormd door de instructies die worden ontvangen, die het gedrag en de acties dicteren. Net als bij het aanroepen van een Kernelprompt, kunnen de instructies van een agent sjabloonparameters (zowel waarden als functies) bevatten die dynamisch worden vervangen tijdens de uitvoering. Dit maakt flexibele, contextbewuste antwoorden mogelijk, zodat de agent de uitvoer kan aanpassen op basis van realtime invoer.

Daarnaast kan een agent rechtstreeks worden geconfigureerd met behulp van een promptsjabloonconfiguratie, zodat ontwikkelaars een gestructureerde en herbruikbare manier hebben om het gedrag ervan te definiëren. Deze aanpak biedt een krachtig hulpmiddel voor het standaardiseren en aanpassen van agentinstructies, waardoor consistentie in verschillende gebruiksscenario's gewaarborgd blijft, terwijl dynamische aanpassingsvermogen behouden blijft.

Meer informatie over het maken van een agent met een Semantische kernelsjabloon vindt u hier.

Declaratieve specificatie

De documentatie over het gebruik van declaratieve specificaties is binnenkort beschikbaar.

Belangrijk

Deze functie bevindt zich in de experimentele fase. Functies in deze fase zijn in ontwikkeling en kunnen worden gewijzigd voordat u naar de preview- of releasekandidaatfase gaat.

Aangepaste agenttypen registreren

Als u een aangepaste agent wilt gebruiken met het declaratieve YAML-specificatiesysteem, moet u eerst uw agentklasse registreren bij het agentregister. Dit is vereist zodat de AgentRegistry uw agent kan herkennen en bij het parseren het type: veld in de YAML-specificatie kan samenstellen.

Als u een aangepast agenttype wilt registreren, gebruikt u de @register_agent_type decorator:

from semantic_kernel.agents import register_agent_type, Agent, DeclarativeSpecMixin

@register_agent_type("custom_agent")
class CustomAgent(DeclarativeSpecMixin, Agent):
    ...

De tekenreeks die is opgegeven aan de decorator (bijvoorbeeld "custom_agent") moet overeenkomen met het type: veld in uw YAML-specificatie.

Na registratie kan uw aangepaste agent worden geïnstantieerd met behulp van het declaratieve patroon, bijvoorbeeld via AgentRegistry.create_from_yaml(...).

Hiermee DeclarativeSpecMixin wordt ondersteuning toegevoegd voor methoden zoals from_yaml, from_dicten resolve_placeholders, waarmee uw agent kan worden samengesteld op basis van een YAML- of woordenlijstspecificatie:

@classmethod
async def from_yaml(cls, yaml_str: str, *, kernel=None, plugins=None, prompt_template_config=None, settings=None, extras=None, **kwargs):
    # Resolves placeholders and loads YAML, then delegates to from_dict.
    ...

@classmethod
async def from_dict(cls, data: dict, *, kernel=None, plugins=None, prompt_template_config=None, settings=None, **kwargs):
    # Normalizes and passes spec fields to _from_dict.
    ...

@classmethod
@abstractmethod
async def _from_dict(cls, data: dict, *, kernel, prompt_template_config=None, **kwargs):
    # Subclasses implement this to create the agent from a dict.
    ...

@classmethod
def resolve_placeholders(cls, yaml_str: str, settings=None, extras=None) -> str:
    # Optional: override this to customize how environment or runtime placeholders are resolved in YAML.
    return yaml_str

Aanbeveling

Elke aangepaste agent moet erven van DeclarativeSpecMixin om YAML-constructie in te schakelen en moet bij het register worden geregistreerd met behulp van @register_agent_type.

Deze functie is niet beschikbaar.

Volgende stappen