@@ -13,38 +13,48 @@ public class MiddlewareAgentCodeSnippet
13
13
public async Task CreateMiddlewareAgentAsync ( )
14
14
{
15
15
#region create_middleware_agent_with_original_agent
16
- // Create an agent that always replies "Hello World "
17
- IAgent agent = new DefaultReplyAgent ( name : "assistant" , defaultReply : "Hello World " ) ;
16
+ // Create an agent that always replies "Hi! "
17
+ IAgent agent = new DefaultReplyAgent ( name : "assistant" , defaultReply : "Hi! " ) ;
18
18
19
19
// Create a middleware agent on top of default reply agent
20
20
var middlewareAgent = new MiddlewareAgent ( innerAgent : agent ) ;
21
21
middlewareAgent . Use ( async ( messages , options , agent , ct ) =>
22
22
{
23
23
var lastMessage = messages . Last ( ) as TextMessage ;
24
- lastMessage . Content = $ "[middleware 0] { lastMessage . Content } ";
24
+ if ( lastMessage != null && lastMessage . Content . Contains ( "Hello World" ) )
25
+ {
26
+ lastMessage . Content = $ "[middleware 0] { lastMessage . Content } ";
27
+ return lastMessage ;
28
+ }
29
+
25
30
return await agent . GenerateReplyAsync ( messages , options , ct ) ;
26
31
} ) ;
27
32
28
33
var reply = await middlewareAgent . SendAsync ( "Hello World" ) ;
29
34
reply . GetContent ( ) . Should ( ) . Be ( "[middleware 0] Hello World" ) ;
35
+ reply = await middlewareAgent . SendAsync ( "Hello AI!" ) ;
36
+ reply . GetContent ( ) . Should ( ) . Be ( "Hi!" ) ;
30
37
#endregion create_middleware_agent_with_original_agent
31
38
32
39
#region register_middleware_agent
33
40
middlewareAgent = agent . RegisterMiddleware ( async ( messages , options , agent , ct ) =>
34
41
{
35
42
var lastMessage = messages . Last ( ) as TextMessage ;
36
- lastMessage . Content = $ "[middleware 0] { lastMessage . Content } ";
43
+ if ( lastMessage != null && lastMessage . Content . Contains ( "Hello World" ) )
44
+ {
45
+ lastMessage . Content = $ "[middleware 0] { lastMessage . Content } ";
46
+ return lastMessage ;
47
+ }
48
+
37
49
return await agent . GenerateReplyAsync ( messages , options , ct ) ;
38
50
} ) ;
39
51
#endregion register_middleware_agent
40
52
41
53
#region short_circuit_middleware_agent
42
- // This middleware will short circuit the agent and return the last message directly.
54
+ // This middleware will short circuit the agent and return a message directly.
43
55
middlewareAgent . Use ( async ( messages , options , agent , ct ) =>
44
56
{
45
- var lastMessage = messages . Last ( ) as TextMessage ;
46
- lastMessage . Content = $ "[middleware shortcut]";
47
- return lastMessage ;
57
+ return new TextMessage ( Role . Assistant , $ "[middleware shortcut]") ;
48
58
} ) ;
49
59
#endregion short_circuit_middleware_agent
50
60
}
0 commit comments