Contexto De Modelo

Un contexto de modelo permite el almacenamiento y recuperación de mensajes de finalización de chat. Siempre se usa junto con un cliente de modelo para generar respuestas basadas en LLM.

Por ejemplo, BufferedChatCompletionContext es un contexto de tipo MRU (más recientemente usado) que almacena el número más reciente de mensajes definido por buffer_size. Esto es útil para evitar el desbordamiento de contexto en muchos LLMs.

Veamos un ejemplo que utiliza BufferedChatCompletionContext.

from dataclasses import dataclass

from saptiva_agents import SAPTIVA_LEGACY
from saptiva_agents.core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handler, BufferedChatCompletionContext
from saptiva_agents.models import AssistantMessage, SystemMessage, UserMessage
from saptiva_agents.base import SaptivaAIChatCompletionClient
@dataclass
class Message:
    content: str
class SimpleAgentWithContext(RoutedAgent):
    def __init__(self, model_client: SaptivaAIChatCompletionClient) -> None:
        super().__init__("A simple agent")
        self._system_messages = [SystemMessage(content="You are a helpful AI assistant.")]
        self._model_client = model_client
        self._model_context = BufferedChatCompletionContext(buffer_size=5)

    @message_handler
    async def handle_user_message(self, message: Message, ctx: MessageContext) -> Message:
        # Preparar entrada para el modelo de finalización de chat.
        user_message = UserMessage(content=message.content, source="user")
        # Agregar mensaje al contexto del modelo.
        await self._model_context.add_message(user_message)
        # Generar una respuesta.
        response = await self._model_client.create(
            self._system_messages + (await self._model_context.get_messages()),
            cancellation_token=ctx.cancellation_token,
        )
        # Retornar la respuesta del modelo.
        assert isinstance(response.content, str)
        # Agregar respuesta al contexto del modelo.
        await self._model_context.add_message(AssistantMessage(content=response.content, source=self.metadata["type"]))
        return Message(content=response.content)

Ahora intentemos hacer preguntas de seguimiento después de la primera.

Como puedes ver en la segunda respuesta, ahora el agente puede recordar sus propias respuestas anteriores.

Última actualización