@@ -38,7 +38,7 @@ public override async Task OnMessageReceived(RoleDialogModel message)
3838 {
3939 var conversationId = _state . GetConversationId ( ) ;
4040 var log = $ "MessageId: { message . MessageId } ==>\r \n { message . Role } : { message . Content } ";
41- await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnContentLogGenerated " , BuildLog ( conversationId , _user . UserName , log , message ) ) ;
41+ await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnConversationContentLogGenerated " , BuildContentLog ( conversationId , _user . UserName , log , message ) ) ;
4242 }
4343
4444 public async Task BeforeGenerating ( Agent agent , List < RoleDialogModel > conversations )
@@ -65,16 +65,24 @@ public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenS
6565 var conversationId = _state . GetConversationId ( ) ;
6666 var agent = await agentService . LoadAgent ( message . CurrentAgentId ) ;
6767
68- await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnContentLogGenerated " , BuildLog ( conversationId , agent ? . Name , tokenStats . Prompt , message ) ) ;
68+ await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnConversationContentLogGenerated " , BuildContentLog ( conversationId , agent ? . Name , tokenStats . Prompt , message ) ) ;
6969
7070 var log = message . Role == AgentRole . Function ?
7171 $ "[{ agent ? . Name } ]: { message . FunctionName } ({ message . FunctionArgs } )" :
7272 $ "[{ agent ? . Name } ]: { message . Content } ";
7373 log += $ "\r \n <== MessageId: { message . MessageId } ";
74- await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnContentLogGenerated " , BuildLog ( conversationId , agent ? . Name , log , message ) ) ;
74+ await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnConversationContentLogGenerated " , BuildContentLog ( conversationId , agent ? . Name , log , message ) ) ;
7575 }
7676
77- private string BuildLog ( string conversationId , string ? name , string content , RoleDialogModel message )
77+ public override async Task OnResponseGenerated ( RoleDialogModel message )
78+ {
79+ var conv = _services . GetRequiredService < IConversationService > ( ) ;
80+ var state = _services . GetRequiredService < IConversationStateService > ( ) ;
81+
82+ await _chatHub . Clients . User ( _user . Id ) . SendAsync ( "OnConversateStateLogGenerated" , BuildStateLog ( conv . ConversationId , state . GetStates ( ) , message ) ) ;
83+ }
84+
85+ private string BuildContentLog ( string conversationId , string ? name , string content , RoleDialogModel message )
7886 {
7987 var log = new ConversationContentLogModel
8088 {
@@ -95,4 +103,24 @@ private string BuildLog(string conversationId, string? name, string content, Rol
95103
96104 return JsonSerializer . Serialize ( log , _serializerOptions ) ;
97105 }
106+
107+ private string BuildStateLog ( string conversationId , Dictionary < string , string > states , RoleDialogModel message )
108+ {
109+ var log = new ConversationStateLogModel
110+ {
111+ ConversationId = conversationId ,
112+ MessageId = message . MessageId ,
113+ States = states ,
114+ CreateTime = DateTime . UtcNow
115+ } ;
116+
117+ var convSettings = _services . GetRequiredService < ConversationSetting > ( ) ;
118+ if ( convSettings . EnableStateLog )
119+ {
120+ var db = _services . GetRequiredService < IBotSharpRepository > ( ) ;
121+ db . SaveConversationStateLog ( log ) ;
122+ }
123+
124+ return JsonSerializer . Serialize ( log , _serializerOptions ) ;
125+ }
98126}
0 commit comments