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