autogen_core.model_context#

class ChatCompletionContext(initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[Quelle]#

Bases: ABC, ComponentBase[BaseModel]

Eine abstrakte Basisklasse zur Definition der Schnittstelle eines Chat-Completion-Kontexts. Ein Chat-Completion-Kontext ermöglicht es Agenten, LLM-Nachrichten zu speichern und abzurufen. Er kann mit verschiedenen Abrufstrategien implementiert werden.

Parameter:

initial_messages (List[LLMMessage] | None) – Die anfänglichen Nachrichten.

Beispiel

Erstellen Sie einen benutzerdefinierten Modellkontext, der das Gedankenfeld aus AssistantMessage herausfiltert. Dies ist nützlich für Modelle wie DeepSeek R1, die sehr lange Gedanken produzieren, die für nachfolgende Vervollständigungen nicht benötigt werden.

from typing import List

from autogen_core.model_context import UnboundedChatCompletionContext
from autogen_core.models import AssistantMessage, LLMMessage


class ReasoningModelContext(UnboundedChatCompletionContext):
    """A model context for reasoning models."""

    async def get_messages(self) -> List[LLMMessage]:
        messages = await super().get_messages()
        # Filter out thought field from AssistantMessage.
        messages_out: List[LLMMessage] = []
        for message in messages:
            if isinstance(message, AssistantMessage):
                message.thought = None
            messages_out.append(message)
        return messages_out
component_type: ClassVar[ComponentType] = 'chat_completion_context'#

Der logische Typ der Komponente.

async add_message(message: Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]) None[Quelle]#

Fügt eine Nachricht zum Kontext hinzu.

abstract async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]][Quelle]#
async clear() None[Quelle]#

Leert den Kontext.

async save_state() Mapping[str, Any][Quelle]#
async load_state(state: Mapping[str, Any]) None[Quelle]#
pydantic model ChatCompletionContextState[Quelle]#

Bases: BaseModel

JSON-Schema anzeigen
{
   "title": "ChatCompletionContextState",
   "type": "object",
   "properties": {
      "messages": {
         "items": {
            "discriminator": {
               "mapping": {
                  "AssistantMessage": "#/$defs/AssistantMessage",
                  "FunctionExecutionResultMessage": "#/$defs/FunctionExecutionResultMessage",
                  "SystemMessage": "#/$defs/SystemMessage",
                  "UserMessage": "#/$defs/UserMessage"
               },
               "propertyName": "type"
            },
            "oneOf": [
               {
                  "$ref": "#/$defs/SystemMessage"
               },
               {
                  "$ref": "#/$defs/UserMessage"
               },
               {
                  "$ref": "#/$defs/AssistantMessage"
               },
               {
                  "$ref": "#/$defs/FunctionExecutionResultMessage"
               }
            ]
         },
         "title": "Messages",
         "type": "array"
      }
   },
   "$defs": {
      "AssistantMessage": {
         "description": "Assistant message are sampled from the language model.",
         "properties": {
            "content": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "$ref": "#/$defs/FunctionCall"
                     },
                     "type": "array"
                  }
               ],
               "title": "Content"
            },
            "thought": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Thought"
            },
            "source": {
               "title": "Source",
               "type": "string"
            },
            "type": {
               "const": "AssistantMessage",
               "default": "AssistantMessage",
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "content",
            "source"
         ],
         "title": "AssistantMessage",
         "type": "object"
      },
      "FunctionCall": {
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "arguments": {
               "title": "Arguments",
               "type": "string"
            },
            "name": {
               "title": "Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "arguments",
            "name"
         ],
         "title": "FunctionCall",
         "type": "object"
      },
      "FunctionExecutionResult": {
         "description": "Function execution result contains the output of a function call.",
         "properties": {
            "content": {
               "title": "Content",
               "type": "string"
            },
            "name": {
               "title": "Name",
               "type": "string"
            },
            "call_id": {
               "title": "Call Id",
               "type": "string"
            },
            "is_error": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Is Error"
            }
         },
         "required": [
            "content",
            "name",
            "call_id"
         ],
         "title": "FunctionExecutionResult",
         "type": "object"
      },
      "FunctionExecutionResultMessage": {
         "description": "Function execution result message contains the output of multiple function calls.",
         "properties": {
            "content": {
               "items": {
                  "$ref": "#/$defs/FunctionExecutionResult"
               },
               "title": "Content",
               "type": "array"
            },
            "type": {
               "const": "FunctionExecutionResultMessage",
               "default": "FunctionExecutionResultMessage",
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "content"
         ],
         "title": "FunctionExecutionResultMessage",
         "type": "object"
      },
      "SystemMessage": {
         "description": "System message contains instructions for the model coming from the developer.\n\n.. note::\n\n    Open AI is moving away from using 'system' role in favor of 'developer' role.\n    See `Model Spec <https://cdn.openai.com/spec/model-spec-2024-05-08.html#definitions>`_ for more details.\n    However, the 'system' role is still allowed in their API and will be automatically converted to 'developer' role\n    on the server side.\n    So, you can use `SystemMessage` for developer messages.",
         "properties": {
            "content": {
               "title": "Content",
               "type": "string"
            },
            "type": {
               "const": "SystemMessage",
               "default": "SystemMessage",
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "content"
         ],
         "title": "SystemMessage",
         "type": "object"
      },
      "UserMessage": {
         "description": "User message contains input from end users, or a catch-all for data provided to the model.",
         "properties": {
            "content": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "anyOf": [
                           {
                              "type": "string"
                           },
                           {}
                        ]
                     },
                     "type": "array"
                  }
               ],
               "title": "Content"
            },
            "source": {
               "title": "Source",
               "type": "string"
            },
            "type": {
               "const": "UserMessage",
               "default": "UserMessage",
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "content",
            "source"
         ],
         "title": "UserMessage",
         "type": "object"
      }
   }
}

Felder:
  • messages (List[autogen_core.models._types.SystemMessage | autogen_core.models._types.UserMessage | autogen_core.models._types.AssistantMessage | autogen_core.models._types.FunctionExecutionResultMessage])

field messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [Optional]#
class UnboundedChatCompletionContext(initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[Quelle]#

Basiert auf: ChatCompletionContext, Component[UnboundedChatCompletionContextConfig]

Ein unbegrenzter Chat-Completion-Kontext, der eine Ansicht aller Nachrichten beibehält.

component_config_schema#

alias von UnboundedChatCompletionContextConfig

component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.UnboundedChatCompletionContext'#

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

async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]][Quelle]#

Ruft maximal buffer_size aktuelle Nachrichten ab.

_to_config() UnboundedChatCompletionContextConfig[Quelle]#

Gib die Konfiguration aus, die erforderlich wäre, um eine neue Instanz einer Komponente zu erstellen, die der Konfiguration dieser Instanz entspricht.

Gibt zurück:

T – Die Konfiguration der Komponente.

classmethod _from_config(config: UnboundedChatCompletionContextConfig) Self[Quelle]#

Erstelle eine neue Instanz der Komponente aus einem Konfigurationsobjekt.

Parameter:

config (T) – Das Konfigurationsobjekt.

Gibt zurück:

Self – Die neue Instanz der Komponente.

class BufferedChatCompletionContext(buffer_size: int, initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[Quelle]#

Basiert auf: ChatCompletionContext, Component[BufferedChatCompletionContextConfig]

Ein gepufferter Chat-Completion-Kontext, der eine Ansicht der letzten n Nachrichten beibehält, wobei n die Puffergröße ist. Die Puffergröße wird bei der Initialisierung festgelegt.

Parameter:
  • buffer_size (int) – Die Größe des Puffers.

  • initial_messages (List[LLMMessage] | None) – Die anfänglichen Nachrichten.

component_config_schema#

alias von BufferedChatCompletionContextConfig

component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.BufferedChatCompletionContext'#

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

async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]][Quelle]#

Ruft maximal buffer_size aktuelle Nachrichten ab.

_to_config() BufferedChatCompletionContextConfig[Quelle]#

Gib die Konfiguration aus, die erforderlich wäre, um eine neue Instanz einer Komponente zu erstellen, die der Konfiguration dieser Instanz entspricht.

Gibt zurück:

T – Die Konfiguration der Komponente.

classmethod _from_config(config: BufferedChatCompletionContextConfig) Self[Quelle]#

Erstelle eine neue Instanz der Komponente aus einem Konfigurationsobjekt.

Parameter:

config (T) – Das Konfigurationsobjekt.

Gibt zurück:

Self – Die neue Instanz der Komponente.

class TokenLimitedChatCompletionContext(model_client: ChatCompletionClient, *, token_limit: int | None = None, tool_schema: List[ToolSchema] | None = None, initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[Quelle]#

Basiert auf: ChatCompletionContext, Component[TokenLimitedChatCompletionContextConfig]

(Experimentell) Ein tokenbasierter Chat-Completion-Kontext verwaltet eine Ansicht des Kontexts bis zu einem Token-Limit.

Hinweis

Hinzugefügt in v0.4.10. Dies ist eine experimentelle Komponente und kann sich in Zukunft ändern.

Parameter:
  • model_client (ChatCompletionClient) – Der zu verwendende Modellclient für die Token-Zählung. Der Modellclient muss die Methoden count_tokens() und remaining_tokens() implementieren.

  • token_limit (int | None) – Die maximale Anzahl von Tokens, die im Kontext beibehalten werden sollen, unter Verwendung der Methode count_tokens(). Wenn None, wird der Kontext vom Modellclient unter Verwendung der Methode remaining_tokens() begrenzt.

  • tools (List[ToolSchema] | None) – Eine Liste von Tool-Schemas, die im Kontext verwendet werden sollen.

  • initial_messages (Liste[LLMMessage] | None) – Eine Liste von anfänglichen Nachrichten, die in den Kontext aufgenommen werden sollen.

component_config_schema#

Alias von TokenLimitedChatCompletionContextConfig

component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.TokenLimitedChatCompletionContext'#

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

async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]][source]#

Gibt maximal token_limit Tokens in den letzten Nachrichten zurück. Wenn kein Token-Limit angegeben ist, werden so viele Nachrichten zurückgegeben, wie es das verbleibende Token-Limit des Modell-Clients zulässt.

_to_config() TokenLimitedChatCompletionContextConfig[source]#

Gib die Konfiguration aus, die erforderlich wäre, um eine neue Instanz einer Komponente zu erstellen, die der Konfiguration dieser Instanz entspricht.

Gibt zurück:

T – Die Konfiguration der Komponente.

classmethod _from_config(config: TokenLimitedChatCompletionContextConfig) Self[source]#

Erstelle eine neue Instanz der Komponente aus einem Konfigurationsobjekt.

Parameter:

config (T) – Das Konfigurationsobjekt.

Gibt zurück:

Self – Die neue Instanz der Komponente.

class HeadAndTailChatCompletionContext(head_size: int, tail_size: int, initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[source]#

Basiert auf: ChatCompletionContext, Component[HeadAndTailChatCompletionContextConfig]

Ein Chat-Vervollständigungs-Kontext, der eine Ansicht der ersten n und der letzten m Nachrichten beibehält, wobei n die Kopfgröße und m die Schwanzgröße ist. Die Kopf- und Schwanzgrößen werden bei der Initialisierung festgelegt.

Parameter:
  • head_size (int) – Die Größe des Kopfes.

  • tail_size (int) – Die Größe des Schwanzes.

  • initial_messages (List[LLMMessage] | None) – Die anfänglichen Nachrichten.

component_config_schema#

Alias von HeadAndTailChatCompletionContextConfig

component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.HeadAndTailChatCompletionContext'#

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

async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]][source]#

Gibt maximal head_size aktuelle Nachrichten und tail_size älteste Nachrichten zurück.

_to_config() HeadAndTailChatCompletionContextConfig[source]#

Gib die Konfiguration aus, die erforderlich wäre, um eine neue Instanz einer Komponente zu erstellen, die der Konfiguration dieser Instanz entspricht.

Gibt zurück:

T – Die Konfiguration der Komponente.

classmethod _from_config(config: HeadAndTailChatCompletionContextConfig) Self[source]#

Erstelle eine neue Instanz der Komponente aus einem Konfigurationsobjekt.

Parameter:

config (T) – Das Konfigurationsobjekt.

Gibt zurück:

Self – Die neue Instanz der Komponente.