Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje klíčové koncepty architektury agentů, včetně základních principů, cílů návrhu a strategických cílů.
Cíle
Agent Framework byly vyvinuty s následujícími klíčovými prioritami:
- Architektura agenta sémantického jádra slouží jako základ pro implementaci funkcí agenta.
- V rámci jedné konverzace může spolupracovat více agentů různých typů, z nichž každý přispívá ke svým jedinečným schopnostem a současně integruje lidské vstupy.
- Agent může současně zapojit a spravovat více souběžných konverzací.
Agenta
Abstraktní Agent třída slouží jako základní abstrakce pro všechny typy agentů a poskytuje základní strukturu, která se dá rozšířit a vytvořit specializovanější agenty. Tato základní třída tvoří základ pro konkrétnější implementace agentů, z nichž všechny využívají možnosti jádra ke spouštění příslušných funkcí. Podívejte se na všechny dostupné typy agentů v části Typy agentů .
Základní abstrakci sémantických jader Agent najdete tady.
Základní abstrakci sémantických jader Agent najdete tady.
Agenty je možné vyvolat buď přímo k provádění úloh, nebo je orchestrovat různými vzory. Tato flexibilní struktura umožňuje agentům přizpůsobit se různým konverzačním scénářům nebo scénářům řízeným úlohami, což vývojářům poskytuje robustní nástroje pro vytváření inteligentních systémů s více agenty.
Typy agentů v sémantickém jádru
Vlákno agenta
Abstraktní AgentThread třída slouží jako základní abstrakce pro vlákna nebo stav konverzace. Abstrahuje různé způsoby správy stavu konverzace pro různé agenty.
Stavové služby agenta často ukládají stav konverzace ve službě a můžete s ním pracovat prostřednictvím ID. Jiní agenti mohou vyžadovat předání celé historie chatu agentovi při každém vyvolání, v takovém případě se stav konverzace spravuje místně v aplikaci.
Stavové agenty obvykle pracují pouze s odpovídající implementací AgentThread, zatímco jiné typy agentů mohou fungovat s více než jedním typem AgentThread. Například AzureAIAgent vyžaduje odpovídající AzureAIAgentThread. Důvodem je to, že služba agenta Azure AI ukládá konverzace ve službě a vyžaduje konkrétní volání služby k vytvoření vlákna a aktualizaci. Pokud se u AzureAIAgentpoužívá jiný typ vlákna agenta, rychle selžeme kvůli neočekávanému typu vlákna a vyvoláme výjimku, aby byl volající upozorněn.
Orchestrace agentů
Důležité
Funkce orchestrace agentů v rozhraní Agent Framework jsou v experimentální fázi. Jsou ve fázi aktivního vývoje a můžou se výrazně změnit před přechodem do fáze Preview nebo release candidate.
Poznámka:
Pokud jste používali AgentGroupChat model orchestrace, mějte na paměti, že už není zachován. Doporučujeme vývojářům používat nový GroupChatOrchestration vzor. Tady najdete průvodce migrací.
Architektura Orchestrace agentů v sémantickém jádru umožňuje koordinaci více agentů řešit složité úlohy společně. Poskytuje flexibilní strukturu pro definování způsobu interakce agentů, sdílení informací a delegování odpovědností. Mezi základní komponenty a koncepty patří:
- Vzory orchestrace: Předem vytvořené vzory, jako jsou Souběžné, Sekvenční, Předání, Skupinový chat a Magentic, umožňují vývojářům zvolit nejvhodnější model spolupráce pro svůj scénář. Každý vzor definuje jiný způsob, jak agenti komunikovat a zpracovávat úlohy (podrobnosti najdete v tabulce vzorů orchestrace ).
- Logika transformace dat: Vstupní a výstupní transformace umožňují tokům orchestrace přizpůsobit data mezi agenty a externími systémy, což podporuje jednoduché i složité datové typy.
- Human-in-the-loop: Některé vzory podporují human-in-the-loop, což umožňuje lidské agenty účastnit se procesu orchestrace. To je užitečné zejména pro scénáře, ve kterých se vyžaduje lidský úsudek nebo odborné znalosti.
Tato architektura umožňuje vývojářům vytvářet inteligentní systémy s více agenty, které můžou řešit reálné problémy prostřednictvím spolupráce, specializace a dynamické koordinace.
Zarovnání agenta s funkcemi sémantického jádra
Agent Framework je postaven na základních konceptech a vlastnostech, které mnoho vývojářů znají v rámci ekosystému Semantic Kernel. Tyto základní principy slouží jako stavební bloky pro návrh rozhraní Agent Framework. Využitím známé struktury a schopností Semantic Kernel rozšiřuje Agent Framework svou funkčnost umožňující pokročilejší, autonomní chování agentů, přičemž zachovává konzistenci s širší architekturou Semantic Kernel. Tím se vývojářům zajistí hladký přechod, který jim umožní použít své stávající znalosti k vytváření inteligentních a přizpůsobitelných agentů v rámci architektury.
Moduly plug-in a volání funkcí
Moduly plug-in jsou základním aspektem sémantického jádra, což vývojářům umožňuje integrovat vlastní funkce a rozšířit možnosti aplikace AI. Tyto moduly plug-in nabízejí flexibilní způsob, jak začlenit specializované funkce nebo logiku specifickou pro firmy do základních pracovních postupů umělé inteligence. Funkce agentů v rámci architektury se navíc dají výrazně vylepšit pomocí modulů plug-in a využití volání funkcí. Díky tomu můžou agenti dynamicky komunikovat s externími službami nebo spouštět složité úlohy a dále rozšiřovat rozsah a všestrannost systému AI v různých aplikacích.
Tady se dozvíte, jak nakonfigurovat agenty tak, aby používali moduly plug-in.
Zprávy agenta
Zprávy agentů, včetně vstupu i odpovědi, jsou založeny na základních typech obsahu sémantického jádra, čímž poskytují jednotnou strukturu pro komunikaci. Tato volba návrhu zjednodušuje proces přechodu z tradičních vzorů dokončování chatu na pokročilejší vzory řízené agenty ve vývoji aplikací. Využíváním známých typů obsahu Semantic Kernel mohou vývojáři bez problémů integrovat schopnosti agentů do svých aplikací, aniž by museli přepracovávat stávající systémy. Toto zjednodušení zajišťuje, že při vývoji od základní konverzační umělé inteligence až po autonomní agenty orientované na úlohy zůstává základní architektura konzistentní, takže vývoj bude rychlejší a efektivnější.
Návod
Referenční informace k rozhraní API:
Návod
Referenční informace k rozhraní API:
Návod
Referenční informace k rozhraní API:
Šablonování
Role agenta je primárně tvarována pokyny, které obdrží, což určuje jeho chování a akce. Podobně jako při vyvolání Kernelvýzvy mohou pokyny agenta obsahovat parametry šablony – hodnoty i funkce – které se dynamicky nahrazují během provádění. To umožňuje flexibilní odpovědi pracující s kontextem, což agentu umožňuje upravit svůj výstup na základě vstupu v reálném čase.
Dále lze agenta nakonfigurovat přímo pomocí konfigurace šablony výzvy, což vývojářům poskytuje strukturovaný a znovu použitelný způsob, jak definovat jeho chování. Tento přístup nabízí výkonný nástroj pro standardizaci a přizpůsobení pokynů agenta, který zajišťuje konzistenci v různých případech použití a přitom zachovává dynamickou adaptabilnost.
Další informace o tom, jak vytvořit agenta pomocí šablony sémantického jádra, najdete tady.
Deklarativní specifikace
Dokumentace k používání deklarativních specifikací bude brzy k dispozici.
Důležité
Tato funkce je v experimentální fázi. Funkce v této fázi jsou ve vývoji a před přechodem na fázi Preview nebo release candidate se můžou změnit.
Registrace vlastních typů agentů
Pokud chcete použít vlastního agenta se systémem deklarativní specifikace YAML, musíte nejprve zaregistrovat třídu agenta v registru agenta. Je to nutné, aby AgentRegistry mohl rozpoznat a vytvořit vašeho agenta při parsování pole type: ve specifikaci YAML.
Pokud chcete zaregistrovat vlastní typ agenta, použijte @register_agent_type dekorátor:
from semantic_kernel.agents import register_agent_type, Agent, DeclarativeSpecMixin
@register_agent_type("custom_agent")
class CustomAgent(DeclarativeSpecMixin, Agent):
...
Řetězec zadaný dekorátoru (například "custom_agent") musí odpovídat typu: pole ve specifikaci YAML.
Po registraci je možné vytvořit instanci vlastního agenta deklarativním způsobem, například prostřednictvím AgentRegistry.create_from_yaml(...).
Přidává DeclarativeSpecMixin podporu pro metody, jako jsou from_yaml, from_dict a resolve_placeholders, které umožňují vytvoření vašeho agenta ze specifikace YAML nebo slovníku.
@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
Návod
Každý vlastní agent musí dědit od DeclarativeSpecMixin, aby umožnil konstrukci založenou na YAML, a musí být registrován pomocí @register_agent_type.
Tato funkce není k dispozici.