55 │
66 ▼
77 ┌─────────────────────────────────────────────┐
8- │ Middleware de Agente │
8+ │ Agent Middleware │
99 │ (temporización, bloqueo, registro) │
1010 │ │
1111 │ ┌───────────────────────────────────────┐ │
12- │ │ Middleware de Chat │ │
12+ │ │ Chat Middleware │ │
1313 │ │ (registro, conteo de mensajes) │ │
1414 │ │ │ │
1515 │ │ ┌──────────────┐ │ │
1818 │ │ │ llamadas a funciones │ │
1919 │ │ ▼ │ │
2020 │ │ ┌──────────────────────────────────┐ │ │
21- │ │ │ Middleware de Funciones │ │ │
21+ │ │ │ Function Middleware │ │ │
2222 │ │ │ (registro, temporización) │ │ │
2323 │ │ │ │ │ │
2424 │ │ │ get_weather(), get_date(), ... │ │ │
4949from agent_framework import (
5050 AgentMiddleware,
5151 AgentRunContext,
52- AgentRunResponse ,
52+ AgentResponse ,
5353 ChatAgent,
5454 ChatContext,
5555 ChatMessage,
9898
9999
100100def get_weather(
101- city: Annotated[str, Field(description="La ciudad para consultar el clima .")],
101+ city: Annotated[str, Field(description="The city to get the weather for .")],
102102) -> dict:
103- """Devuelve datos del clima para una ciudad dada, un diccionario con temperatura y descripción."""
103+ """Devuelve datos del clima para una ciudad dada, con temperatura y descripción."""
104104 logger.info(f"Obteniendo clima para {city}")
105105 if random.random() < 0.05:
106106 return {"temperature": 22, "description": "Soleado"}
@@ -109,12 +109,12 @@ def get_weather(
109109
110110
111111def get_current_date() -> str:
112- """Obtiene la fecha actual del sistema y la devuelve como texto en formato AAAA -MM-DD."""
112+ """Obtiene la fecha actual del sistema en texto con formato YYYY -MM-DD."""
113113 logger.info("Obteniendo fecha actual")
114114 return datetime.now().strftime("%Y-%m-%d")
115115
116116
117- # ---- Middleware basado en funciones ----
117+ # ---- Function-based middleware ----
118118
119119
120120async def timing_agent_middleware(
@@ -123,38 +123,38 @@ async def timing_agent_middleware(
123123) -> None:
124124 """Middleware de agente que registra el tiempo de ejecución."""
125125 start = time.perf_counter()
126- logger.info("[⏲️ Temporización][ Middleware de Agente ] Iniciando ejecución del agente")
126+ logger.info("[⏲️ Temporización][ Agent Middleware ] Iniciando ejecución del agente")
127127
128128 await next(context)
129129
130130 elapsed = time.perf_counter() - start
131- logger.info(f"[⏲️ Temporización][ Middleware de Agente ] Ejecución completada en {elapsed:.2f}s")
131+ logger.info(f"[⏲️ Temporización][ Agent Middleware ] Ejecución completada en {elapsed:.2f}s")
132132
133133
134134async def logging_function_middleware(
135135 context: FunctionInvocationContext,
136136 next: Callable[[FunctionInvocationContext], Awaitable[None]],
137137) -> None:
138- """Middleware de función que registra las llamadas y resultados de funciones ."""
138+ """Middleware de función que registra llamadas y resultados."""
139139 logger.info(
140- f"[🪵 Registro][ Middleware de Función ] Llamando a {context.function.name} con args: {context.arguments}"
140+ f"[🪵 Registro][ Function Middleware ] Llamando a {context.function.name} con args: {context.arguments}"
141141 )
142142
143143 await next(context)
144144
145- logger.info(f"[🪵 Registro][ Middleware de Función ] {context.function.name} devolvió: {context.result}")
145+ logger.info(f"[🪵 Registro][ Function Middleware ] {context.function.name} devolvió: {context.result}")
146146
147147
148148async def logging_chat_middleware(
149149 context: ChatContext,
150150 next: Callable[[ChatContext], Awaitable[None]],
151151) -> None:
152- """Middleware de chat que registra las interacciones con la IA."""
153- logger.info(f"[💬 Registro][ Middleware de Chat] Enviando {len(context.messages)} mensajes a la IA")
152+ """Middleware de chat que registra interacciones con la IA."""
153+ logger.info(f"[💬 Registro][ Chat Middleware ] Enviando {len(context.messages)} mensajes a la IA")
154154
155155 await next(context)
156156
157- logger.info("[💬 Registro][ Middleware de Chat] Respuesta de la IA recibida")
157+ logger.info("[💬 Registro][ Chat Middleware ] Respuesta de la IA recibida")
158158
159159
160160# ---- Middleware basado en clases ----
@@ -172,14 +172,14 @@ async def process(
172172 context: AgentRunContext,
173173 next: Callable[[AgentRunContext], Awaitable[None]],
174174 ) -> None:
175- """Verifica los mensajes en busca de contenido bloqueado y termina si lo encuentra."""
175+ """Verifica mensajes con contenido bloqueado y termina si lo encuentra."""
176176 last_message = context.messages[-1] if context.messages else None
177177 if last_message and last_message.text:
178178 for word in self.blocked_words:
179179 if word.lower() in last_message.text.lower():
180- logger.warning(f"[❌ Bloqueo][ Middleware de Agente ] Solicitud bloqueada: contiene '{word}'")
180+ logger.warning(f"[❌ Bloqueo][ Agent Middleware ] Solicitud bloqueada: contiene '{word}'")
181181 context.terminate = True
182- context.result = AgentRunResponse (
182+ context.result = AgentResponse (
183183 messages=[
184184 ChatMessage(
185185 role=Role.ASSISTANT, text=f"Lo siento, no puedo procesar solicitudes sobre '{word}'."
@@ -192,7 +192,7 @@ async def process(
192192
193193
194194class TimingFunctionMiddleware(FunctionMiddleware):
195- """Middleware de función que mide el tiempo de ejecución de cada llamada a función ."""
195+ """Middleware de función que mide el tiempo de ejecución de cada llamada."""
196196
197197 async def process(
198198 self,
@@ -201,16 +201,16 @@ async def process(
201201 ) -> None:
202202 """Mide el tiempo de ejecución de la función y registra la duración."""
203203 start = time.perf_counter()
204- logger.info(f"[⌚️ Temporización][ Middleware de Función ] Iniciando {context.function.name}")
204+ logger.info(f"[⌚️ Temporización][ Function Middleware ] Iniciando {context.function.name}")
205205
206206 await next(context)
207207
208208 elapsed = time.perf_counter() - start
209- logger.info(f"[⌚️ Temporización][ Middleware de Función ] {context.function.name} tardó {elapsed:.4f}s")
209+ logger.info(f"[⌚️ Temporización][ Function Middleware ] {context.function.name} tardó {elapsed:.4f}s")
210210
211211
212212class MessageCountChatMiddleware(ChatMiddleware):
213- """Middleware de chat que cuenta el número total de mensajes enviados a la IA."""
213+ """Middleware de chat que cuenta el total de mensajes enviados a la IA."""
214214
215215 def __init__(self) -> None:
216216 """Inicializa el contador de mensajes."""
@@ -224,14 +224,14 @@ async def process(
224224 """Cuenta los mensajes y registra el total acumulado."""
225225 self.total_messages += len(context.messages)
226226 logger.info(
227- "[🔢 Conteo][ Middleware de Chat] Mensajes en esta solicitud: %s, total hasta ahora: %s",
227+ "[🔢 Conteo][ Chat Middleware ] Mensajes en esta solicitud: %s, total hasta ahora: %s",
228228 len(context.messages),
229229 self.total_messages,
230230 )
231231
232232 await next(context)
233233
234- logger.info("[🔢 Conteo][ Middleware de Chat] Respuesta de chat recibida")
234+ logger.info("[🔢 Conteo][ Chat Middleware ] Respuesta de chat recibida")
235235
236236
237237# ---- Configuración del agente ----
@@ -247,7 +247,6 @@ async def process(
247247 instructions=(
248248 "Ayudas a la gente a planificar su fin de semana. "
249249 "Usa las herramientas disponibles para consultar el clima y la fecha. "
250- "Responde en español."
251250 ),
252251 tools=[get_weather, get_current_date],
253252 middleware=[
@@ -281,10 +280,10 @@ async def extra_agent_middleware(
281280 context: AgentRunContext,
282281 next: Callable[[AgentRunContext], Awaitable[None]],
283282 ) -> None:
284- """Middleware a nivel de ejecución que solo aplica a esta ejecución específica."""
285- logger.info("[🏃🏽♀️ Middleware de Ejecución ] Este middleware solo aplica a esta ejecución")
283+ """Middleware de ejecución que solo aplica a esta ejecución específica."""
284+ logger.info("[🏃🏽♀️ Execution Middleware ] Este middleware solo aplica a esta ejecución")
286285 await next(context)
287- logger.info("[🏃🏽♀️ Middleware de Ejecución ] Ejecución completada")
286+ logger.info("[🏃🏽♀️ Execution Middleware ] Ejecución completada")
288287
289288 response = await agent.run(
290289 "¿Cómo estará el clima en Barcelona?",
0 commit comments