Megosztás:


agent_framework Csomag

Csomagok

a2a
ag_ui
anthropic
azure
chatkit
declarative
devui
lab
mem0
microsoft
ollama
openai
redis

Modulok

exceptions
observability

Előkelő társaság

AIFunction

Egy Python-függvényt körbefuttató eszköz, amely meghívhatóvá teszi az AI-modellek számára.

Ez az osztály körbefuttat egy Python-függvényt, hogy az AI-modellek hívhatóvá tegyék automatikus paraméterérvényesítéssel és JSON-sémagenerálással.

Inicializálja az AIFunctiont.

AgentExecutor

beépített végrehajtó, amely egy ügynököt tördel az üzenetek kezeléséhez.

Az AgentExecutor a munkafolyamat-végrehajtási mód alapján igazítja a viselkedését:

  • run_stream(): Növekményes AgentRunUpdateEvent eseményeket bocsát ki, mivel az ügynök tokeneket hoz létre
  • run(): Egyetlen AgentRunEventet bocsát ki, amely tartalmazza a teljes választ

A végrehajtó automatikusan észleli a módot a WorkflowContext.is_streaming() használatával.

Inicializálja a végrehajtót egy egyedi azonosítóval.

AgentExecutorRequest

Egy ügynök végrehajtója felé irányuló kérés.

AgentExecutorResponse

Egy ügynök-végrehajtó válasza.

AgentInputRequest

Emberi bemenet kérése, mielőtt egy ügynök magas szintű szerkesztői munkafolyamatokban fut.

A RequestInfoEvent használatával kibocsátott, amikor egy munkafolyamat szünetel az ügynök végrehajtása előtt. A rendszer felhasználói üzenetként injektálja a választ a beszélgetésbe, hogy irányítsa az ügynök viselkedését.

Ez a .with_request_info() által a SequentialBuilder, a ConcurrentBuilder, a GroupChatBuilder és a HandoffBuilder szabványos kéréstípusa.

AgentMiddleware

Az ügynökközvetítők absztrakt alaposztálya, amely képes elfogni az ügynökhívásokat.

Az ügynök köztes szoftver lehetővé teszi az ügynökhívások elfogását és módosítását a végrehajtás előtt és után. Megvizsgálhatja az üzeneteket, módosíthatja a környezetet, felülbírálhatja az eredményeket, vagy korán leállíthatja a végrehajtást.

Megjegyzés:

Az AgentMiddleware egy absztrakt alaposztály. Alosztályba kell sorolnia, és végre kell hajtania

az egyéni ügynök köztes szoftverének létrehozására vonatkozó folyamat() metódus.

AgentProtocol

Meghívható ügynök protokollja.

Ez a protokoll határozza meg azt a felületet, amelyet minden ügynöknek végre kell hajtania, beleértve az azonosítási tulajdonságokat és a végrehajtási módszereket.

Megjegyzés:

A protokollok szerkezeti altipizálást (kacsagépelést) használnak. Az osztályoknak nincs szükségük

hogy explicit módon örökölje ezt a protokollt, hogy kompatibilisnek minősüljön.

Ez lehetővé teszi, hogy teljesen egyéni ügynököket hozzon létre anélkül, hogy használ

bármely ügynök-keretrendszer alaposztálya.

AgentRunContext

Az ügynök köztes szoftver meghívásainak környezeti objektuma.

Ez a környezet az ügynök köztesszoftver-folyamatán keresztül kerül továbbításra, és az ügynök meghívásával kapcsolatos összes információt tartalmazza.

Inicializálja az AgentRunContextet.

AgentRunEvent

Az ügynök futtatásakor aktivált esemény.

Inicializálja az ügynök futási eseményét.

AgentRunResponse

Az ügynök futtatási kérésére adott választ jelöli.

Egy vagy több válaszüzenetet és metaadatot biztosít a válaszról. Egy tipikus válasz egyetlen üzenetet tartalmaz, de több üzenetet is tartalmazhat függvényhívásokat, RAG-lekéréseket vagy összetett logikát tartalmazó forgatókönyvekben.

Az AgentRunResponse inicializálása.

AgentRunResponseUpdate

Egyetlen streamelési választömböt jelöl egy ügynöktől.

Az AgentRunResponseUpdate inicializálása.

AgentRunUpdateEvent

Az esemény akkor aktiválódik, amikor egy ügynök streameli az üzeneteket.

Inicializálja az ügynök streamelési eseményét.

AgentThread

Az Ügynökszál osztály, amely egy helyileg felügyelt vagy a szolgáltatás által felügyelt szálat is képviselhet.

Az AgentThread ügynöki interakciók beszélgetési állapotát és üzenetelőzményeit tartja karban. Használhat szolgáltatás által felügyelt szálat (via service_thread_id) vagy helyi üzenettárolót (via message_store), de mindkettőt nem.

Inicializáljon egy AgentThreadot, ne használja manuálisan ezt a módszert, mindig használja a következőt: agent.get_new_thread().

Megjegyzés:

Lehet, hogy service_thread_id vagy message_store van beállítva, de mindkettő nem.

AggregateContextProvider

Több környezetszolgáltatót tartalmazó ContextProvider.

Több környezetszolgáltatónak delegálja az eseményeket, és a visszatérés előtt összesíti az eseményekre adott válaszokat. Ez lehetővé teszi, hogy több környezetszolgáltatót egyesítsen egyetlen szolgáltatóval.

Megjegyzés:

Az AggregateContextProvider automatikusan létrejön, amikor egyetlen kontextust ad át

szolgáltató vagy környezetszolgáltatók sorozata az ügynökkonstruktor számára.

Inicializálja az AggregateContextProvidert környezetszolgáltatókkal.

BaseAgent

Alaposztály minden Ügynök-keretrendszer-ügynökhöz.

Ez az osztály alapvető funkciókat biztosít az ügynökök implementációihoz, beleértve a környezetszolgáltatókat, a köztes szoftvertámogatást és a szálkezelést.

Megjegyzés:

A BaseAgent nem hozható létre közvetlenül, mivel nem implementálja a

run(), run_stream() és az AgentProtocol által megkövetelt egyéb metódusok.

Használjon konkrét implementációt, például a ChatAgentet, vagy hozzon létre egy alosztályt.

BaseAgent-példány inicializálása.

BaseAnnotation

Alaposztály az összes AI-megjegyzéstípushoz.

A BaseAnnotation inicializálása.

BaseChatClient

Alaposztály csevegési ügyfelek számára.

Ez az absztrakt alaposztály alapvető funkciókat biztosít a csevegőügyfél implementációihoz, beleértve a köztes szoftver támogatását, az üzenetek előkészítését és az eszközök normalizálását.

Megjegyzés:

A BaseChatClient nem hozható létre közvetlenül, mivel ez egy absztrakt alaposztály.

Az alosztályok _inner_get_response() és _inner_get_streaming_response() implementálnak.

BaseChatClient-példány inicializálása.

BaseContent

Az AI-szolgáltatások által használt tartalmat jelöli.

A BaseContent inicializálása.

Case

A kapcsolóeset-predikátumot és a célértéket kombináló futtatókörnyezetburkoló.

Minden eset egy logikai predikátumot párosít a végrehajtóval, amelynek kezelnie kell az üzenetet, amikor a predikátum értéke Igaz. A futtatókörnyezet elkülöníti ezt az egyszerűsített tárolót a szerialható SwitchCaseEdgeGroupCasetől , így a végrehajtás élő hívható eszközökkel is működhet, anélkül, hogy környezetszennyező maradna.

ChatAgent

Csevegőügyfél-ügynök.

Ez az elsődleges ügynök-implementáció, amely egy csevegőügyfél használatával kommunikál a nyelvi modellekkel. Támogatja az eszközöket, a környezetszolgáltatókat, a köztes szoftvereket, valamint a streamelési és a nem streamelési válaszokat is.

ChatAgent-példány inicializálása.

Megjegyzés:

A frequency_penalty és a request_kwargs paraméterkészlete a

hívja meg a csevegőügyfélt. Mindkét futtatási metódusnak átadhatók.

Ha mindkettő be van állítva, a futtatási metódusnak átadottak elsőbbséget élveznek.

ChatClientProtocol

Egy csevegőügyfél protokollja, amely képes válaszokat generálni.

Ez a protokoll határozza meg azt a felületet, amelyet az összes csevegési ügyfélnek végre kell hajtania, beleértve a streamelésre és a nem streamelt válaszok létrehozására szolgáló módszereket is.

Megjegyzés:

A protokollok szerkezeti altipizálást (kacsagépelést) használnak. Az osztályoknak nincs szükségük

hogy explicit módon örökölje ezt a protokollt, hogy kompatibilisnek minősüljön.

ChatContext

A csevegőközvetítők meghívásainak környezeti objektuma.

Ezt a környezetet a rendszer a csevegés köztes szoftver folyamatán keresztül továbbítja, és a csevegési kéréssel kapcsolatos összes információt tartalmazza.

Inicializálja a ChatContextet.

ChatMessage

Csevegőüzenetet jelöl.

A ChatMessage inicializálása.

ChatMessageStore

A ChatMessageStoreProtocol memóriabeli implementációja, amely egy listában tárolja az üzeneteket.

Ez az implementáció egy egyszerű, listaalapú tárolót biztosít a csevegési üzenetekhez a szerializálás és a deszerializálás támogatásával. A protokoll minden szükséges módszerét ChatMessageStoreProtocol implementálja.

Az áruház fenntartja az üzeneteket a memóriában, és metódusokat biztosít az állapot szerializálására és deszerializálására az adatmegőrzés céljából.

Hozzon létre egy ChatMessageStore-t egy szálban való használatra.

ChatMessageStoreProtocol

Egy adott szálhoz társított csevegőüzenetek tárolására és beolvasására szolgáló módszereket határoz meg.

A protokoll implementációi felelősek a csevegőüzenetek tárolásának kezeléséért, beleértve a nagy mennyiségű adat kezelését az üzenetek csonkolásával vagy szükség szerinti összegzésével.

ChatMiddleware

Absztrakt alaposztály csevegési köztes szoftverhez, amely képes elfogni a csevegési ügyfélkéréseket.

A csevegési köztes szoftver lehetővé teszi a csevegési ügyfélkérések elfogását és módosítását a végrehajtás előtt és után. Módosíthatja az üzeneteket, hozzáadhat rendszerkéréseket, naplókéréseket vagy felülbírálhatja a csevegési válaszokat.

Megjegyzés:

A ChatMiddleware egy absztrakt alaposztály. Alosztályba kell sorolnia, és végre kell hajtania

az egyéni csevegőközvetíteni kívánt folyamat() metódus.

ChatOptions

Az AI-szolgáltatások gyakori kérésbeállításai.

A ChatOptions inicializálása.

ChatResponse

A csevegési kérésre adott választ jelöli.

Inicializál egy ChatResponse-t a megadott paraméterekkel.

ChatResponseUpdate

Egyetlen streamelési választömbet jelöl a ChatClientből.

Inicializál egy ChatResponseUpdate-t a megadott paraméterekkel.

CheckpointStorage

Az Ellenőrzőpont-tároló háttérrendszereinek protokollja.

CitationAnnotation

Idézőjelet jelöl.

A CitationAnnotation inicializálása.

ConcurrentBuilder

Magas szintű szerkesztő egyidejű ügynök-munkafolyamatokhoz.

  • résztvevők([...]) Elfogadja az AgentProtocol (ajánlott) vagy a Végrehajtó listáját.

  • register_participants([...]) elfogadja az AgentProtocol gyárainak listáját (ajánlott)

    vagy Végrehajtó gyárak

  • build() wires: dispatcher -> fan-out -> participants -> fan-in -> aggregator.

  • with_aggregator(...) felülírja az alapértelmezett összesítőt végrehajtóval vagy visszahívással.

  • register_aggregator(...) Egyéni összesítőként fogadja el a végrehajtók gyárát.

Használat:


   from agent_framework import ConcurrentBuilder

   # Minimal: use default aggregator (returns list[ChatMessage])
   workflow = ConcurrentBuilder().participants([agent1, agent2, agent3]).build()

   # With agent factories
   workflow = ConcurrentBuilder().register_participants([create_agent1, create_agent2, create_agent3]).build()


   # Custom aggregator via callback (sync or async). The callback receives
   # list[AgentExecutorResponse] and its return value becomes the workflow's output.
   def summarize(results: list[AgentExecutorResponse]) -> str:
       return " | ".join(r.agent_run_response.messages[-1].text for r in results)


   workflow = ConcurrentBuilder().participants([agent1, agent2, agent3]).with_aggregator(summarize).build()


   # Custom aggregator via a factory
   class MyAggregator(Executor):
       @handler
       async def aggregate(self, results: list[AgentExecutorResponse], ctx: WorkflowContext[Never, str]) -> None:
           await ctx.yield_output(" | ".join(r.agent_run_response.messages[-1].text for r in results))


   workflow = (
       ConcurrentBuilder()
       .register_participants([create_agent1, create_agent2, create_agent3])
       .register_aggregator(lambda: MyAggregator(id="my_aggregator"))
       .build()
   )


   # Enable checkpoint persistence so runs can resume
   workflow = ConcurrentBuilder().participants([agent1, agent2, agent3]).with_checkpointing(storage).build()

   # Enable request info before aggregation
   workflow = ConcurrentBuilder().participants([agent1, agent2]).with_request_info().build()
Context

Az AI-modellnek a ContextProvider által biztosított környezeteket tartalmazó osztály.

Minden Egyes ContextProvider képes saját kontextust biztosítani az egyes meghívásokhoz. A Környezeti osztály a ContextProvider által biztosított további környezetet tartalmazza. Ezt a környezetet a rendszer kombinálja a többi szolgáltató által biztosított környezettel, mielőtt átadják őket az AI-modellnek. Ez a környezet meghívásonként van megadva, és nem lesz tárolva a csevegési előzmények részeként.

Hozzon létre egy új környezeti objektumot.

ContextProvider

Alaposztály az összes környezetszolgáltatóhoz.

A környezetszolgáltató olyan összetevő, amely az AI környezetkezelésének javítására használható. Meghallgathatja a beszélgetés változásait, és a meghívás előtt további kontextust biztosíthat az AI-modellnek.

Megjegyzés:

A ContextProvider egy absztrakt alaposztály. Alosztályba kell sorolnia, és végre kell hajtania

az egyéni környezetszolgáltató létrehozására vonatkozó invoking() metódus. Ideális esetben

a meghívott() és thread_created() metódusok implementálása a beszélgetés nyomon követéséhez

állapotot, de ezek nem kötelezőek.

DataContent

Bináris adattartalmat jelöl egy társított médiatípussal (más néven MIME-típussal).

Fontos

Ez az adat URI-ként ábrázolt bináris adatokra vonatkozik, nem online erőforrásokra.

Az UriContent használata online erőforrásokhoz.

Inicializál egy DataContent-példányt.

Fontos

Ez az adat URI-ként ábrázolt bináris adatokra vonatkozik, nem online erőforrásokra.

Az UriContent használata online erőforrásokhoz.

Default

Az alapértelmezett ág futtatókörnyezeti ábrázolása egy kapcsoló-esetcsoportban.

Az alapértelmezett ág csak akkor lesz meghívva, ha nincs más eset predikátuma. A gyakorlatban ez garantáltan létezik, hogy az útválasztás soha ne hozzon létre üres célt.

Edge

Modellez egy irányított, opcionálisan feltételes átadást két végrehajtó között.

Minden Edge rögzíti azokat a minimális metaadatokat, amelyekre szükség van az üzenetek egyik végrehajtóból a másikba való áthelyezéséhez a munkafolyamat-diagramon belül. Opcionálisan beágyaz egy logikai predikátumot, amely eldönti, hogy a peremhálózatot futásidőben kell-e venni. A peremhálózat primitívekre való szerializálásával rekonstruálhatjuk egy munkafolyamat topológiáját, függetlenül az eredeti Python-folyamattól.

Teljesen meghatározott él inicializálása két munkafolyamat-végrehajtó között.

EdgeDuplicationError

A munkafolyamatban ismétlődő élek észlelésekor kivétel keletkezik.

ErrorContent

Hibát jelöl.

Megjegyzések: Általában nem végzetes hibák esetén használatos, ahol hiba történt a művelet részeként, de a művelet továbbra is folytatható volt.

Inicializál egy ErrorContent-példányt.

Executor

Alaposztály az üzeneteket feldolgozó és számításokat végző munkafolyamat-végrehajtók számára.

Áttekintés

A végrehajtók a munkafolyamatok alapvető építőelemei, amelyek üzeneteket fogadó, műveleteket végrehajtó és kimeneteket termelő egyéni feldolgozási egységeket képviselnek. Minden végrehajtó egyedileg van azonosítva, és díszített kezelőmódszerekkel képes kezelni bizonyos üzenettípusokat.

Gépelje be a rendszert

A végrehajtók gazdag típusrendszerrel rendelkeznek, amely meghatározza a képességeiket:

Bemeneti típusok

A végrehajtó által feldolgozható üzenetek típusai a kezelőmetódus-aláírásokból felderítve:


   class MyExecutor(Executor):
       @handler
       async def handle_string(self, message: str, ctx: WorkflowContext) -> None:
           # This executor can handle 'str' input types

Hozzáférés a input_types tulajdonságon keresztül.

Kimeneti típusok

A végrehajtó által más végrehajtóknak ctx.send_message () keresztül küldhető üzenetek típusai:


   class MyExecutor(Executor):
       @handler
       async def handle_data(self, message: str, ctx: WorkflowContext[int | bool]) -> None:
           # This executor can send 'int' or 'bool' messages

Hozzáférés a output_types tulajdonságon keresztül.

Munkafolyamat kimenettípusai

A végrehajtó által a munkafolyamat-szintű kimenetként kibocsátott adattípusok ctx.yield_output():>


   class MyExecutor(Executor):
       @handler
       async def process(self, message: str, ctx: WorkflowContext[int, str]) -> None:
           # Can send 'int' messages AND yield 'str' workflow outputs

Hozzáférés a workflow_output_types tulajdonságon keresztül.

Kezelő felderítése

A végrehajtók kitüntetett módszerekkel derítik fel képességeiket:

@handler Lakberendező

A bejövő üzeneteket feldolgozó metódusok megjelölése:


   class MyExecutor(Executor):
       @handler
       async def handle_text(self, message: str, ctx: WorkflowContext[str]) -> None:
           await ctx.send_message(message.upper())

Munkafolyamat-alfolyamat kérésének elfogása

Metódusok használata @handler a munkafolyamat-alkérelmek elfogásához:


   class ParentExecutor(Executor):
       @handler
       async def handle_subworkflow_request(
           self,
           request: SubWorkflowRequestMessage,
           ctx: WorkflowContext[SubWorkflowResponseMessage],
       ) -> None:
           if self.is_allowed(request.domain):
               response = request.create_response(data=True)
               await ctx.send_message(response, target_id=request.executor_id)
           else:
               await ctx.request_info(request.source_event, response_type=request.source_event.response_type)

Környezettípusok

A kezelő metódusok típusjegyzeteik alapján különböző WorkflowContext-változatokat kapnak:

WorkflowContext (nincs típusparaméter)

Olyan kezelők esetében, amelyek csak mellékhatásokat végeznek üzenetek küldése vagy kimenetek kibocsátása nélkül:


   class LoggingExecutor(Executor):
       @handler
       async def log_message(self, msg: str, ctx: WorkflowContext) -> None:
           print(f"Received: {msg}")  # Only logging, no outputs

WorkflowContext[T_Out]

Engedélyezi T_Out típusú üzenetek küldését ctx.send_message():>


   class ProcessorExecutor(Executor):
       @handler
       async def handler(self, msg: str, ctx: WorkflowContext[int]) -> None:
           await ctx.send_message(42)  # Can send int messages

WorkflowContext[T_Out, T_W_Out]

Lehetővé teszi az üzenetek küldését (T_Out) és a munkafolyamat kimenetének (T_W_Out) adását:


   class DualOutputExecutor(Executor):
       @handler
       async def handler(self, msg: str, ctx: WorkflowContext[int, str]) -> None:
           await ctx.send_message(42)  # Send int message
           await ctx.yield_output("done")  # Yield str workflow output

Függvény-végrehajtók

Az egyszerű függvények végrehajtóvá alakíthatók a @executor dekoratőrrel:


   @executor
   async def process_text(text: str, ctx: WorkflowContext[str]) -> None:
       await ctx.send_message(text.upper())


   # Or with custom ID:
   @executor(id="text_processor")
   def sync_process(text: str, ctx: WorkflowContext[str]) -> None:
       ctx.send_message(text.lower())  # Sync functions run in thread pool

Rész-munkafolyamat összeállítása

A végrehajtók a WorkflowExecutor használatával tartalmazhatnak al-munkafolyamatokat. Az al-munkafolyamatok olyan kéréseket is kezdeményezhetnek, amelyeket a szülő munkafolyamatok képesek elfogni. A munkafolyamat-összeállítási mintákról és a kérelmek/válaszok kezeléséről további információt a WorkflowExecutor dokumentációjában talál.

Állapotkezelés

A végrehajtók olyan állapotokat tartalmazhatnak, amelyek a munkafolyamat-futtatások és az ellenőrzőpontok között megmaradnak. Felülbírálja a on_checkpoint_save és on_checkpoint_restore metódusokat az egyéni állapot szerializálási és visszaállítási logikájának implementálásához.

Végrehajtási megjegyzések

  • Ne hívja meg közvetlenül az execute() parancsot – a munkafolyamat-motor hívja meg
  • Ne bírálja felül az execute() parancsot – a kezelők definiálása dekorátorokkal
  • Minden végrehajtónak legalább egy @handler metódust kell tartalmaznia
  • A kezelőmetódus aláírásai az inicializáláskor lesznek érvényesítve

Inicializálja a végrehajtót egy egyedi azonosítóval.

ExecutorCompletedEvent

Egy végrehajtó kezelő befejezésekor aktiválódott esemény.

Inicializálja a végrehajtói eseményt egy végrehajtóazonosítóval és opcionális adatokkal.

ExecutorEvent

A végrehajtói események alaposztálya.

Inicializálja a végrehajtói eseményt egy végrehajtóazonosítóval és opcionális adatokkal.

ExecutorFailedEvent

Az esemény akkor aktiválódik, amikor egy végrehajtó kezelő hibát jelez.

ExecutorInvokedEvent

Egy végrehajtó kezelő meghívásakor aktiválódott esemény.

Inicializálja a végrehajtói eseményt egy végrehajtóazonosítóval és opcionális adatokkal.

FanInEdgeGroup

Egyetlen alsóbb rétegbeli végrehajtót tápláló, konvergens élkészletet jelöl.

A fan-in csoportokat általában akkor használják, ha több felsőbb réteg egymástól függetlenül olyan üzeneteket hoz létre, amelyeknek ugyanahhoz az alsóbb rétegbeli processzorhoz kell érkeznie.

Hozzon létre egy ventilátorleképezést, amely több forrást egyesít egyetlen célként.

FanOutEdgeGroup

Szórásstílusú élcsoportot jelöl opcionális kijelölési logikával.

A fan-out egy forrás-végrehajtó által létrehozott üzenetet továbbít egy vagy több alsóbb rétegbeli végrehajtónak. Futásidőben tovább szűkíthetjük a célokat egy olyan selection_func végrehajtásával, amely figyelembe veszi a hasznos adatokat, és visszaadja az üzeneteket fogadó azonosítók részhalmazát.

Egyetlen forrásból több célhoz is létrehozhat egy kiragóleképezést.

FileCheckpointStorage

Fájlalapú ellenőrzőpont-tároló az adatmegőrzéshez.

Inicializálja a fájltárolót.

FinishReason

A csevegési válasz befejezésének okát jelöli.

FinishReason inicializálása egy értékkel.

FunctionApprovalRequestContent

Függvényhívás felhasználói jóváhagyására irányuló kérést jelöl.

Inicializál egy FunctionApprovalRequestContent példányt.

FunctionApprovalResponseContent

Függvényhívás felhasználói jóváhagyására adott válasz.

Inicializál egy FunctionApprovalResponseContent példányt.

FunctionCallContent

Függvényhívási kérést jelöl.

Inicializál egy FunctionCallContent-példányt.

FunctionExecutor

Felhasználó által definiált függvényt körbefuttató végrehajtó.

Ez a végrehajtó lehetővé teszi, hogy a felhasználók egyszerű függvényeket definiáljanak (szinkronizálást és aszinkront is), és munkafolyamat-végrehajtóként használják őket anélkül, hogy teljes végrehajtóosztályokat kellene létrehozniuk.

A szinkron függvények a asyncio.to_thread() használatával hajthatók végre egy szálkészletben az eseményhurok blokkolásának elkerülése érdekében.

Inicializálja a FunctionExecutort egy felhasználó által definiált függvénnyel.

FunctionInvocationConfiguration

Függvényhívás konfigurálása csevegési ügyfeleken.

Ez az osztály automatikusan létrejön minden olyan csevegési ügyfélen, amely támogatja a függvényhívást. Ez azt jelenti, hogy a legtöbb esetben egyszerűen módosíthatja a példány attribútumait, majd létrehozhat egy újat.

A FunctionInvocationConfiguration inicializálása.

FunctionInvocationContext

A függvény köztes szoftver meghívásainak környezeti objektuma.

Ezt a környezetet a függvény köztes szoftverfolyamata továbbítja, és a függvényhívással kapcsolatos összes információt tartalmazza.

Inicializálja a FunctionInvocationContext fájlt.

FunctionMiddleware

A függvényközvetítők absztrakt alaposztálya, amely képes elfogni a függvényhívásokat.

A függvényközvetítő lehetővé teszi a függvény-/eszközhívások elfogását és módosítását a végrehajtás előtt és után. Érvényesítheti az argumentumokat, a gyorsítótár eredményeit, a naplóhívásokat vagy felülbírálhatja a függvények végrehajtását.

Megjegyzés:

A FunctionMiddleware egy absztrakt alaposztály. Alosztályba kell sorolnia, és végre kell hajtania

az egyéni függvényközvetíteni kívánt függvények létrehozásának folyamat() metódusa.

FunctionResultContent

Függvényhívás eredményét jelöli.

Egy FunctionResultContent-példány inicializálása.

GraphConnectivityError

A gráfkapcsolati problémák észlelésekor jelentkező kivétel.

GroupChatBuilder

Magas szintű szerkesztő a vezető által irányított csoportos csevegési munkafolyamatokhoz dinamikus vezényléssel.

A GroupChat koordinálja a többügynök-beszélgetéseket egy olyan kezelővel, amely kiválasztja, hogy melyik résztvevő beszél legközelebb. A kezelő lehet egyszerű Python-függvény (set_select_speakers_func) vagy ügynökalapú választó set_manager. Ez a két megközelítés kölcsönösen kizárja egymást.

Alapvető munkafolyamat:

  1. Résztvevők definiálása: ügynökök listája (a .name nevet használja) vagy a diktálási leképezés neve az ügynökökre

  2. Hangszóró kiválasztásának konfigurálása: set_select_speakers_func VAGY

    set_manager (nem mindkettő)

  3. Nem kötelező: kerek korlátok beállítása, ellenőrzőpont-beállítás, megszüntetési feltételek

  4. A munkafolyamat létrehozása és futtatása

Beszélőválasztási minták:

1. minta: Egyszerű függvényalapú kijelölés (ajánlott)


   from agent_framework import GroupChatBuilder, GroupChatStateSnapshot


   def select_next_speaker(state: GroupChatStateSnapshot) -> str | None:
       # state contains: task, participants, conversation, history, round_index
       if state["round_index"] >= 5:
           return None  # Finish
       last_speaker = state["history"][-1].speaker if state["history"] else None
       if last_speaker == "researcher":
           return "writer"
       return "researcher"


   workflow = (
       GroupChatBuilder()
       .set_select_speakers_func(select_next_speaker)
       .participants([researcher_agent, writer_agent])  # Uses agent.name
       .build()
   )

2. minta: LLM-alapú kijelölés


   from agent_framework import ChatAgent
   from agent_framework.azure import AzureOpenAIChatClient

   manager_agent = AzureOpenAIChatClient().create_agent(
       instructions="Coordinate the conversation and pick the next speaker.",
       name="Coordinator",
       temperature=0.3,
       seed=42,
       max_tokens=500,
   )

   workflow = (
       GroupChatBuilder()
       .set_manager(manager_agent, display_name="Coordinator")
       .participants([researcher, writer])  # Or use dict: researcher=r, writer=w
       .with_max_rounds(10)
       .build()
   )

3. minta: Információ kérése beszélgetés közbeni visszajelzéshez


   from agent_framework import GroupChatBuilder

   # Pause before all participants
   workflow = (
       GroupChatBuilder()
       .set_select_speakers_func(select_next_speaker)
       .participants([researcher, writer])
       .with_request_info()
       .build()
   )

   # Pause only before specific participants
   workflow = (
       GroupChatBuilder()
       .set_select_speakers_func(select_next_speaker)
       .participants([researcher, writer, editor])
       .with_request_info(agents=[editor])  # Only pause before editor responds
       .build()
   )

Résztvevő specifikációja:

A résztvevők megadásának két módja:

  • Listaűrlap: [agent1, agent2]agent.name attribútumot használ a résztvevők neveihez
  • Diktálás űrlap: {name1: agent1, name2: agent2} – explicit név vezérlőelem
  • Kulcsszóűrlap: résztvevők(name1=agent1, name2=agent2) – explicit név vezérlőelem

Állapot-pillanatkép-struktúra:

A set_select_speakers_func átadott GroupChatStateSnapshot a következőket tartalmazza:

  • feladat: ChatMessage – Eredeti felhasználói feladat
  • résztvevők: dict[str, str] – Résztvevők nevének leképezése leírásokra
  • beszélgetés: tuple[ChatMessage, ...] - Teljes beszélgetési előzmények
  • előzmények: tuple[GroupChatTurn, ...] - Turn-by-turn record with speaker attribution
  • round_index: int – Az eddigi vezetőválasztási fordulók száma
  • pending_agent: str | Nincs – A jelenleg feldolgozásra kijelölt ügynök neve (ha van ilyen)

Fontos korlátozások:

  • Nem kombinálható set_select_speakers_func és set_manager
  • A résztvevők nevének egyedinek kell lennie
  • Listaűrlap használatakor az ügynököknek nem üres névattribútummal kell rendelkezniük

Inicializálja a GroupChatBuildert.

GroupChatDirective

A csoportos csevegéskezelő implementációja által kibocsátott utasítások.

HandoffBuilder

Fluent Builder a koordinátorral és a speciális ügynökökkel folytatott beszélgetési átadási munkafolyamatokhoz.

Az átadási minta lehetővé teszi, hogy a koordinátorügynök a kéréseket speciális ügynököknek irányozza. Az interakciós mód azt szabályozza, hogy a munkafolyamat minden ügynök válasza után felhasználói bemenetet kér-e, vagy az ügynökök válaszának befejezése után önállóan fejeződik-e be. A leállítási feltétel határozza meg, hogy a munkafolyamat mikor fejezze be és fejezze be a bemenő adatokat.

Útválasztási minták:

Single-Tier (alapértelmezett): Csak a koordinátor adhat át szakembereknek. Alapértelmezés szerint a szakember válaszolása után a vezérlő visszatér a felhasználóhoz további bemenetekért. Ez létrehoz egy ciklikus folyamatot: felhasználó - koordinátor ->> [választható szakértő] -> felhasználó -> koordinátor -> ... Az with_interaction_mode("autonóm") használatával kihagyhatja a további felhasználói bemenetek kérését, és a végső beszélgetést akkor folytathatja, amikor egy ügynök delegálás nélkül válaszol.

Többrétegű (speciális): A szakemberek .add_handoff() használatával adhatnak át más szakembereknek. Ez nagyobb rugalmasságot biztosít az összetett munkafolyamatokhoz, de kevésbé szabályozható, mint az egyrétegű minta. A felhasználók elveszítik a valós idejű láthatóságot a köztes lépésekben a szakorvosok közti átadások során (bár a beszélgetések teljes előzményei, beleértve az összes handoffot is, megmaradnak, és utána vizsgálhatók).

A legfontosabb jellemzők:

  • Automatikus átadás-észlelés: A koordinátor meghív egy olyan átadási eszközt, amelynek

    argumentumok (például {"handoff_to": "shipping_agent"}) azonosítják az irányítást fogadó szakembert.

  • Automatikusan létrehozott eszközök: Alapértelmezés szerint a szerkesztő szintetizálja a koordinátor handoff_to_<agent> eszközeit, így nem definiál manuálisan helyőrző függvényeket.

  • Teljes beszélgetési előzmények: A teljes beszélgetés (beleértve a ChatMessage.additional_properties) megmarad, és minden ügynöknek átadja.

  • Megszüntetés vezérlése: Alapértelmezés szerint 10 felhasználói üzenet után fejeződik be. Felülbírálás .with_termination_condition(lambda conv: ...) egyéni logikához (pl. "viszlát").

  • Interakciós módok: Válassza az human_in_loop (alapértelmezett) lehetőséget, ha a felhasználókat az ügynök fordulatai között szeretné kérni, vagy az autonóm beállítást választva folytathatja a visszairányítást az ügynökökhöz anélkül, hogy felhasználói bemenetet kérne, amíg el nem éri a leállítási/fordulási korlátot (alapértelmezett autonóm fordulási korlát: 50).

  • Ellenőrzőpont-készítés: Nem kötelező az újraéledő munkafolyamatok megőrzése.

Használat (Single-Tier):


   from agent_framework import HandoffBuilder
   from agent_framework.openai import OpenAIChatClient

   chat_client = OpenAIChatClient()

   # Create coordinator and specialist agents
   coordinator = chat_client.create_agent(
       instructions=(
           "You are a frontline support agent. Assess the user's issue and decide "
           "whether to hand off to 'refund_agent' or 'shipping_agent'. When delegation is "
           "required, call the matching handoff tool (for example `handoff_to_refund_agent`)."
       ),
       name="coordinator_agent",
   )

   refund = chat_client.create_agent(
       instructions="You handle refund requests. Ask for order details and process refunds.",
       name="refund_agent",
   )

   shipping = chat_client.create_agent(
       instructions="You resolve shipping issues. Track packages and update delivery status.",
       name="shipping_agent",
   )

   # Build the handoff workflow - default single-tier routing
   workflow = (
       HandoffBuilder(
           name="customer_support",
           participants=[coordinator, refund, shipping],
       )
       .set_coordinator(coordinator)
       .build()
   )

   # Run the workflow
   events = await workflow.run_stream("My package hasn't arrived yet")
   async for event in events:
       if isinstance(event, RequestInfoEvent):
           # Request user input
           user_response = input("You: ")
           await workflow.send_response(event.data.request_id, user_response)

Többrétegű útválasztás .add_handoff():


   # Enable specialist-to-specialist handoffs with fluent API
   workflow = (
       HandoffBuilder(participants=[coordinator, replacement, delivery, billing])
       .set_coordinator(coordinator)
       .add_handoff(coordinator, [replacement, delivery, billing])  # Coordinator routes to all
       .add_handoff(replacement, [delivery, billing])  # Replacement delegates to delivery/billing
       .add_handoff(delivery, billing)  # Delivery escalates to billing
       .build()
   )

   # Flow: User → Coordinator → Replacement → Delivery → Back to User
   # (Replacement hands off to Delivery without returning to user)

Résztvevőgyárak használata az állapotelkülönítéshez:

Egyéni megszüntetési feltétel:


   # Terminate when user says goodbye or after 5 exchanges
   workflow = (
       HandoffBuilder(participants=[coordinator, refund, shipping])
       .set_coordinator(coordinator)
       .with_termination_condition(
           lambda conv: (
               sum(1 for msg in conv if msg.role.value == "user") >= 5
               or any("goodbye" in msg.text.lower() for msg in conv[-2:])
           )
       )
       .build()
   )

Ellenőrzőpont:


   from agent_framework import InMemoryCheckpointStorage

   storage = InMemoryCheckpointStorage()
   workflow = (
       HandoffBuilder(participants=[coordinator, refund, shipping])
       .set_coordinator(coordinator)
       .with_checkpointing(storage)
       .build()
   )

HandoffBuilder inicializálása beszélgetési átadási munkafolyamatok létrehozásához.

A szerkesztő nem konfigurált állapotban indul el, és a következőt kell meghívnia:

  1. .participants([...]) - Ügynökök regisztrálása
  2. vagy .participant_factories({...}) – Ügynök/végrehajtó gyárak regisztrálása
  3. .set_coordinator(...) – Annak megadása, hogy melyik ügynök kapja meg a kezdeti felhasználói bemenetet
  4. .build() – A végső munkafolyamat létrehozása

Az opcionális konfigurációs módszerek lehetővé teszik a környezetkezelés, a végpontlogika és az adatmegőrzés testreszabását.

Megjegyzés:

A résztvevőknek stabil névvel/azonosítókkal kell rendelkezniük, mert a munkafolyamat lekép

a handoff tool argumentumai ezekhez az azonosítókhoz. Az ügynökneveknek egyeznie kell

a koordinátor átadási eszköze által kibocsátott sztringek (például egy olyan eszköz, amely

a(z) {"handoff_to": "billing"} kimenetekhez egy számlázás nevű ügynök szükséges).

HandoffUserInputRequest

Ha a munkafolyamathoz friss felhasználói bemenetre van szükség, küldjön üzenetet.

Megjegyzés: A beszélgetési mező szándékosan ki van zárva az ellenőrzőpont szerializálásából a duplikáció elkerülése érdekében. A beszélgetés megmarad a koordinátor állapotában, és a visszaállítás során rekonstruálva lesz. Lásd a 2667.

HostedCodeInterpreterTool

Olyan üzemeltetett eszközt jelöl, amely megadható egy AI-szolgáltatás számára a generált kód végrehajtásának engedélyezéséhez.

Ez az eszköz nem implementálja magát a kódértelmezést. Jelölőként szolgál arra, hogy tájékoztassa a szolgáltatást arról, hogy a szolgáltatás akkor hajthat végre generált kódot, ha a szolgáltatás képes erre.

Inicializálja a HostedCodeInterpreterTool parancsot.

HostedFileContent

Üzemeltetett fájltartalmat jelöl.

Egy HostedFileContent-példány inicializálása.

HostedFileSearchTool

Egy AI-szolgáltatáshoz megadható fájlkereső eszközt jelöl, amely lehetővé teszi a fájlkereséseket.

FileSearchTool inicializálása.

HostedMCPSpecificApproval

Egy üzemeltetett eszköz adott módját jelöli.

Ha ezt a módot használja, a felhasználónak meg kell adnia, hogy mely eszközökhöz kell mindig vagy soha jóváhagyást kérnie. Ez szótárként jelenik meg két választható kulccsal:

HostedMCPTool

Olyan MCP-eszközt jelöl, amelyet a szolgáltatás felügyel és hajt végre.

Üzemeltetett MCP-eszköz létrehozása.

HostedVectorStoreContent

Üzemeltetett vektortár tartalmát jelöli.

Inicializál egy HostedVectorStoreContent példányt.

HostedWebSearchTool

Olyan webes keresőeszközt jelöl, amely megadható egy AI-szolgáltatás számára, hogy lehetővé tegye a webes kereséseket.

HostedWebSearchTool inicializálása.

InMemoryCheckpointStorage

Memóriabeli ellenőrzőpont-tároló teszteléshez és fejlesztéshez.

Inicializálja a memóriatárolót.

InProcRunnerContext

Folyamaton belüli végrehajtási környezet helyi végrehajtáshoz és opcionális ellenőrzőpont-beállításhoz.

Inicializálja a folyamatban lévő végrehajtási környezetet.

MCPStdioTool

MCP-eszköz a stdio-alapú MCP-kiszolgálókhoz való csatlakozáshoz.

Ez az osztály olyan MCP-kiszolgálókhoz csatlakozik, amelyek szabványos bemeneten/kimeneten keresztül kommunikálnak, általában helyi folyamatokhoz.

Inicializálja az MCP stdio eszközt.

Megjegyzés:

Az argumentumok egy StdioServerParameters objektum létrehozására szolgálnak,

amelyet aztán egy stdio-ügyfél létrehozásához használnak. Lásd: mcp.client.stdio.stdio_client

és mcp.client.stdio.stdio_server_parameters további részletekért.

MCPStreamableHTTPTool

MCP-eszköz HTTP-alapú MCP-kiszolgálókhoz való csatlakozáshoz.

Ez az osztály olyan MCP-kiszolgálókhoz csatlakozik, amelyek streamelhető HTTP/SSE-n keresztül kommunikálnak.

Inicializálja az MCP streamelhető HTTP-eszközt.

Megjegyzés:

Az argumentumok streamelhető HTTP-ügyfél létrehozásához használhatók.

További részletekért lásd: mcp.client.streamable_http.streamablehttp_client.

A konstruktornak átadott további argumentumok a

streamelhető HTTP-ügyfélkonstruktor.

MCPWebsocketTool

MCP-eszköz a WebSocket-alapú MCP-kiszolgálókhoz való csatlakozáshoz.

Ez az osztály a WebSocketen keresztül kommunikáló MCP-kiszolgálókhoz csatlakozik.

Inicializálja az MCP WebSocket eszközt.

Megjegyzés:

Az argumentumok a WebSocket-ügyfél létrehozásához használhatók.

További részletekért lásd a mcp.client.websocket.websocket_client.

A konstruktornak átadott további argumentumok a

WebSocket ügyfélkonstruktor.

MagenticBuilder

Fluent Builder a Magentic One többügynökök vezénylési munkafolyamatainak létrehozásához.

A Magentic One munkafolyamatok LLM-alapú kezelővel koordinálnak több ügynököt dinamikus feladattervezéssel, folyamatkövetéssel és adaptív újratervezéssel. A vezető terveket hoz létre, ügynököket választ ki, figyeli az előrehaladást, és meghatározza, hogy mikor kell újratervezni vagy befejezni.

A szerkesztő egy folyékony API-t biztosít a résztvevők, a kezelő, az opcionális tervvizsgálat, az ellenőrzőpontozás és az eseményvisszahívások konfigurálásához.

Human-in-the-loop támogatás: Magentic biztosít speciális HITL mechanizmusok keresztül:

  • .with_plan_review() – Tervek áttekintése és jóváhagyása/módosítása végrehajtás előtt

  • .with_human_input_on_stall() – Beavatkozás munkafolyamat leállása esetén

  • Eszközjóváhagyás a FunctionApprovalRequestContent használatával – Egyedi eszközhívások jóváhagyása

Ezek magenticHumanInterventionRequest eseményeket bocsátanak ki, amelyek strukturált döntési lehetőségeket (APPROVE, REVISE, CONTINUE, REPLAN, GUIDANCE) biztosítanak a Magentic tervezésalapú vezénylésére.

Használat:


   from agent_framework import MagenticBuilder, StandardMagenticManager
   from azure.ai.projects.aio import AIProjectClient

   # Create manager with LLM client
   project_client = AIProjectClient.from_connection_string(...)
   chat_client = project_client.inference.get_chat_completions_client()

   # Build Magentic workflow with agents
   workflow = (
       MagenticBuilder()
       .participants(researcher=research_agent, writer=writing_agent, coder=coding_agent)
       .with_standard_manager(chat_client=chat_client, max_round_count=20, max_stall_count=3)
       .with_plan_review(enable=True)
       .with_checkpointing(checkpoint_storage)
       .build()
   )

   # Execute workflow
   async for message in workflow.run("Research and write article about AI agents"):
       print(message.text)

Egyéni kezelővel:


   # Create custom manager subclass
   class MyCustomManager(MagenticManagerBase):
       async def plan(self, context: MagenticContext) -> ChatMessage:
           # Custom planning logic
           ...


   manager = MyCustomManager()
   workflow = MagenticBuilder().participants(agent1=agent1, agent2=agent2).with_standard_manager(manager).build()
MagenticContext

A Magentic Manager környezete.

MagenticManagerBase

Alaposztály a Magentic One-kezelőhöz.

ManagerDirectiveModel

Pydantic model for structured manager directive output.

Hozzon létre egy új modellt a kulcsszóargumentumok bemeneti adatainak elemzésével és érvényesítésével.

[ValidationError][pydantic_core. ValidationError] ha a bemeneti adatok nem érvényesíthetők érvényes modell létrehozásához.

a self explicit módon csak pozícióban van, hogy lehetővé tegye az önneveket mezőnévként.

ManagerSelectionRequest

A menedzserügynöknek küldött kérés a következő beszélő kiválasztásához.

Ez az adatosztály a teljes beszélgetési állapotot és feladatkörnyezetet csomagolja be, hogy a kezelőügynök elemezze és meghozhassa a beszélőválasztási döntést.

ManagerSelectionResponse

A menedzserügynök válasza a beszélőválasztási döntéssel.

A vezető ügynöknek ezt a struktúrát (vagy kompatibilis dict/JSON-t) kell létrehoznia, hogy a döntését visszaküldje a vezénylőnek.

Hozzon létre egy új modellt a kulcsszóargumentumok bemeneti adatainak elemzésével és érvényesítésével.

[ValidationError][pydantic_core. ValidationError] ha a bemeneti adatok nem érvényesíthetők érvényes modell létrehozásához.

a self explicit módon csak pozícióban van, hogy lehetővé tegye az önneveket mezőnévként.

Message

A munkafolyamat üzenetét képviselő osztály.

OrchestrationState

Egyesített állapottároló a vezénylési ellenőrzőpontokhoz.

Ez az adatosztály mind a három csoportos csevegési mintában szabványosítja az ellenőrzőpont-szerializálást, és lehetővé teszi a mintaspecifikus bővítmények metaadatokon keresztüli használatát.

A közös attribútumok a közös vezényléssel kapcsolatos aggodalmakat (feladat, beszélgetés, kerek nyomon követés) fedik le. A mintaspecifikus állapot a metaadat-diktálásba kerül.

RequestInfoEvent

Az esemény akkor aktiválódik, amikor egy munkafolyamat-végrehajtó külső információkat kér.

Inicializálja a kéreleminformációs eseményt.

RequestInfoInterceptor

Belső végrehajtó, amely felfüggeszti az emberi bemenet munkafolyamatát az ügynök futtatása előtt.

Ezt a végrehajtót a szerkesztők szúrják be a munkafolyamat-diagramba .with_request_info() meghívásakor. Elfogja az AgentExecutorRequest üzeneteket, mielőtt az ügynök fut, és szünetelteti a munkafolyamatot ctx.request_info() egy AgentInputRequest használatával.

Válasz érkezésekor a válaszkezelő felhasználói üzenetként injektálja a bemenetet a beszélgetésbe, és továbbítja a kérést az ügynöknek.

Az opcionális agent_filter paraméter lehetővé teszi annak korlátozását, hogy mely ügynökök váltják ki a szünetet. Ha a célügynök azonosítója nem szerepel a szűrőkészletben, a rendszer szüneteltetés nélkül továbbítja a kérést.

Inicializálja a kérelemadatok elfogó végrehajtójának inicializálását.

Role

Egy üzenet kívánt célját ismerteti egy csevegési interakción belül.

Tulajdonságok: RENDSZER: Az AI-rendszer viselkedését utasító vagy beállító szerepkör. FELHASZNÁLÓ: Az a szerepkör, amely felhasználói bemenetet biztosít a csevegési műveletekhez. ASSISTANT: Az a szerepkör, amely választ ad a rendszer által utasított, felhasználó által megkérdezett bemenetre. ESZKÖZ: A szerepkör, amely további információkat és hivatkozásokat biztosít az eszközhasználati kérelmekre adott válaszként.

Szerepkör inicializálása értékkel.

Runner

Egy osztály, amely futtat egy munkafolyamatot a Pregel szuperstepsben.

Inicializálja a futót élekkel, megosztott állapottal és környezettel.

RunnerContext

Protokoll a futó által használt végrehajtási környezethez.

Egyetlen környezet, amely támogatja az üzenetküldést, az eseményeket és az opcionális ellenőrzőpont-készítést. Ha az ellenőrzőpont-tároló nincs konfigurálva, az ellenőrzőpont-metódusok felmerülhetnek.

SequentialBuilder

Magas szintű szerkesztő a megosztott környezettel rendelkező szekvenciális ügynök-/végrehajtói munkafolyamatokhoz.

  • résztvevők([...]) Elfogadja az AgentProtocol (ajánlott) vagy a Végrehajtó példányok listáját

  • register_participants([...]) elfogadja az AgentProtocol gyárainak listáját (ajánlott)

    vagy Végrehajtó gyárak

  • A végrehajtóknak meg kell határozniuk egy listát használó kezelőt[ChatMessage] és ki kell küldeni a listát[ChatMessage]

  • A munkafolyamat sorrendbe rendezi a résztvevőket, és átad egy listát[ChatMessage] a láncon

  • Az ügynökök hozzáfűzik a segédüzeneteiket a beszélgetéshez

  • Az egyéni végrehajtók átalakíthatnak/összegzhetnek és visszaadhatnak egy listát[ChatMessage]

  • A végső kimenet az utolsó résztvevő által készített beszélgetés

Használat:


   from agent_framework import SequentialBuilder

   # With agent instances
   workflow = SequentialBuilder().participants([agent1, agent2, summarizer_exec]).build()

   # With agent factories
   workflow = (
       SequentialBuilder().register_participants([create_agent1, create_agent2, create_summarizer_exec]).build()
   )

   # Enable checkpoint persistence
   workflow = SequentialBuilder().participants([agent1, agent2]).with_checkpointing(storage).build()

   # Enable request info for mid-workflow feedback (pauses before each agent)
   workflow = SequentialBuilder().participants([agent1, agent2]).with_request_info().build()

   # Enable request info only for specific agents
   workflow = (
       SequentialBuilder()
       .participants([agent1, agent2, agent3])
       .with_request_info(agents=[agent2])  # Only pause before agent2
       .build()
   )
SharedState

Egy munkafolyamat megosztott állapotának kezelésére szolgáló osztály.

A SharedState szálbiztos hozzáférést biztosít azokhoz a munkafolyamat-állapotadatokhoz, amelyeket a munkafolyamat végrehajtása során meg kell osztani a végrehajtók között.

Fenntartott kulcsok: A következő kulcsok a belső keretrendszer használatára vannak fenntartva, és nem módosíthatók felhasználói kóddal:

  • _executor_state: A végrehajtó állapotának tárolására szolgáló ellenőrzőpontok (a Runner által felügyelt)

Figyelmeztetés

Ne használjon aláhúzással (_) kezdődő kulcsokat, mert azok fenntartottak lehetnek

belső keretrendszerműveleteket.

Inicializálja a megosztott állapotot.

SingleEdgeGroup

Kényelmes burkoló egy magányos élhez, amely egységesen tartja a csoportos API-t.

Hozzon létre egy egy az egyhez élcsoportot két végrehajtó között.

StandardMagenticManager

Standard Magentic manager, amely valós LLM-hívásokat hajt végre egy ChatAgenten keresztül.

A kezelő az eredeti Magentic One vezénylést tükröző utasításokat hoz létre:

  • Tények összegyűjtése
  • Terv létrehozása
  • Folyamatnapló a JSON-ban
  • Tények frissítése és frissítés megtervezve az alaphelyzetbe állításhoz
  • Végső válaszszintézis

Inicializálja a Standard Magentic Managert.

SubWorkflowRequestMessage

Egy al-munkafolyamatból a szülő munkafolyamat egyik végrehajtójának küldött üzenet, amely információkat kér.

Ez az üzenet körbefuttat egy, a végrehajtó által az al-munkafolyamatban kibocsátott RequestInfoEvent üzenetet.

SubWorkflowResponseMessage

A workflowExecutoron keresztül egy szülő-munkafolyamatból egy al-munkafolyamatba küldött üzenet a kért információk megadásához.

Ez az üzenet körbefuttatja a válaszadatokat az al-munkafolyamat végrehajtója által kibocsátott eredeti RequestInfoEvent azonosítóval együtt.

SuperStepCompletedEvent

Egy szupersztep végének eseménye aktiválódik.

Inicializálja a szuperstep eseményt.

SuperStepStartedEvent

Egy szupersztep indításakor aktiválódott esemény.

Inicializálja a szuperstep eseményt.

SwitchCaseEdgeGroup

Ventilátoros változat, amely egy hagyományos kapcsoló-/esetvezérlési folyamatot utánoz.

Minden eset megvizsgálja az üzenet hasznos adatait, és eldönti, hogy kezelnie kell-e az üzenetet. Pontosan egy eset vagy az alapértelmezett ág visszaad egy célt futásidőben, megőrizve az egyszeri küldés szemantikáját.

Kapcsoló-/eset-útválasztási struktúra konfigurálása egyetlen forrásvégzőhöz.

SwitchCaseEdgeGroupCase

Egyetlen feltételes ág tartós leírása kapcsolós esetben.

A futtatókörnyezeti esetobjektumtól eltérően ez a szerialálható változat csak a célazonosítót és a predikátum leíró nevét tárolja. Ha a mögöttes hívható nem érhető el a deszerializálás során, egy olyan proxyhelyőrzőt helyettesítünk, amely hangosan meghiúsul, biztosítva, hogy a hiányzó függőség azonnal látható legyen.

Egy feltételes esetág útválasztási metaadatainak rögzítése.

SwitchCaseEdgeGroupDefault

Egy kapcsoló-esetcsoport tartalék ágának tartósan megőrizhető leírója.

Az alapértelmezett ág garantáltan létezik, és akkor lesz meghívva, ha minden más eset predikátuma nem felel meg a hasznos adatoknak.

Mutasson az alapértelmezett ágra a megadott végrehajtóazonosító felé.

TextContent

Szöveges tartalmat jelöl egy csevegésben.

Inicializál egy TextContent-példányt.

TextReasoningContent

Szöveges érvelési tartalmat jelöl egy csevegésben.

Megjegyzés: Ez az osztály és a TextContent felületesen hasonlóak, de eltérőek.

Inicializál egy TextReasoningContent-példányt.

TextSpanRegion

Jegyzetekkel ellátott szövegterületet jelöl.

TextSpanRegion inicializálása.

ToolMode

Meghatározza, hogy a csevegőkérelemben milyen eszközöket és eszközöket használnak.

Az ToolMode inicializálása.

ToolProtocol

Általános eszközt jelöl.

Ez a protokoll határozza meg azt a felületet, amelyet minden eszköznek implementálnia kell ahhoz, hogy kompatibilis legyen az ügynök-keretrendszerrel. Különböző eszközosztályok, például a HostedMCPTool, a HostedWebSearchTool és az AIFunction által implementálva. Az AIFunctiont általában a ai_function dekoratőr hozza létre.

Mivel minden összekötőnek másképp kell elemeznie az eszközöket, a felhasználók átadhatnak egy diktálást egy szolgáltatásspecifikus eszköz megadásához, ha nincs elérhető absztrakció.

TypeCompatibilityError

A csatlakoztatott végrehajtók közötti típuskompatibilitás észlelésekor kivétel keletkezik.

UriContent

URI-tartalmat jelöl.

Fontos

Ez egy URI által azonosított tartalomhoz, például képhez vagy fájlhoz használatos.

A (bináris) adat-URI-k esetében használja inkább a DataContentet.

Inicializál egy UriContent-példányt.

Megjegyzés: Ez egy URI által azonosított tartalomhoz, például képhez vagy fájlhoz használatos. A (bináris) adat-URI-k esetében használja inkább a DataContentet .

UsageContent

A csevegési kérelemhez és válaszhoz társított használati adatokat jelöli.

Egy UsageContent-példány inicializálása.

UsageDetails

A kérelem/válasz használati adatait adja meg.

Inicializálja a UsageDetails-példányt.

Workflow

Gráfalapú végrehajtási motor, amely a csatlakoztatott végrehajtókat vezényli.

Áttekintés

A munkafolyamat egy Pregel-szerű modellel futtatja az élcsoportokon keresztül csatlakozó végrehajtók irányított gráfját, amely szupersztepsben fut, amíg a gráf tétlenné nem válik. A munkafolyamatok a WorkflowBuilder osztály használatával jönnek létre – ne hozza létre közvetlenül ezt az osztályt.

Végrehajtási modell

A végrehajtók szinkronizált szuperstepsben futnak, ahol az egyes végrehajtók:

  • Akkor lesz meghívva, ha üzeneteket fogad a csatlakoztatott peremhálózati csoportoktól
  • Üzeneteket küldhet az alsóbb rétegbeli végrehajtóknak ctx.send_message()
  • Munkafolyamatszintű kimeneteket hozhat létre ctx.yield_output()
  • Egyéni eseményeket bocsáthat ki ctx.add_event()

A végrehajtók közötti üzenetek minden szuperstep végén érkeznek, és nem láthatók az eseménystreamben. Csak a munkafolyamat-szintű események (kimenetek, egyéni események) és állapotesemények figyelhetők meg a hívók számára.

Bemeneti/kimeneti típusok

A munkafolyamat-típusokat futásidőben észleli a rendszer az alábbiak vizsgálatával:

  • Bemeneti típusok: A kezdő végrehajtó bemeneti típusai
  • Kimeneti típusok: Az összes végrehajtó munkafolyamat-kimenettípusának egyesítője Ezeket a input_types és output_types tulajdonságokon keresztül érheti el.

Végrehajtási módszerek

A munkafolyamat két elsődleges végrehajtási API-t biztosít, amelyek mindegyike több forgatókönyvet támogat:

  • run(): Végrehajtás a befejezésig, a WorkflowRunResult függvényt adja vissza az összes eseményhez

  • run_stream(): Aszinkron generátort ad vissza, amely eseményeket eredményez az események bekövetkezésekor

Mindkét módszer támogatja:

  • Kezdeti munkafolyamat-futtatások: Üzenetparaméter megadása
  • Ellenőrzőpont helyreállítása: Adja meg checkpoint_id (és opcionálisan checkpoint_storage)
  • HIL-folytatás: Adja meg a kérésinfoExecutor-kérelmek utáni folytatáshoz szükséges válaszokat
  • Futtatókörnyezeti ellenőrzőpont-készítés: Adjon meg checkpoint_storage a futtatás ellenőrzőpont-beállításának engedélyezéséhez/felülbírálásához

Állapotkezelés

A munkafolyamat-példányok állapotokat és állapotokat tartalmaznak a futtatandó és run_stream hívások között. Több független futtatás végrehajtásához hozzon létre külön munkafolyamat-példányokat a WorkflowBuilder használatával.

Külső bemeneti kérések

A munkafolyamat végrehajtói külső bemenetet kérhetnek ctx.request_info():

  1. A végrehajtó meghívja ctx.request_info() a bemenet kérését
  2. A végrehajtó implementálja a response_handler() műveletet a válasz feldolgozásához
  3. A kérések RequestInfoEvent-példányként lesznek kibocsátva az eseménystreamben
  4. A munkafolyamat IDLE_WITH_PENDING_REQUESTS állapotba lép
  5. A hívó kezeli a kéréseket, és válaszokat ad a send_responses vagy send_responses_streaming metódusokkal
  6. A rendszer átirányítja a válaszokat a kérelmező végrehajtókhoz, és a rendszer meghívja a válaszkezelőket

Ellenőrző pontok használata

Az ellenőrzőpont-beállítás konfigurálható a buildeléskor vagy a futtatókörnyezetben:

Build-time (via WorkflowBuilder): workflow = WorkflowBuilder().with_checkpointing(storage).build()

Futtatókörnyezet (futtatási/run_stream paraméterekkel): result = await workflow.run(message, checkpoint_storage=runtime_storage)

Ha engedélyezve van, az ellenőrzőpontok az egyes szupersztepek végén jönnek létre, rögzítve a következőt:

  • Végrehajtói állapotok
  • Átvitt üzenetek
  • A megosztott állapotú munkafolyamatok szüneteltethetők és folytathatók a folyamat újraindítása során a CheckPoint Storage használatával.

Kompozíció

A munkafolyamatok a WorkflowExecutor használatával ágyazhatók be, amely végrehajtóként körbefuttat egy gyermek munkafolyamatot. A beágyazott munkafolyamat bemeneti/kimeneti típusai a WorkflowExecutor típusának részévé válnak. Meghíváskor a WorkflowExecutor futtatja a beágyazott munkafolyamatot a kimenetek befejezéséhez és folyamatához.

Inicializálja a munkafolyamatot éllistával.

WorkflowAgent

Egy ügynök alosztály, amely körbefuttat egy munkafolyamatot, és ügynökként teszi elérhetővé.

Inicializálja a WorkflowAgentet.

WorkflowBuilder

A munkafolyamatok létrehozásához használható szerkesztőosztály.

Ez az osztály egy folyékony API-t biztosít a munkafolyamat-gráfok meghatározásához a végrehajtók élekhez való csatlakoztatásával és a végrehajtási paraméterek konfigurálásával. Nem módosítható build példány létrehozására irányuló hívásWorkflow.

Inicializálja a WorkflowBuildert üres éllistával, és nincs kezdő végrehajtó.

WorkflowCheckpoint

A munkafolyamat állapotának teljes ellenőrzőpontja.

Az ellenőrzőpontok rögzítik egy munkafolyamat teljes végrehajtási állapotát egy adott ponton, lehetővé téve a munkafolyamatok szüneteltetését és folytatását.

Megjegyzés:

A shared_state diktálás tartalmazhat a keretrendszer által felügyelt fenntartott kulcsokat.

A fenntartott kulcsokkal kapcsolatos részletekért tekintse meg a SharedState osztály dokumentációját.

WorkflowCheckpointSummary

Munkafolyamat-ellenőrzőpont emberi olvasásra alkalmas összefoglalása.

WorkflowContext

Végrehajtási környezet, amely lehetővé teszi a végrehajtók számára a munkafolyamatok és más végrehajtók közötti interakciót.

Áttekintés

A WorkflowContext egy szabályozott felületet biztosít a végrehajtók számára az üzenetek küldéséhez, a kimenetek hozamához, az állapot kezeléséhez és a szélesebb körű munkafolyamat-ökoszisztémával való interakcióhoz. Általános paraméterekkel kényszeríti ki a típusbiztonságot, miközben megakadályozza a belső futtatókörnyezeti összetevőkhöz való közvetlen hozzáférést.

Típusparaméterek

A környezet paraméterezve van a típusbiztonság különböző műveletekhez való kényszerítéséhez:

WorkflowContext (paraméterek nélkül)

Olyan végrehajtók esetében, amelyek csak mellékhatásokat hajtanak végre üzenetek küldése vagy kimenetek kibocsátása nélkül:


   async def log_handler(message: str, ctx: WorkflowContext) -> None:
       print(f"Received: {message}")  # Only side effects

WorkflowContext[T_Out]

Lehetővé teszi T_Out típusú üzenetek küldését más végrehajtóknak:


   async def processor(message: str, ctx: WorkflowContext[int]) -> None:
       result = len(message)
       await ctx.send_message(result)  # Send int to downstream executors

WorkflowContext[T_Out, T_W_Out]

Lehetővé teszi az üzenetek küldését (T_Out) és a munkafolyamat kimenetének (T_W_Out) adását:


   async def dual_output(message: str, ctx: WorkflowContext[int, str]) -> None:
       await ctx.send_message(42)  # Send int message
       await ctx.yield_output("complete")  # Yield str workflow output

Egyesítő típusok

Az egyesítő jelöléssel több típus is megadható:


   async def flexible(message: str, ctx: WorkflowContext[int | str, bool | dict]) -> None:
       await ctx.send_message("text")  # or send 42
       await ctx.yield_output(True)  # or yield {"status": "done"}

Inicializálja a végrehajtó környezetet a megadott munkafolyamat-környezettel.

WorkflowErrorDetails

Strukturált hibainformációk a hibaesemények/eredmények feltárásához.

WorkflowEvent

Munkafolyamat-események alaposztálya.

Inicializálja a munkafolyamat-eseményt opcionális adatokkal.

WorkflowExecutor

Egy munkafolyamatot körbefuttató végrehajtó, amely lehetővé teszi a hierarchikus munkafolyamat-összetételt.

Áttekintés

A WorkflowExecutor egyetlen végrehajtóként viselkedik egy szülő munkafolyamaton belül, így lehetővé teszi a beágyazott munkafolyamat-architektúrákat. Kezeli az al-munkafolyamat-végrehajtás teljes életciklusát, beleértve az eseményfeldolgozást, a kimeneti továbbítást, valamint a szülő- és gyermek-munkafolyamatok közötti kérés-/válaszkoordinációt.

Végrehajtási modell

Meghíváskor a WorkflowExecutor:

  1. A becsomagolt munkafolyamat indítása a bemeneti üzenettel
  2. Az al-munkafolyamatot a befejezésig vagy addig futtatja, amíg külső bemenetre nem van szüksége
  3. Az al-munkafolyamat teljes eseményfolyamának feldolgozása a végrehajtás után
  4. A kimeneteket üzenetekként továbbítja a szülő munkafolyamatnak
  5. A külső kéréseket úgy kezeli, hogy a szülő munkafolyamathoz irányítja őket
  6. Válaszok halmozása és a munkafolyamat-részvégrehajtás folytatása

Eseményfolyam feldolgozása

A WorkflowExecutor a munkafolyamat-alfolyamat befejezése után dolgozza fel az eseményeket:

Kimeneti továbbítás

A rendszer automatikusan továbbítja az al-munkafolyamat összes kimenetét a szülőnek:

Ha allow_direct_output hamis (alapértelmezett):


   # An executor in the sub-workflow yields outputs
   await ctx.yield_output("sub-workflow result")

   # WorkflowExecutor forwards to parent via ctx.send_message()
   # Parent receives the output as a regular message

Ha allow_direct_output igaz:

Kérelem-/válaszkoordináció

Ha az al-munkafolyamatoknak külső információra van szükségük:


   # An executor in the sub-workflow makes request
   request = MyDataRequest(query="user info")

   # WorkflowExecutor captures RequestInfoEvent and wraps it in a SubWorkflowRequestMessage
   # then send it to the receiving executor in parent workflow. The executor in parent workflow
   # can handle the request locally or forward it to an external source.
   # The WorkflowExecutor tracks the pending request, and implements a response handler.
   # When the response is received, it executes the response handler to accumulate responses
   # and resume the sub-workflow when all expected responses are received.
   # The response handler expects a SubWorkflowResponseMessage wrapping the response data.

Állapotkezelés

A WorkflowExecutor a végrehajtási állapotot a kérelmek/válaszok ciklusai között tartja karban:

  • Nyomon követi request_id függőben lévő kéréseit
  • A válaszok halmozása az összes várt válasz beérkezéséig
  • Folytatja az al-munkafolyamat végrehajtását teljes válaszköteggel
  • Egyidejű végrehajtásokat és több függőben lévő kérést kezel

Gépelje be a rendszerintegrációt

A WorkflowExecutor a becsomagolt munkafolyamatból örökli a típusadékot:

Bemeneti típusok

Megfelel a burkolt munkafolyamat kezdő végrehajtójának bemeneti típusainak:


   # If sub-workflow accepts str, WorkflowExecutor accepts str
   workflow_executor = WorkflowExecutor(my_workflow, id="wrapper")
   assert workflow_executor.input_types == my_workflow.input_types

Kimeneti típusok

A munkafolyamat-részkimenetek és a kéréskoordinációs típusok kombinálása:


   # Includes all sub-workflow output types
   # Plus SubWorkflowRequestMessage if sub-workflow can make requests
   output_types = workflow.output_types + [SubWorkflowRequestMessage]  # if applicable

Hibakezelés

A WorkflowExecutor propagálja az al-munkafolyamat hibáit:

  • A WorkflowFailedEvent rögzítése al-munkafolyamatból
  • Konvertálás WorkflowErrorEventre szülőkörnyezetben
  • Részletes hibainformációkat tartalmaz, beleértve a munkafolyamat-azonosítót is

Egyidejű végrehajtás támogatása

A WorkflowExecutor teljes mértékben támogatja az egyidejű munkafolyamat-végrehajtásokat:

Per-Execution állapotelkülönítés

Minden al-munkafolyamat-hívás egy elkülönített ExecutionContext-et hoz létre:


   # Multiple concurrent invocations are supported
   workflow_executor = WorkflowExecutor(my_workflow, id="concurrent_executor")

   # Each invocation gets its own execution context
   # Execution 1: processes input_1 independently
   # Execution 2: processes input_2 independently
   # No state interference between executions

Kérelem-/válaszkoordináció

A válaszok megfelelően vannak átirányítva az eredeti végrehajtáshoz:

  • Minden végrehajtás nyomon követi a saját függőben lévő kéréseit és várt válaszait
  • A kérelmek végrehajtási leképezése biztosítja, hogy a válaszok a megfelelő al-munkafolyamatot érjék el
  • A válaszfelhalmozódás végrehajtásonként külön van elkülönítve
  • Automatikus törlés a végrehajtás befejezésekor

Memóriakezelés

  • Korlátlan egyidejű végrehajtás támogatott
  • Minden végrehajtás egyedi UUID-alapú azonosítással rendelkezik
  • Befejezett végrehajtási környezetek törlése
  • Szálbiztos állapotkezelés egyidejű hozzáféréshez

Fontos szempontok

Megosztott munkafolyamat-példány: Minden egyidejű végrehajtás ugyanazt a mögöttes munkafolyamat-példányt használja. A megfelelő elkülönítés érdekében győződjön meg arról, hogy a burkolt munkafolyamat és annak végrehajtói állapot nélküliek.


   # Avoid: Stateful executor with instance variables
   class StatefulExecutor(Executor):
       def __init__(self):
           super().__init__(id="stateful")
           self.data = []  # This will be shared across concurrent executions!

Integráció szülő-munkafolyamatokkal

A szülő munkafolyamatok képesek elfogni az al-munkafolyamat-kérelmeket:

Végrehajtási megjegyzések

  • Az al-munkafolyamatok az eredmények feldolgozása előtt befejeződnek
  • Az eseményfeldolgozás atomi – a rendszer minden kimenetet továbbít a kérések előtt
  • A válaszfelhalmozódás biztosítja, hogy az al-munkafolyamatok teljes válaszkötegeket kapjanak
  • A végrehajtási állapot megmarad a külső kérések utáni megfelelő újrakezdéshez
  • Az egyidejű végrehajtások teljesen elszigeteltek, és nem zavarják egymást

Inicializálja a WorkflowExecutort.

WorkflowFailedEvent

Beépített életciklus-esemény jelenik meg, amikor egy munkafolyamat-futtatás hiba miatt leáll.

WorkflowOutputEvent

Az esemény akkor aktiválódik, amikor egy munkafolyamat-végrehajtó kimenetet ad.

Inicializálja a munkafolyamat kimeneti eseményét.

WorkflowRunResult

Tároló a nem streamelt munkafolyamat végrehajtása során létrehozott eseményekhez.

Áttekintés

Egy munkafolyamat-futtatás teljes végrehajtási eredményeit jelöli, amely az elejétől az üresjárati állapotig generált összes eseményt tartalmazza. A munkafolyamatok növekményes kimeneteket hoznak létre ctx.yield_output() hívásokon keresztül a végrehajtás során.

Eseménystruktúra

Megőrzi az adatsík és a vezérlősík eseményeinek elkülönítését:

  • Adatsíkos események: Végrehajtói meghívások, befejezések, kimenetek és kérések (a fő listában)
  • Vezérlősík eseményei: Status_timeline() metódussal elérhető állapotsor

Főbb metódusok

  • get_outputs(): A munkafolyamat összes kimenetének kinyerése a végrehajtásból
  • get_request_info_events(): A végrehajtás során küldött külső bemeneti kérések lekérése
  • get_final_state(): A munkafolyamat végső állapotának lekérése (TÉTLEN, IDLE_WITH_PENDING_REQUESTS stb.)
  • status_timeline(): A teljes állapotesemény előzményeinek elérése
WorkflowStartedEvent

A munkafolyamat futtatásakor kibocsátott beépített életciklus-esemény.

Inicializálja a munkafolyamat-eseményt opcionális adatokkal.

WorkflowStatusEvent

A munkafolyamat-futtatási állapotváltásokhoz kibocsátott beépített életciklus-esemény.

Inicializálja a munkafolyamat állapoteseményét egy új állapottal és opcionális adatokkal.

WorkflowValidationError

A munkafolyamat-érvényesítési hibák alapkivétele.

WorkflowViz

Osztály munkafolyamatok graphviz és Hableány használatával történő vizualizációjához.

Inicializálja a WorkflowVizet egy munkafolyamattal.

Enums

MagenticHumanInterventionDecision

Döntési lehetőségek az emberi beavatkozási válaszokhoz.

MagenticHumanInterventionKind

Milyen emberi beavatkozást kérnek.

ValidationTypeEnum

Munkafolyamat-érvényesítési típusok számbavétele.

WorkflowEventSource

Azonosítja, hogy egy munkafolyamat-esemény a keretrendszerből vagy egy végrehajtóból származik-e.

Használja a KERETRENDSZERt a beépített vezénylési útvonalak által kibocsátott eseményekhez – még akkor is, ha az őket generáló kód futó modulokban él – és a VÉGREHAJTÓt a fejlesztők által biztosított végrehajtói implementációk által felszínre helyezett eseményekhez.

WorkflowRunState

Munkafolyamat-végrehajtás futtatási szintű állapota.

Szemantika:

  • ELINDÍTVA: A futtatás elindult, és létrejött a munkafolyamat-környezet. Ez egy kezdeti állapot, mielőtt bármilyen értelmes munkát végeznénk. Ebben a kódbázisban kibocsátunk egy dedikált WorkflowStartedEvent telemetria-t, és általában közvetlenül IN_PROGRESS ússzuk meg az állapotot. A felhasználók továbbra is támaszkodhatnak a STARTED-ra az olyan állapotgépek esetében, amelyeknek explicit munka előtti fázisra van szükségük.

  • IN_PROGRESS: A munkafolyamat aktívan fut (például a kezdeti üzenet a kezdő végrehajtóhoz lett kézbesítve, vagy egy szuperstep fut). Ez az állapot a futtatás elején lesz kibocsátva, és a futtatás előrehaladása során más állapotok is követhetők.

  • IN_PROGRESS_PENDING_REQUESTS: Aktív végrehajtás, miközben egy vagy több információkérési művelet ki van kapcsolva. Előfordulhat, hogy a kérések repülés közben is ütemezve lesznek.

  • TÉTLEN: A munkafolyamat nem igényel függőben lévő kéréseket, és nincs több teendője. Ez a normál terminálállapot azokhoz a munkafolyamatokhoz, amelyek befejezték a végrehajtást, és valószínűleg kimeneteket hoztak létre az út során.

  • IDLE_WITH_PENDING_REQUESTS: A munkafolyamat szüneteltetve van a külső bemenetre várva (például egy RequestInfoEvent-et küldött ki). Ez egy nem terminál állapot; a munkafolyamat a válaszok megadásakor újraindulhat.

  • SIKERTELEN: A terminál állapota hibát jelez. WorkflowFailedEvent kíséri strukturált hibaadatokkal.

  • MEGSZAKÍTVA: A futtatást jelző terminálállapotot egy hívó vagy vezénylő megszakította. Jelenleg nem az alapértelmezett futó útvonalak bocsátják ki, hanem a lemondást támogató integrátorok/vezénylők számára.

Functions

agent_middleware

Dekorátor egy függvény ügynök köztes szoftverként való megjelöléséhez.

Ez a dekorátor explicit módon azonosít egy függvényt ügynök köztes szoftverként, amely AgentRunContext objektumokat dolgoz fel.

agent_middleware(func: Callable[[AgentRunContext, Callable[[AgentRunContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[AgentRunContext, Callable[[AgentRunContext], Awaitable[None]]], Awaitable[None]]

Paraméterek

Név Leírás
func
Szükséges

Az ügynök köztes szoftverként megjelölendő köztes szoftverfüggvény.

Visszatér

Típus Leírás

Ugyanaz a függvény az ügynök köztes szoftverjelölőjével.

Példák


   from agent_framework import agent_middleware, AgentRunContext, ChatAgent


   @agent_middleware
   async def logging_middleware(context: AgentRunContext, next):
       print(f"Before: {context.agent.name}")
       await next(context)
       print(f"After: {context.result}")


   # Use with an agent
   agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)

ai_function

Díszíthet egy függvényt, hogy AIFunction-et alakítson ki, amely átadható a modelleknek, és automatikusan végrehajthatóvá válik.

Ez a dekorátor létrehoz egy Pydantic-modellt a függvény aláírásából, amely a függvénynek átadott argumentumok ellenőrzésére és a függvény paramétereinek JSON-sémájának létrehozására szolgál.

Ha leírásokat szeretne hozzáadni a paraméterekhez, használja a Annotated típust typing egy karakterlánc leírásával második argumentumként. A Pydantic osztályát speciálisabb konfigurációhoz is használhatja Field .

Megjegyzés:

Ha approval_mode "always_require" értékre van állítva, a függvény nem lesz végrehajtva

a kifejezett jóváhagyás megadásáig ez csak az automatikus meghívási folyamatra vonatkozik.

Azt is fontos megjegyezni, hogy ha a modell több függvényhívást ad vissza, néhányat, amelyek jóváhagyást igényelnek

és mások, akik nem, akkor kérni fogja jóváhagyást mindannyiuk számára.

ai_function(func: Callable[[...], ReturnT | Awaitable[ReturnT]] | None = None, *, name: str | None = None, description: str | None = None, approval_mode: Literal['always_require', 'never_require'] | None = None, max_invocations: int | None = None, max_invocation_exceptions: int | None = None, additional_properties: dict[str, Any] | None = None) -> AIFunction[Any, ReturnT] | Callable[[Callable[[...], ReturnT | Awaitable[ReturnT]]], AIFunction[Any, ReturnT]]

Paraméterek

Név Leírás
func
Callable[[...], <xref:agent_framework._tools.ReturnT> | Awaitable[<xref:agent_framework._tools.ReturnT>]] | None

A díszítendő funkció.

Alapértelmezett érték: None
name
Szükséges
str | None
description
Szükséges
str | None
approval_mode
Szükséges
Literal['always_require', 'never_require'] | None
max_invocations
Szükséges
int | None
max_invocation_exceptions
Szükséges
int | None
additional_properties
Szükséges

Keyword-Only paraméterek

Név Leírás
name

A függvény neve. Ha nincs megadva, a függvény attribútuma __name__ lesz használva.

Alapértelmezett érték: None
description

A függvény leírása. Ha nincs megadva, a függvény dokumentációja lesz használva.

Alapértelmezett érték: None
approval_mode

Az eszköz futtatásához jóváhagyás szükséges-e. Alapértelmezés szerint nincs szükség jóváhagyásra.

Alapértelmezett érték: None
max_invocations

A függvény meghívásának maximális száma. Ha nincs, akkor nincs korlátozás, legalább 1-nek kell lennie.

Alapértelmezett érték: None
max_invocation_exceptions

A meghívások során engedélyezett kivételek maximális száma. Ha nincs, akkor nincs korlátozás, legalább 1-nek kell lennie.

Alapértelmezett érték: None
additional_properties

További beállítási tulajdonságok a függvényen.

Alapértelmezett érték: None

Visszatér

Típus Leírás
AIFunction[Any, <xref:agent_framework._tools.ReturnT>] | Callable[[Callable[[…], <xref:agent_framework._tools.ReturnT> | Awaitable[<xref:agent_framework._tools.ReturnT>]]], AIFunction[Any, <xref:agent_framework._tools.ReturnT>]]

Példák


   from agent_framework import ai_function
   from typing import Annotated


   @ai_function
   def ai_function_example(
       arg1: Annotated[str, "The first argument"],
       arg2: Annotated[int, "The second argument"],
   ) -> str:
       # An example function that takes two arguments and returns a string.
       return f"arg1: {arg1}, arg2: {arg2}"


   # the same function but with approval required to run
   @ai_function(approval_mode="always_require")
   def ai_function_example(
       arg1: Annotated[str, "The first argument"],
       arg2: Annotated[int, "The second argument"],
   ) -> str:
       # An example function that takes two arguments and returns a string.
       return f"arg1: {arg1}, arg2: {arg2}"


   # With custom name and description
   @ai_function(name="custom_weather", description="Custom weather function")
   def another_weather_func(location: str) -> str:
       return f"Weather in {location}"


   # Async functions are also supported
   @ai_function
   async def async_get_weather(location: str) -> str:
       '''Get weather asynchronously.'''
       # Simulate async operation
       return f"Weather in {location}"

chat_middleware

A dekorátor egy függvényt csevegőközvetítőként jelöl meg.

Ez a dekorátor explicit módon azonosít egy függvényt csevegőközvetítőként, amely ChatContext objektumokat dolgoz fel.

chat_middleware(func: Callable[[ChatContext, Callable[[ChatContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[ChatContext, Callable[[ChatContext], Awaitable[None]]], Awaitable[None]]

Paraméterek

Név Leírás
func
Szükséges

A köztes szoftver függvény, amely csevegőközvetíteni kívánt szoftverként van megjelölve.

Visszatér

Típus Leírás

Ugyanaz a függvény csevegési köztes szoftverjelölővel.

Példák


   from agent_framework import chat_middleware, ChatContext, ChatAgent


   @chat_middleware
   async def logging_middleware(context: ChatContext, next):
       print(f"Messages: {len(context.messages)}")
       await next(context)
       print(f"Response: {context.result}")


   # Use with an agent
   agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)

create_edge_runner

Factory függvény a megfelelő élfuttató létrehozásához egy élcsoporthoz.

create_edge_runner(edge_group: EdgeGroup, executors: dict[str, Executor]) -> EdgeRunner

Paraméterek

Név Leírás
edge_group
Szükséges
<xref:agent_framework._workflows._edge.EdgeGroup>

Az élcsoport, amely számára futót szeretne létrehozni.

executors
Szükséges

Végrehajtóazonosítók leképezése végrehajtópéldányokra.

Visszatér

Típus Leírás
<xref:agent_framework._workflows._edge_runner.EdgeRunner>

A megfelelő EdgeRunner-példány.

executor

Önálló függvényeket FunctionExecutor-példánysá konvertáló dekorátor.

A @executor dekorátor csak önálló modulszintű függvényekhez készült. Osztályalapú végrehajtók esetén használja a Végrehajtó alaposztályt a példány metódusaival @handler .

Támogatja a szinkron és az aszinkron függvényeket is. A szinkron függvényeket a rendszer egy szálkészletben hajtja végre, hogy elkerülje az eseményhurok blokkolását.

Fontos

Önálló függvényekhez (modulszintű vagy helyi függvényekhez) használható @executor

NE használja @executor a staticmethodclassmethod

Osztályalapú végrehajtók esetén az alosztály-végrehajtó és a példánymetóciók használata @handler

Használat:


   # Standalone async function (RECOMMENDED):
   @executor(id="upper_case")
   async def to_upper(text: str, ctx: WorkflowContext[str]):
       await ctx.send_message(text.upper())


   # Standalone sync function (runs in thread pool):
   @executor
   def process_data(data: str):
       return data.upper()


   # For class-based executors, use @handler instead:
   class MyExecutor(Executor):
       def __init__(self):
           super().__init__(id="my_executor")

       @handler
       async def process(self, data: str, ctx: WorkflowContext[str]):
           await ctx.send_message(data.upper())
executor(func: Callable[[...], Any] | None = None, *, id: str | None = None) -> Callable[[Callable[[...], Any]], FunctionExecutor] | FunctionExecutor

Paraméterek

Név Leírás
func
Callable[[...], Any] | None

A díszítendő függvény (zárójel nélkül használva)

Alapértelmezett érték: None
id
Szükséges
str | None

A végrehajtó opcionális egyéni azonosítója. Ha nincs, használja a függvény nevét.

Keyword-Only paraméterek

Név Leírás
id
Alapértelmezett érték: None

Visszatér

Típus Leírás

Egy FunctionExecutor-példány, amely munkafolyamatba kapcsolható.

Kivételek

Típus Leírás

Ha nem támogatott mintával vagy (nem támogatott mintával staticmethodclassmethod ) használják

function_middleware

Dekorátor a függvény köztes szoftverként való megjelöléséhez.

Ez a dekorátor explicit módon azonosítja a függvényeket függvényközvetítőként, amely a FunctionInvocationContext objektumokat dolgozza fel.

function_middleware(func: Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]

Paraméterek

Név Leírás
func
Szükséges

A köztes szoftver függvény, amely köztes szoftverként van megjelölve.

Visszatér

Típus Leírás

Ugyanaz a függvény a köztes szoftverjelölővel.

Példák


   from agent_framework import function_middleware, FunctionInvocationContext, ChatAgent


   @function_middleware
   async def logging_middleware(context: FunctionInvocationContext, next):
       print(f"Calling: {context.function.name}")
       await next(context)
       print(f"Result: {context.result}")


   # Use with an agent
   agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)

get_checkpoint_summary

get_checkpoint_summary(checkpoint: WorkflowCheckpoint) -> WorkflowCheckpointSummary

Paraméterek

Név Leírás
checkpoint
Szükséges

Visszatér

Típus Leírás

get_logger

Szerezze be a megadott nevű naplózót, amely alapértelmezés szerint a "agent_framework" lesz.

get_logger(name: str = 'agent_framework') -> Logger

Paraméterek

Név Leírás
name
str

A naplózó neve. Alapértelmezés szerint "agent_framework".

Alapértelmezett érték: "agent_framework"

Visszatér

Típus Leírás

A konfigurált naplózópéldány.

handler

A dekorátor regisztrál egy kezelőt egy végrehajtóhoz.

handler(func: Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]) -> Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]

Paraméterek

Név Leírás
func
Szükséges
Callable[[<xref:agent_framework._workflows._executor.ExecutorT>, Any, <xref:agent_framework._workflows._executor.ContextT>], Awaitable[Any]]

A díszítendő funkció. Paraméterek nélkül nem használható.

Visszatér

Típus Leírás
Callable[[<xref:agent_framework._workflows._executor.ExecutorT>, Any, <xref:agent_framework._workflows._executor.ContextT>], Awaitable[Any]]

A kitüntetett függvény kezelői metaadatokkal.

Példák

@handler async def handle_string(self, message: str, ctx: WorkflowContext[str]) –> Nincs:

...

@handler async def handle_data(self, message: dict, ctx: WorkflowContext[str | int]) –> Nincs:

...

prepare_function_call_results

Készítse elő a függvényhívás eredményeinek értékeit.

prepare_function_call_results(content: TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any | list[TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any]) -> str

Paraméterek

Név Leírás
content
Szükséges

Visszatér

Típus Leírás
str

prepend_agent_framework_to_user_agent

Az "ügynök-keretrendszer" elő van állítva a fejlécek User-Agent.

Ha a felhasználói ügynök telemetria le van tiltva a AGENT_FRAMEWORK_USER_AGENT_DISABLED környezeti változón keresztül, a User-Agent fejléc nem tartalmazza az ügynök-keretrendszer adatait. A rendszer a None átadásakor üres diktálásként vagy üres diktálásként küldi vissza.

prepend_agent_framework_to_user_agent(headers: dict[str, Any] | None = None) -> dict[str, Any]

Paraméterek

Név Leírás
headers

A meglévő fejlécszótár.

Alapértelmezett érték: None

Visszatér

Típus Leírás

Új diktálás a "User-Agent" beállítással "agent-framework-python/{version}" értékre, ha a fejlécek nincsek. A módosított fejlécek szótára az "agent-framework-python/{version}" elő van állítva a User-Agentre.

Példák


   from agent_framework import prepend_agent_framework_to_user_agent

   # Add agent-framework to new headers
   headers = prepend_agent_framework_to_user_agent()
   print(headers["User-Agent"])  # "agent-framework-python/0.1.0"

   # Prepend to existing headers
   existing = {"User-Agent": "my-app/1.0"}
   headers = prepend_agent_framework_to_user_agent(existing)
   print(headers["User-Agent"])  # "agent-framework-python/0.1.0 my-app/1.0"

response_handler

A dekoratőr regisztrál egy kezelőt a kérésekre adott válaszok kezeléséhez.

response_handler(func: Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]) -> Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]

Paraméterek

Név Leírás
func
Szükséges
Callable[[<xref:agent_framework._workflows._request_info_mixin.ExecutorT>, Any, Any, <xref:agent_framework._workflows._request_info_mixin.ContextT>], Awaitable[None]]

A díszítendő funkció.

Visszatér

Típus Leírás
Callable[[<xref:agent_framework._workflows._request_info_mixin.ExecutorT>, Any, Any, <xref:agent_framework._workflows._request_info_mixin.ContextT>], Awaitable[None]]

A kitüntetett függvény kezelői metaadatokkal.

Példák


   @handler
   async def run(self, message: int, context: WorkflowContext[str]) -> None:
       # Example of a handler that sends a request
       ...
       # Send a request with a `CustomRequest` payload and expect a `str` response.
       await context.request_info(CustomRequest(...), str)


   @response_handler
   async def handle_response(
       self,
       original_request: CustomRequest,
       response: str,
       context: WorkflowContext[str],
   ) -> None:
       # Example of a response handler for the above request
       ...


   @response_handler
   async def handle_response(
       self,
       original_request: CustomRequest,
       response: dict,
       context: WorkflowContext[int],
   ) -> None:
       # Example of a response handler for a request expecting a dict response
       ...

setup_logging

Az ügynök-keretrendszer naplózási konfigurációjának beállítása.

setup_logging() -> None

Visszatér

Típus Leírás

use_agent_middleware

Az osztály dekorátora, amely köztes szoftvertámogatást ad hozzá egy ügynökosztályhoz.

Ez a dekorátor minden ügynökosztályhoz hozzáadja a köztes szoftver funkcióit. Körbefuttatja a run() köztesszoftver-végrehajtást biztosító módszereket és run_stream() metódusokat.

A köztes szoftver végrehajtása bármikor megszakítható a context.terminate tulajdonság True (Igaz) értékre állításával. A beállítás után a folyamat leállítja a további köztes szoftver végrehajtását, amint a vezérlés visszatér a folyamathoz.

Megjegyzés:

Ez a dekorátor már alkalmazva van a beépített ügynökosztályokra. Csak használnia kell

akkor, ha egyéni ügynök-implementációkat hoz létre.

use_agent_middleware(agent_class: type[TAgent]) -> type[TAgent]

Paraméterek

Név Leírás
agent_class
Szükséges
type[<xref:TAgent>]

A köztes szoftvertámogatást hozzáadni kívánt ügynökosztály.

Visszatér

Típus Leírás
type[~<xref:TAgent>]

A módosított ügynökosztály köztes szoftvertámogatással.

Példák


   from agent_framework import use_agent_middleware


   @use_agent_middleware
   class CustomAgent:
       async def run(self, messages, **kwargs):
           # Agent implementation
           pass

       async def run_stream(self, messages, **kwargs):
           # Streaming implementation
           pass

use_chat_middleware

Az osztály dekorátora, amely köztes szoftvertámogatást ad hozzá egy csevegőügyfél-osztályhoz.

Ez a dekorátor köztes szoftverfunkciókat ad hozzá a csevegési ügyfélosztályokhoz. Körbefuttatja a get_response() köztesszoftver-végrehajtást biztosító módszereket és get_streaming_response() metódusokat.

Megjegyzés:

Ez a dekorátor már alkalmazva van a beépített csevegőügyfél-osztályokra. Csak használnia kell

egyéni csevegőügyfél-implementációk létrehozásakor.

use_chat_middleware(chat_client_class: type[TChatClient]) -> type[TChatClient]

Paraméterek

Név Leírás
chat_client_class
Szükséges
type[<xref:TChatClient>]

A köztes szoftvertámogatást hozzáadni kívánt csevegőügyfél-osztály.

Visszatér

Típus Leírás
type[~<xref:TChatClient>]

A módosított csevegőügyfél-osztály köztes szoftvertámogatással.

Példák


   from agent_framework import use_chat_middleware


   @use_chat_middleware
   class CustomChatClient:
       async def get_response(self, messages, **kwargs):
           # Chat client implementation
           pass

       async def get_streaming_response(self, messages, **kwargs):
           # Streaming implementation
           pass

use_function_invocation

Osztály dekorátor, amely lehetővé teszi az eszköz hívását egy csevegőügyfél számára.

Ez a dekorátor körbefuttatja a metódusokat és get_response a metódusokat, get_streaming_response hogy automatikusan kezelje a modellből érkező függvényhívásokat, végrehajtsa őket, és visszaadja az eredményeket a modellnek további feldolgozás céljából.

use_function_invocation(chat_client: type[TChatClient]) -> type[TChatClient]

Paraméterek

Név Leírás
chat_client
Szükséges
type[<xref:TChatClient>]

A díszítendő csevegőügyfél-osztály.

Visszatér

Típus Leírás
type[~<xref:TChatClient>]

A kitüntetett csevegőügyfél-osztály, amelyen engedélyezve van a függvényhívás.

Kivételek

Típus Leírás

Ha a csevegőügyfél nem rendelkezik a szükséges módszerekkel.

Példák


   from agent_framework import use_function_invocation, BaseChatClient


   @use_function_invocation
   class MyCustomClient(BaseChatClient):
       async def get_response(self, messages, **kwargs):
           # Implementation here
           pass

       async def get_streaming_response(self, messages, **kwargs):
           # Implementation here
           pass


   # The client now automatically handles function calls
   client = MyCustomClient()

validate_workflow_graph

A munkafolyamat-gráfok ellenőrzéséhez szükséges kényelmi függvény.

validate_workflow_graph(edge_groups: Sequence[EdgeGroup], executors: dict[str, Executor], start_executor: Executor) -> None

Paraméterek

Név Leírás
edge_groups
Szükséges
Sequence[<xref:agent_framework._workflows._edge.EdgeGroup>]

a munkafolyamat élcsoportjainak listája

executors
Szükséges

Végrehajtóazonosítók leképezése végrehajtópéldányokra

start_executor
Szükséges

A kezdő végrehajtó (lehet példány vagy azonosító)

Visszatér

Típus Leírás

Kivételek

Típus Leírás

Ha az ellenőrzés sikertelen