Aplikace Agent Framework s vlastním hostováním

Note

Pomocní správci protokolu samoobslužného hostování pro .NET budou brzy k dispozici. Model hostování umožní vaší aplikaci vlastní integraci serveru, stavu a protokolu.

Note

Pomocné nástroje pro protokol vlastního hostování nejsou v současnosti pro Go k dispozici.

Vlastní hostování vám umožňuje spustit agenta nebo pracovní postup v Agent Framework ve vaší vlastní webové aplikaci, kontejneru, službě nebo běhovém prostředí. Vaše aplikace řídí směrování, identitu, autorizaci, zásady požadavků, úložiště, nasazení a škálování. Přidejte na tento server jednu nebo více integrací protokolu na základě klientů, které potřebujete podporovat.

Tuto možnost použijte, pokud potřebujete integrovat koncový bod agenta se stávající infrastrukturou aplikace. Pokud chcete, aby Microsoft Foundry spouštěl agenta za vás, viz agenti hostovaní ve Foundry. Pokud potřebujete aktivační události Azure Functions nebo dlouhodobé spouštění, přečtěte si Durable Extension.

Návrh těchto balíčků je takový, že umožňuje maximální flexibilitu pro vývojáře. To znamená, že pokud chcete vytvořit host, který zpřístupňuje agenta pomocí rozhraní Responses API, a zneužijete parametry k jiným účelům (tj. namapujete temperature na top_p), můžete to udělat. Pokud nechcete ukládat relace, je to možné; a pokud chcete, aby volající řídil celý běh agenta, i to je možné. Nebudeme vám stát v cestě, nabízíme pomocné nástroje pro běžné případy a za zbytek ponecháváme odpovědnost na vás, abyste si mohli vytvořit přesně takový host, jaký potřebujete.

Important

agent-framework-hosting, agent-framework-hosting-responses, agent-framework-hosting-telegram, agent-framework-a2a, agent-framework-hosting-a2aa agent-framework-hosting-mcp jsou předběžné Python balíčky. Před aktualizací produkčního nasazení nainstalujte předběžné verze a před aktualizací produkčního nasazení si přečtěte poznámky k verzi.

pip install --pre agent-framework-hosting

Co poskytují pomocní správci hostingu

Obecný hostitelský balíček poskytuje sdílený stav spuštění pro server vlastněný aplikací:

  • AgentState spáruje cíl agenta s SessionStore a vytvoří relace, když aplikace vybere nový klíč.
  • SessionStore ukládá, načítá a odstraňuje relace podle ID vybrané aplikace. Jeho výchozí úložiště je lokální pro proces a nemá žádnou strategii vytěsňování.
  • WorkflowState řeší cíl pracovního postupu. Vaše aplikace spravuje úložiště kontrolních bodů i veškeré mapování mezi identifikátorem pokračování klienta a kontrolním bodem.

AgentState není registr serveru nebo protokolu. Vaše aplikace vybere autorizovaný klíč relace, určí cíl a uloží stav po dokončení běhu. Může používat stejnou cílovou a sdílenou aplikační infrastrukturu pro jeden nebo několik koncových bodů protokolu.

Přizpůsobení úložiště relací

SessionStore je malá asynchronní třída úložiště s get, seta delete metody. Výchozí implementace uchovává relace v paměti procesu. Vytvořte z ní podtřídu a přepište tyto metody tak, aby ukládaly objekty AgentSession do Redis, databáze, úložiště objektů blob nebo jiného úložiště vlastněného aplikací, a potom předejte instanci do AgentState(session_store=...).

SessionStore a poskytovatelé historie uchovávají samostatné části konverzace agenta. Úložiště relací ukládá jeden objekt relace na ID relace, včetně metadat relace a stavu zprostředkovatele. Vyhrazené HistoryProvider ukládá konverzaci odděleně, obvykle jako jeden záznam na zprávu. Toto oddělení se doporučuje pro trvalé hostitele, protože připojování jednotlivých zpráv je obecně efektivnější než přepsání rostoucího objektu relace po každém turnu. Poskytovatel historie je definován pro každého agenta předáním požadované třídy poskytovatele historie do parametru context_providers.

Note

Výchozí zprostředkovatel historie: InMemoryHistoryProvider je výjimkou: ukládá úplnou konverzaci do AgentSession.state. Při použití tohoto poskytovatele SessionStore uchovává konverzaci v objektu relace. U delších konverzací nebo produkčního úložiště použijte vyhrazeného poskytovatele historie, aby úložiště relací zůstalo zaměřené na jednoduchý stav relace.

Použijte vlastní framework nebo klientskou knihovnu

Hostitelské balíčky nejsou svázané s webovou architekturou ani klientskou knihovnou. Ukázky používají FastAPI a aiogram, protože poskytují stručné spustitelné příklady, nikoli proto, že je pomocné funkce vyžadují.

  • V případě koncových bodů HTTP použijte rozhraní API směrování a požadavků a odpovědí vaší aplikační architektury, jako jsou FastAPI, Starlette, Django, Flask, Azure Functions nebo jiná architektura.
  • U klientů protokolu, jako je například Telegram, použijte libovolnou klientskou knihovnu, která dokáže dodat aktualizaci protokolu a provést operace vytvořené pomocnou funkcí.

Aplikace vybere svou architekturu a klientskou knihovnu; Balíčky Agent Framework převádějí pouze data protokolu a spravují volitelný stav spuštění. Neregistrují trasy, neověřují identitu volajících, neautorizují přístup ke stavu, nevybírají povolené možnosti modelu ani neposkytují perzistentní úložiště.

Přidání protokolů na server

Zvolte jednu nebo více integrací protokolu:

Protocol Balíček a integrace
Odpovědi OpenAI agent-framework-hosting-responses
Telegram agent-framework-hosting-telegram
A2A agent-framework-a2a nebo agent-framework-hosting-a2a
MCP agent-framework-hosting-mcp

Každá stránka protokolu popisuje nastavení. Jsou však navrženy tak, aby vám umožnily vytvořit jednoho hostitele s jedním nebo více povolenými protokoly a volatelným cílem; buď agent, nebo pracovní postup. Vzhledem k tomu, že vás neomezujeme na jednu webovou architekturu, můžete si vybrat ten, který chcete, a nastavit hostitele s těmito protokoly snadno.

Zabezpečené pokračování relace

Zacházet s každým identifikátorem zadaným protokolem jako s nedůvěryhodným vstupem. Před použitím ID pro načtení relace, kontrolního bodu, úkolu nebo jiného stavu:

  1. Ověřte volajícího.
  2. Oprávněte volajícího k přístupu k odkazovanému stavu.
  3. Rozdělte trvalý stav podle ověřeného tenanta, uživatele nebo pracovního prostoru.
  4. Uložte stav relace a kontrolního bodu až po dokončení běhu nebo streamu.

Tento model samoobslužného hostování umožňuje vaší aplikaci implementovat pouze koncové body protokolu a zásady, které potřebuje. nepokouší se implementovat kompletní povrch rozhraní API všech podporovaných protokolů.

Další kroky

Jděte hlouběji: