@@ -560,7 +560,7 @@ public string GetAgentTemplate(string agentId, string templateName)
560560 foreach ( var file in Directory . GetFiles ( dir ) )
561561 {
562562 var fileName = file . Split ( Path . DirectorySeparatorChar ) . Last ( ) ;
563- var splits = fileName . ToLower ( ) . Split ( '.' ) ;
563+ var splits = ParseFileNameByPath ( fileName . ToLower ( ) ) ;
564564 var name = splits [ 0 ] ;
565565 var extension = splits [ 1 ] ;
566566 if ( name . IsEqualTo ( templateName ) && extension . IsEqualTo ( _agentSettings . TemplateFormat ) )
@@ -846,7 +846,7 @@ public void CreateUser(User user)
846846 #region LLM Completion Log
847847 public void SaveLlmCompletionLog ( LlmCompletionLog log )
848848 {
849- var convDir = Path . Combine ( _dbSettings . FileRepository , _conversationSettings . DataDir , log . ConversationId ) ;
849+ var convDir = FindConversationDirectory ( log . ConversationId ) ;
850850 if ( ! Directory . Exists ( convDir ) ) return ;
851851
852852 var logDir = Path . Combine ( convDir , "llm_prompt_log" ) ;
@@ -855,8 +855,8 @@ public void SaveLlmCompletionLog(LlmCompletionLog log)
855855 Directory . CreateDirectory ( logDir ) ;
856856 }
857857
858- var fileName = string . IsNullOrEmpty ( log . Id ) ? Guid . NewGuid ( ) . ToString ( ) : log . Id ;
859- var file = Path . Combine ( logDir , $ "{ fileName } .log") ;
858+ var index = GetLlmCompletionLogIndex ( logDir , log . MessageId ) ;
859+ var file = Path . Combine ( logDir , $ "{ log . MessageId } . { index } .log") ;
860860 File . WriteAllText ( file , JsonSerializer . Serialize ( log , _options ) ) ;
861861 }
862862 #endregion
@@ -1008,5 +1008,30 @@ private List<StateKeyValue> CollectConversationStates(string stateDir)
10081008 }
10091009 return states ;
10101010 }
1011+
1012+ private int GetLlmCompletionLogIndex ( string logDir , string id )
1013+ {
1014+ var files = Directory . GetFiles ( logDir ) ;
1015+ if ( files . IsNullOrEmpty ( ) )
1016+ return 0 ;
1017+
1018+ var logIndexes = files . Where ( file =>
1019+ {
1020+ var fileName = ParseFileNameByPath ( file ) ;
1021+ return fileName [ 0 ] . IsEqualTo ( id ) ;
1022+ } ) . Select ( file =>
1023+ {
1024+ var fileName = ParseFileNameByPath ( file ) ;
1025+ return int . Parse ( fileName [ 1 ] ) ;
1026+ } ) . ToList ( ) ;
1027+
1028+ return logIndexes . IsNullOrEmpty ( ) ? 0 : logIndexes . Max ( ) + 1 ;
1029+ }
1030+
1031+ private string [ ] ParseFileNameByPath ( string path , string separator = "." )
1032+ {
1033+ var name = path . Split ( Path . DirectorySeparatorChar ) . Last ( ) ;
1034+ return name . Split ( separator ) ;
1035+ }
10111036 #endregion
10121037}
0 commit comments