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]#
- pydantic model ChatCompletionContextState[Quelle]#
Bases:
BaseModelJSON-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.
- 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.
- 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()undremaining_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 Methoderemaining_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.
- 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:
- 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.