Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 AzureAIAgent
agent 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.
Aanbeveling
API-verwijzing:
Aanbeveling
API-verwijzing:
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 Kernel
prompt, 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_dict
en 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.