Skip to content

Commit a64e873

Browse files
committed
Address feedback
1 parent f9b790b commit a64e873

File tree

1 file changed

+66
-58
lines changed

1 file changed

+66
-58
lines changed

dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIChatMessageExtensions.cs

Lines changed: 66 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -23,80 +23,88 @@ public static IEnumerable<ChatMessage> AsChatMessages(
2323
{
2424
var role = MapChatRole(message.Role);
2525

26-
if (message is AGUIToolMessage toolMessage)
26+
switch (message)
2727
{
28-
object? result;
29-
if (string.IsNullOrEmpty(toolMessage.Content))
28+
case AGUIToolMessage toolMessage:
3029
{
31-
result = toolMessage.Content;
32-
}
33-
else
34-
{
35-
// Try to deserialize as JSON, but fall back to string if it fails
36-
try
30+
object? result;
31+
if (string.IsNullOrEmpty(toolMessage.Content))
3732
{
38-
result = JsonSerializer.Deserialize(toolMessage.Content, AGUIJsonSerializerContext.Default.JsonElement);
33+
result = toolMessage.Content;
3934
}
40-
catch (JsonException)
35+
else
4136
{
42-
result = toolMessage.Content;
37+
// Try to deserialize as JSON, but fall back to string if it fails
38+
try
39+
{
40+
result = JsonSerializer.Deserialize(toolMessage.Content, AGUIJsonSerializerContext.Default.JsonElement);
41+
}
42+
catch (JsonException)
43+
{
44+
result = toolMessage.Content;
45+
}
4346
}
44-
}
4547

46-
yield return new ChatMessage(
47-
role,
48-
[
49-
new FunctionResultContent(
50-
toolMessage.ToolCallId,
51-
result)
52-
]);
53-
}
54-
else if (message is AGUIAssistantMessage assistantMessage && assistantMessage.ToolCalls is { Length: > 0 })
55-
{
56-
var contents = new List<AIContent>();
57-
58-
if (!string.IsNullOrEmpty(assistantMessage.Content))
59-
{
60-
contents.Add(new TextContent(assistantMessage.Content));
48+
yield return new ChatMessage(
49+
role,
50+
[
51+
new FunctionResultContent(
52+
toolMessage.ToolCallId,
53+
result)
54+
]);
55+
break;
6156
}
6257

63-
// Add tool calls
64-
foreach (var toolCall in assistantMessage.ToolCalls)
58+
case AGUIAssistantMessage assistantMessage when assistantMessage.ToolCalls is { Length: > 0 }:
6559
{
66-
Dictionary<string, object?>? arguments = null;
67-
if (!string.IsNullOrEmpty(toolCall.Function.Arguments))
60+
var contents = new List<AIContent>();
61+
62+
if (!string.IsNullOrEmpty(assistantMessage.Content))
6863
{
69-
arguments = (Dictionary<string, object?>?)JsonSerializer.Deserialize(
70-
toolCall.Function.Arguments,
71-
jsonSerializerOptions.GetTypeInfo(typeof(Dictionary<string, object?>)));
64+
contents.Add(new TextContent(assistantMessage.Content));
7265
}
7366

74-
contents.Add(new FunctionCallContent(
75-
toolCall.Id,
76-
toolCall.Function.Name,
77-
arguments));
78-
}
67+
// Add tool calls
68+
foreach (var toolCall in assistantMessage.ToolCalls)
69+
{
70+
Dictionary<string, object?>? arguments = null;
71+
if (!string.IsNullOrEmpty(toolCall.Function.Arguments))
72+
{
73+
arguments = (Dictionary<string, object?>?)JsonSerializer.Deserialize(
74+
toolCall.Function.Arguments,
75+
jsonSerializerOptions.GetTypeInfo(typeof(Dictionary<string, object?>)));
76+
}
77+
78+
contents.Add(new FunctionCallContent(
79+
toolCall.Id,
80+
toolCall.Function.Name,
81+
arguments));
82+
}
7983

80-
yield return new ChatMessage(role, contents)
81-
{
82-
MessageId = message.Id
83-
};
84-
}
85-
else
86-
{
87-
string content = message switch
88-
{
89-
AGUIDeveloperMessage dev => dev.Content,
90-
AGUISystemMessage sys => sys.Content,
91-
AGUIUserMessage user => user.Content,
92-
AGUIAssistantMessage asst => asst.Content,
93-
_ => string.Empty
94-
};
84+
yield return new ChatMessage(role, contents)
85+
{
86+
MessageId = message.Id
87+
};
88+
break;
89+
}
9590

96-
yield return new ChatMessage(role, content)
91+
default:
9792
{
98-
MessageId = message.Id
99-
};
93+
string content = message switch
94+
{
95+
AGUIDeveloperMessage dev => dev.Content,
96+
AGUISystemMessage sys => sys.Content,
97+
AGUIUserMessage user => user.Content,
98+
AGUIAssistantMessage asst => asst.Content,
99+
_ => string.Empty
100+
};
101+
102+
yield return new ChatMessage(role, content)
103+
{
104+
MessageId = message.Id
105+
};
106+
break;
107+
}
100108
}
101109
}
102110
}

0 commit comments

Comments
 (0)