autogen_core.model_context#
- class BufferedChatCompletionContext(buffer_size: int, initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[源代码]#
基类:
ChatCompletionContext
,Component
[BufferedChatCompletionContextConfig
]一个缓冲的聊天完成上下文,保留最近 n 条消息的视图, 其中 n 是缓冲区大小。缓冲区大小在初始化时设置。
- 参数:
buffer_size (int) -- 缓冲区大小。
initial_messages (List[LLMMessage] | None) -- 初始消息。
- classmethod _from_config(config: BufferedChatCompletionContextConfig) Self [源代码]#
从配置对象创建组件的新实例。
- 参数:
config (T) -- 配置对象。
- Returns:
Self -- 组件的新实例。
- _to_config() BufferedChatCompletionContextConfig [源代码]#
导出当前组件实例的配置,该配置可用于创建具有相同配置的新组件实例。
- Returns:
T -- 组件的配置。
- component_config_schema#
BufferedChatCompletionContextConfig
的别名
- component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.BufferedChatCompletionContext'#
覆盖组件的provider字符串。这应该用于防止内部模块名称成为模块名称的一部分。
- async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [源代码]#
获取最多 buffer_size 条最近的消息。
- class ChatCompletionContext(initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[源代码]#
基类:
ABC
,ComponentBase
[BaseModel
]定义聊天完成上下文接口的抽象基类。 聊天完成上下文允许代理存储和检索LLM消息。 可以通过不同的召回策略实现。
- 参数:
initial_messages (List[LLMMessage] | None) -- 初始消息列表。
示例
创建一个自定义模型上下文,用于过滤掉AssistantMessage中的thought字段。 这对于像DeepSeek R1这样的推理模型很有用,因为这些模型会产生 非常长的thought内容,而这些内容在后续完成中并不需要。
from typing import List from autogen_core.model_context import UnboundedChatCompletionContext from autogen_core.models import AssistantMessage, LLMMessage class ReasoningModelContext(UnboundedChatCompletionContext): """用于推理模型的模型上下文。""" async def get_messages(self) -> List[LLMMessage]: messages = await super().get_messages() # 从AssistantMessage中过滤掉thought字段 messages_out: List[LLMMessage] = [] for message in messages: if isinstance(message, AssistantMessage): message.thought = None messages_out.append(message) return messages_out
- async add_message(message: Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]) None [源代码]#
向上下文中添加消息。
- component_type: ClassVar[ComponentType] = 'chat_completion_context'#
组件的逻辑类型。
- abstract async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [源代码]#
- pydantic model ChatCompletionContextState[源代码]#
基类:
BaseModel
Show JSON schema
{ "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": "\u52a9\u624b\u6d88\u606f\u662f\u4ece\u8bed\u8a00\u6a21\u578b\u4e2d\u91c7\u6837\u5f97\u5230\u7684\u3002", "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": "\u51fd\u6570\u6267\u884c\u7ed3\u679c\u5305\u542b\u51fd\u6570\u8c03\u7528\u7684\u8f93\u51fa\u3002", "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": "\u51fd\u6570\u6267\u884c\u7ed3\u679c\u6d88\u606f\u5305\u542b\u591a\u4e2a\u51fd\u6570\u8c03\u7528\u7684\u8f93\u51fa\u3002", "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": "\u7cfb\u7edf\u6d88\u606f\u5305\u542b\u6765\u81ea\u5f00\u53d1\u8005\u7684\u6a21\u578b\u6307\u4ee4\u3002\n\n.. note::\n\n OpenAI \u6b63\u9010\u6b65\u5f03\u7528 'system' \u89d2\u8272\uff0c\u8f6c\u800c\u4f7f\u7528 'developer' \u89d2\u8272\u3002\n \u8be6\u60c5\u8bf7\u53c2\u9605 `Model Spec <https://cdn.openai.com/spec/model-spec-2024-05-08.html#definitions>`_\u3002\n \u4e0d\u8fc7\uff0c\u5176 API \u4ecd\u5141\u8bb8\u4f7f\u7528 'system' \u89d2\u8272\uff0c\u670d\u52a1\u5668\u7aef\u4f1a\u81ea\u52a8\u5c06\u5176\u8f6c\u6362\u4e3a 'developer' \u89d2\u8272\n \u56e0\u6b64\uff0c\u5f00\u53d1\u8005\u6d88\u606f\u53ef\u4ee5\u4f7f\u7528 `SystemMessage`\u3002", "properties": { "content": { "title": "Content", "type": "string" }, "type": { "const": "SystemMessage", "default": "SystemMessage", "title": "Type", "type": "string" } }, "required": [ "content" ], "title": "SystemMessage", "type": "object" }, "UserMessage": { "description": "\u7528\u6237\u6d88\u606f\u5305\u542b\u7ec8\u7aef\u7528\u6237\u7684\u8f93\u5165\uff0c\u6216\u4f5c\u4e3a\u63d0\u4f9b\u7ed9\u6a21\u578b\u6570\u636e\u7684\u901a\u7528\u5bb9\u5668\u3002", "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" } } }
- Fields:
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 HeadAndTailChatCompletionContext(head_size: int, tail_size: int, initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[源代码]#
基类:
ChatCompletionContext
,Component
[HeadAndTailChatCompletionContextConfig
]一个聊天完成上下文,保持前n条和后m条消息的视图, 其中n是头部大小,m是尾部大小。头部和尾部大小 在初始化时设置。
- 参数:
- classmethod _from_config(config: HeadAndTailChatCompletionContextConfig) Self [源代码]#
从配置对象创建组件的新实例。
- 参数:
config (T) -- 配置对象。
- Returns:
Self -- 组件的新实例。
- _to_config() HeadAndTailChatCompletionContextConfig [源代码]#
导出当前组件实例的配置,该配置可用于创建具有相同配置的新组件实例。
- Returns:
T -- 组件的配置。
- component_config_schema#
HeadAndTailChatCompletionContextConfig
的别名
- component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.HeadAndTailChatCompletionContext'#
覆盖组件的provider字符串。这应该用于防止内部模块名称成为模块名称的一部分。
- async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [源代码]#
获取最多`head_size`条最新消息和`tail_size`条最旧消息。
- 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)[源代码]#
基类:
ChatCompletionContext
,Component
[TokenLimitedChatCompletionContextConfig
](实验性)基于令牌的聊天完成上下文维护一个不超过令牌限制的上下文视图。
备注
该功能在 v0.4.10 版本中新增。这是一个实验性组件,未来可能会发生变化。
- 参数:
model_client (ChatCompletionClient) -- 用于令牌计数的模型客户端。 该模型客户端必须实现
count_tokens()
和remaining_tokens()
方法。token_limit (int | None) -- 使用
count_tokens()
方法 保持在上下文中的最大令牌数。如果为 None,则上下文将由模型客户端通过remaining_tokens()
方法限制。tools (List[ToolSchema] | None) -- 上下文中使用的工具模式列表。
initial_messages (List[LLMMessage] | None) -- 包含在上下文中的初始消息列表。
- classmethod _from_config(config: TokenLimitedChatCompletionContextConfig) Self [源代码]#
从配置对象创建组件的新实例。
- 参数:
config (T) -- 配置对象。
- Returns:
Self -- 组件的新实例。
- _to_config() TokenLimitedChatCompletionContextConfig [源代码]#
导出当前组件实例的配置,该配置可用于创建具有相同配置的新组件实例。
- Returns:
T -- 组件的配置。
- component_config_schema#
TokenLimitedChatCompletionContextConfig
的别名
- component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.TokenLimitedChatCompletionContext'#
覆盖组件的provider字符串。这应该用于防止内部模块名称成为模块名称的一部分。
- async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [源代码]#
获取最近消息中最多 token_limit 个令牌。如果未提供令牌限制, 则返回模型客户端允许的剩余令牌所能容纳的尽可能多的消息。
- class UnboundedChatCompletionContext(initial_messages: List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] | None = None)[源代码]#
基类:
ChatCompletionContext
,Component
[UnboundedChatCompletionContextConfig
]一个无限制的聊天完成上下文,保持对所有消息的视图。
- classmethod _from_config(config: UnboundedChatCompletionContextConfig) Self [源代码]#
从配置对象创建组件的新实例。
- 参数:
config (T) -- 配置对象。
- Returns:
Self -- 组件的新实例。
- _to_config() UnboundedChatCompletionContextConfig [源代码]#
导出当前组件实例的配置,该配置可用于创建具有相同配置的新组件实例。
- Returns:
T -- 组件的配置。
- component_config_schema#
UnboundedChatCompletionContextConfig
的别名
- component_provider_override: ClassVar[str | None] = 'autogen_core.model_context.UnboundedChatCompletionContext'#
覆盖组件的provider字符串。这应该用于防止内部模块名称成为模块名称的一部分。
- async get_messages() List[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]] [源代码]#
获取最多`buffer_size`条最近的消息。