autogen_agentchat.base#

class ChatAgent(**kwargs)[Quelle]#

Bases: ABC, TaskRunner, ComponentBase[BaseModel]

Protokoll für einen Chat-Agenten.

component_type: ClassVar[ComponentType] = 'agent'#

Der logische Typ der Komponente.

abstract property name: str#

Der Name des Agenten. Dieser wird vom Team verwendet, um den Agenten eindeutig zu identifizieren. Er sollte innerhalb des Teams eindeutig sein.

abstract property description: str#

Die Beschreibung des Agenten. Diese wird vom Team verwendet, um Entscheidungen darüber zu treffen, welche Agenten verwendet werden sollen. Die Beschreibung sollte die Fähigkeiten des Agenten und die Art und Weise, wie mit ihm interagiert werden kann, beschreiben.

abstract property produced_message_types: Sequence[type[BaseChatMessage]]#

Die Arten von Nachrichten, die der Agent im Feld Response.chat_message produziert. Sie müssen BaseChatMessage-Typen sein.

abstract async on_messages(messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken) Response[Quelle]#

Verarbeitet eingehende Nachrichten und gibt eine Antwort zurück.

abstract on_messages_stream(messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken) AsyncGenerator[BaseAgentEvent | BaseChatMessage | Response, None][Quelle]#

Verarbeitet eingehende Nachrichten und gibt einen Stream von inneren Nachrichten zurück. Das letzte Element ist die Antwort.

abstract async on_reset(cancellation_token: CancellationToken) None[Quelle]#

Setzt den Agenten in seinen Initialzustand zurück.

abstract async on_pause(cancellation_token: CancellationToken) None[Quelle]#

Wird aufgerufen, wenn der Agent pausiert wird. Der Agent kann während des Aufrufs von on_messages() oder on_messages_stream() pausiert werden.

abstract async on_resume(cancellation_token: CancellationToken) None[Quelle]#

Wird aufgerufen, wenn der Agent fortgesetzt wird. Der Agent kann während des Aufrufs von on_messages() oder on_messages_stream() fortgesetzt werden.

abstract async save_state() Mapping[str, Any][Quelle]#

Speichert den Zustand des Agenten für eine spätere Wiederherstellung.

abstract async load_state(state: Mapping[str, Any]) None[Quelle]#

Stellt den Agenten aus dem gespeicherten Zustand wieder her.

abstract async close() None[Quelle]#

Gibt alle vom Agenten gehaltenen Ressourcen frei.

class Response(*, chat_message: Annotated[BaseChatMessage, SerializeAsAny()], inner_messages: Sequence[Annotated[BaseAgentEvent | BaseChatMessage, SerializeAsAny()]] | None = None)[Quelle]#

Basiert auf: object

Eine Antwort, die durch den Aufruf von ChatAgent.on_messages() erzeugt wird.

chat_message: Annotated[BaseChatMessage, SerializeAsAny()]#

Eine Chat-Nachricht, die vom Agenten als Antwort erzeugt wird.

inner_messages: Sequence[Annotated[BaseAgentEvent | BaseChatMessage, SerializeAsAny()]] | None = None#

Innere Nachrichten, die vom Agenten produziert werden, können BaseAgentEvent oder BaseChatMessage sein.

class Team(**kwargs)[Quelle]#

Bases: ABC, TaskRunner, ComponentBase[BaseModel]

component_type: ClassVar[ComponentType] = 'team'#

Der logische Typ der Komponente.

abstract property name: str#

Der Name des Teams. Dieser wird vom Team verwendet, um sich in einem größeren Team von Teams eindeutig zu identifizieren.

abstract property description: str#

Eine Beschreibung des Teams. Diese wird verwendet, um dem übergeordneten Orchestrator Kontext über das Team und seinen Zweck zu geben.

abstract async reset() None[Quelle]#

Setzt das Team und alle seine Teilnehmer in den Anfangszustand zurück.

abstract async pause() None[Quelle]#

Pausiert das Team und alle seine Teilnehmer. Dies ist nützlich, um die Methoden autogen_agentchat.base.TaskRunner.run() oder autogen_agentchat.base.TaskRunner.run_stream() parallel auszuführen, während sie am Leben bleiben.

abstract async resume() None[Quelle]#

Setzt das Team und alle seine Teilnehmer nach dem Aufruf von pause() aus einer Pause fort.

abstract async save_state() Mapping[str, Any][Quelle]#

Speichert den aktuellen Zustand des Teams.

abstract async load_state(state: Mapping[str, Any]) None[Quelle]#

Lädt den Zustand des Teams.

exception TerminatedException[Quelle]#

Bases: BaseException

class TerminationCondition[Quelle]#

Bases: ABC, ComponentBase[BaseModel]

Eine zustandsbehaftete Bedingung, die bestimmt, wann eine Konversation beendet werden soll.

Eine Abbruchbedingung ist ein aufrufbares Objekt, das eine Sequenz von BaseChatMessage-Objekten seit dem letzten Aufruf der Bedingung entgegennimmt und StopMessage zurückgibt, wenn die Konversation beendet werden soll, oder andernfalls None. Sobald eine Abbruchbedingung erreicht wurde, muss sie zurückgesetzt werden, bevor sie erneut verwendet werden kann.

Abbruchbedingungen können mit den Operatoren AND und OR kombiniert werden.

Beispiel

import asyncio
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination


async def main() -> None:
    # Terminate the conversation after 10 turns or if the text "TERMINATE" is mentioned.
    cond1 = MaxMessageTermination(10) | TextMentionTermination("TERMINATE")

    # Terminate the conversation after 10 turns and if the text "TERMINATE" is mentioned.
    cond2 = MaxMessageTermination(10) & TextMentionTermination("TERMINATE")

    # ...

    # Reset the termination condition.
    await cond1.reset()
    await cond2.reset()


asyncio.run(main())
component_type: ClassVar[ComponentType] = 'termination'#

Der logische Typ der Komponente.

abstract property terminated: bool#

Prüft, ob die Abbruchbedingung erreicht wurde.

abstract async reset() None[Quelle]#

Setzt die Abbruchbedingung zurück.

class AndTerminationCondition(*conditions: TerminationCondition)[Quelle]#

Bases: TerminationCondition, Component[AndTerminationConditionConfig]

component_config_schema#

alias of AndTerminationConditionConfig

component_type: ClassVar[ComponentType] = 'termination'#

Der logische Typ der Komponente.

component_provider_override: ClassVar[str | None] = 'autogen_agentchat.base.AndTerminationCondition'#

Überschreibe den Anbieter-String für die Komponente. Dies sollte verwendet werden, um zu verhindern, dass interne Modulnamen Teil des Modulnamens werden.

property terminated: bool#

Prüft, ob die Abbruchbedingung erreicht wurde.

async reset() None[source]#

Setzt die Abbruchbedingung zurück.

class OrTerminationCondition(*conditions: TerminationCondition)[source]#

Bases: TerminationCondition, Component[OrTerminationConditionConfig]

component_config_schema#

alias of OrTerminationConditionConfig

component_type: ClassVar[ComponentType] = 'termination'#

Der logische Typ der Komponente.

component_provider_override: ClassVar[str | None] = 'autogen_agentchat.base.OrTerminationCondition'#

Überschreibe den Anbieter-String für die Komponente. Dies sollte verwendet werden, um zu verhindern, dass interne Modulnamen Teil des Modulnamens werden.

property terminated: bool#

Prüft, ob die Abbruchbedingung erreicht wurde.

async reset() None[source]#

Setzt die Abbruchbedingung zurück.

pydantic model TaskResult[source]#

Bases: BaseModel

Ergebnis der Ausführung einer Aufgabe.

JSON-Schema anzeigen
{
   "title": "TaskResult",
   "description": "Result of running a task.",
   "type": "object",
   "properties": {
      "messages": {
         "items": {
            "anyOf": [
               {
                  "$ref": "#/$defs/BaseAgentEvent"
               },
               {
                  "$ref": "#/$defs/BaseChatMessage"
               }
            ]
         },
         "title": "Messages",
         "type": "array"
      },
      "stop_reason": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Stop Reason"
      }
   },
   "$defs": {
      "BaseAgentEvent": {
         "description": "Base class for agent events.\n\n.. note::\n\n    If you want to create a new message type for signaling observable events\n    to user and application, inherit from this class.\n\nAgent events are used to signal actions and thoughts produced by agents\nand teams to user and applications. They are not used for agent-to-agent\ncommunication and are not expected to be processed by other agents.\n\nYou should override the :meth:`to_text` method if you want to provide\na custom rendering of the content.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "source": {
               "title": "Source",
               "type": "string"
            },
            "models_usage": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/RequestUsage"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "metadata": {
               "additionalProperties": {
                  "type": "string"
               },
               "default": {},
               "title": "Metadata",
               "type": "object"
            },
            "created_at": {
               "format": "date-time",
               "title": "Created At",
               "type": "string"
            }
         },
         "required": [
            "source"
         ],
         "title": "BaseAgentEvent",
         "type": "object"
      },
      "BaseChatMessage": {
         "description": "Abstract base class for chat messages.\n\n.. note::\n\n    If you want to create a new message type that is used for agent-to-agent\n    communication, inherit from this class, or simply use\n    :class:`StructuredMessage` if your content type is a subclass of\n    Pydantic BaseModel.\n\nThis class is used for messages that are sent between agents in a chat\nconversation. Agents are expected to process the content of the\nmessage using models and return a response as another :class:`BaseChatMessage`.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "source": {
               "title": "Source",
               "type": "string"
            },
            "models_usage": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/RequestUsage"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "metadata": {
               "additionalProperties": {
                  "type": "string"
               },
               "default": {},
               "title": "Metadata",
               "type": "object"
            },
            "created_at": {
               "format": "date-time",
               "title": "Created At",
               "type": "string"
            }
         },
         "required": [
            "source"
         ],
         "title": "BaseChatMessage",
         "type": "object"
      },
      "RequestUsage": {
         "properties": {
            "prompt_tokens": {
               "title": "Prompt Tokens",
               "type": "integer"
            },
            "completion_tokens": {
               "title": "Completion Tokens",
               "type": "integer"
            }
         },
         "required": [
            "prompt_tokens",
            "completion_tokens"
         ],
         "title": "RequestUsage",
         "type": "object"
      }
   },
   "required": [
      "messages"
   ]
}

Felder:
  • messages (Sequence[autogen_agentchat.messages.BaseAgentEvent | autogen_agentchat.messages.BaseChatMessage])

  • stop_reason (str | None)

field messages: Sequence[Annotated[BaseAgentEvent | BaseChatMessage, SerializeAsAny()]] [Required]#

Von der Aufgabe erzeugte Nachrichten.

field stop_reason: str | None = None#

Der Grund, warum die Aufgabe gestoppt wurde.

class TaskRunner(*args, **kwargs)[source]#

Bases: Protocol

Ein Aufgaben-Runner.

async run(*, task: str | BaseChatMessage | Sequence[BaseChatMessage] | None = None, cancellation_token: CancellationToken | None = None, output_task_messages: bool = True) TaskResult[source]#

Führt die Aufgabe aus und gibt das Ergebnis zurück.

Die Aufgabe kann ein String, eine einzelne Nachricht oder eine Sequenz von Nachrichten sein.

Der Runner ist zustandsbehaftet und ein nachfolgender Aufruf dieser Methode wird dort fortgesetzt, wo der vorherige Aufruf aufgehört hat. Wenn die Aufgabe nicht spezifiziert ist, wird der Runner mit der aktuellen Aufgabe fortfahren.

Parameter:
  • task – Die auszuführende Aufgabe. Kann ein String, eine einzelne Nachricht oder eine Sequenz von Nachrichten sein.

  • cancellation_token – Das Abbruch-Token, um die Aufgabe sofort zu beenden.

  • output_task_messages – Ob Aufgaben-Nachrichten in TaskResult.messages enthalten sein sollen. Standardmäßig True aus Gründen der Abwärtskompatibilität.

run_stream(*, task: str | BaseChatMessage | Sequence[BaseChatMessage] | None = None, cancellation_token: CancellationToken | None = None, output_task_messages: bool = True) AsyncGenerator[BaseAgentEvent | BaseChatMessage | TaskResult, None][source]#

Führt die Aufgabe aus und erzeugt einen Strom von Nachrichten sowie das endgültige Ergebnis TaskResult als letztes Element im Strom.

Die Aufgabe kann ein String, eine einzelne Nachricht oder eine Sequenz von Nachrichten sein.

Der Runner ist zustandsbehaftet und ein nachfolgender Aufruf dieser Methode wird dort fortgesetzt, wo der vorherige Aufruf aufgehört hat. Wenn die Aufgabe nicht spezifiziert ist, wird der Runner mit der aktuellen Aufgabe fortfahren.

Parameter:
  • task – Die auszuführende Aufgabe. Kann ein String, eine einzelne Nachricht oder eine Sequenz von Nachrichten sein.

  • cancellation_token – Das Abbruch-Token, um die Aufgabe sofort zu beenden.

  • output_task_messages – Ob Aufgaben-Nachrichten im Ausgabestrom enthalten sein sollen. Standardmäßig True aus Gründen der Abwärtskompatibilität.

pydantic model Handoff[source]#

Bases: BaseModel

Handoff-Konfiguration.

JSON-Schema anzeigen
{
   "title": "Handoff",
   "description": "Handoff configuration.",
   "type": "object",
   "properties": {
      "target": {
         "title": "Target",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "name": {
         "default": "",
         "title": "Name",
         "type": "string"
      },
      "message": {
         "default": "",
         "title": "Message",
         "type": "string"
      }
   },
   "required": [
      "target"
   ]
}

Felder:
  • description (str)

  • message (str)

  • name (str)

  • target (str)

Validatoren:
  • set_defaults » all fields

field target: str [Required]#

Der Name des Ziel-Agenten, an den übergeben werden soll.

Validiert durch:
  • set_defaults

field description: str = ''#

Die Beschreibung des Handoffs, z. B. unter welchen Bedingungen er auftreten soll und die Fähigkeit des Ziel-Agenten. Wenn nicht angegeben, wird sie aus dem Namen des Ziel-Agenten generiert.

Validiert durch:
  • set_defaults

field name: str = ''#

Der Name dieser Handoff-Konfiguration. Wenn nicht angegeben, wird er aus dem Namen des Ziel-Agenten generiert.

Validiert durch:
  • set_defaults

field message: str = ''#

Die Nachricht an den Ziel-Agenten. Standardmäßig ist dies das Ergebnis für das Handoff-Tool. Wenn nicht angegeben, wird sie aus dem Namen des Ziel-Agenten generiert.

Validiert durch:
  • set_defaults

validator set_defaults  »  all fields[source]#
property handoff_tool: BaseTool[BaseModel, BaseModel]#

Erstellt ein Handoff-Tool aus dieser Handoff-Konfiguration.