Skip to content

Commit 1116b1c

Browse files
claudiamurialdoclaudiamurialdo
andauthored
ChatMessages parameter in Agent.Call was not accumulating messages (#1212)
* Apply fix on #1208 to CallAgent * Add default ToJson implementation for ExternalCollections, enabling proper ToJson behavior for ChatMessage collections. * Remove identation. --------- Co-authored-by: claudiamurialdo <c.murialdo@globant.com>
1 parent 69db380 commit 1116b1c

File tree

5 files changed

+367
-6
lines changed

5 files changed

+367
-6
lines changed

dotnet/src/dotnetcore/Providers/AI/Model/GXAgent.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ protected string CallAgent(string assistant, GXProperties gxproperties, IList ch
4242
{
4343
GXLogging.Debug(log, "Calling Agent: ", assistant);
4444

45-
List<ChatMessage> chatMessagesList = chatMessages!=null ? chatMessages.Cast<ChatMessage>().ToList() :null;
46-
ChatCompletionResult chatCompletion = AgentService.AgentHandlerInstance.CallAgent(assistant, chatMessagesList, gxproperties, context).GetAwaiter().GetResult();
45+
ChatCompletionResult chatCompletion = AgentService.AgentHandlerInstance.CallAgent(assistant, chatMessages, gxproperties, context).GetAwaiter().GetResult();
4746

4847
if (chatCompletion != null && chatCompletion.Choices != null)
4948
{
@@ -54,8 +53,8 @@ protected string CallAgent(string assistant, GXProperties gxproperties, IList ch
5453
case ChatCompletionResult.FINISH_REASON_STOP:
5554
return choice.Message.Content;
5655
case ChatCompletionResult.FINISH_REASON_TOOL_CALLS:
57-
chatMessagesList.Add(choice.Message);
58-
return ProcessChatResponse(choice, stream, assistant, gxproperties, chatMessagesList, result);
56+
chatMessages.Add(choice.Message);
57+
return ProcessChatResponse(choice, stream, assistant, gxproperties, chatMessages, result);
5958
}
6059
}
6160
}

dotnet/src/dotnetcore/Providers/AI/Services/AgentService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ static string AddChatToUrl(string url)
5151
uriBuilder.Path += "chat";
5252
return uriBuilder.Uri.ToString();
5353
}
54-
internal async Task<ChatCompletionResult> CallAgent(string assistant, List<Chat.ChatMessage> messages, GXProperties properties, IGxContext context)
54+
internal async Task<ChatCompletionResult> CallAgent(string assistant, IList messages, GXProperties properties, IGxContext context)
5555
{
5656
try
5757
{

dotnet/src/dotnetframework/GxClasses/Domain/GxCollections.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2708,7 +2708,15 @@ public void AddObjectProperty(string name, object prop)
27082708
}
27092709
public string ToJSonString()
27102710
{
2711+
#if NETCORE
2712+
string json = JSONHelper.DefaultSerialize(ExternalInstance);
2713+
if (json!=null)
2714+
return json;
2715+
else
2716+
return new JArray().ToString();
2717+
#else
27112718
return string.Empty;
2719+
#endif
27122720
}
27132721
public string ToJSonString(bool includeState)
27142722
{

dotnet/src/dotnetframework/GxClasses/Helpers/JSONHelper.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,15 @@ internal override string WriteNullableJSON(Dictionary<string, object> kbObject)
128128
});
129129
}
130130

131+
internal override string DefaultSerialize<T>(T value)
132+
{
133+
if (value != null)
134+
{
135+
return JsonSerializer.Serialize(value);
136+
}
137+
return null;
138+
}
139+
131140
internal override bool IsJsonString(string jobject)
132141
{
133142
try
@@ -229,6 +238,9 @@ internal static GXJsonSerializer Instance
229238
internal abstract string WriteJSON<T>(T kbObject) where T : class;
230239

231240
internal abstract string WriteNullableJSON(Dictionary<string, object> kbObject);
241+
#if NETCORE
242+
internal abstract string DefaultSerialize<T>(T value) where T : class;
243+
#endif
232244
}
233245

234246
public class JSONHelper
@@ -328,7 +340,20 @@ public static string Serialize<T>(T kbObject) where T : class
328340
{
329341
return Serialize<T>(kbObject, Encoding.UTF8);
330342
}
331-
343+
#if NETCORE
344+
public static string DefaultSerialize<T>(T value) where T : class
345+
{
346+
try
347+
{
348+
return GXJsonSerializer.Instance.DefaultSerialize<T>(value);
349+
}
350+
catch (Exception ex)
351+
{
352+
GXLogging.Error(log, "DefaultSerialize error ", ex);
353+
return null;
354+
}
355+
}
356+
#endif
332357
public static string Serialize<T>(T kbObject, Encoding encoding) where T : class
333358
{
334359
return Serialize<T>(kbObject, encoding, null);

0 commit comments

Comments
 (0)