add message label

This commit is contained in:
Jicheng Lu 2025-09-08 14:29:08 -05:00
parent bf3915c453
commit 7ea8d84f74
10 changed files with 37 additions and 14 deletions

View file

@ -36,6 +36,10 @@ public class ChatResponseDto : InstructResult
[JsonPropertyName("indication")]
public string? Indication { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("message_label")]
public string? MessageLabel { get; set; }
[JsonPropertyName("has_message_files")]
public bool HasMessageFiles { get; set; }

View file

@ -98,6 +98,10 @@ public class DialogMetaData
[JsonPropertyName("message_type")]
public string MessageType { get; set; } = default!;
[JsonPropertyName("message_label")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? MessageLabel { get; set; }
[JsonPropertyName("function_name")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? FunctionName { get; set; }

View file

@ -19,6 +19,11 @@ public class RoleDialogModel : ITrackableMessage
/// </summary>
public string MessageType { get; set; } = MessageTypeName.Plain;
/// <summary>
/// The message label
/// </summary>
public string? MessageLabel { get; set; }
/// <summary>
/// user, system, assistant, function
/// </summary>
@ -167,6 +172,7 @@ public class RoleDialogModel : ITrackableMessage
CurrentAgentId = source.CurrentAgentId,
MessageId = source.MessageId,
MessageType = source.MessageType,
MessageLabel = source.MessageLabel,
FunctionArgs = source.FunctionArgs,
FunctionName = source.FunctionName,
ToolCallId = source.ToolCallId,

View file

@ -1,4 +1,3 @@
using BotSharp.Abstraction.Conversations.Models;
using BotSharp.Abstraction.Messaging;
using BotSharp.Abstraction.Messaging.Models.RichContent;
using BotSharp.Abstraction.Options;
@ -67,11 +66,7 @@ public class ConversationStorage : IConversationStorage
var secondaryContent = dialog.SecondaryContent;
var payload = string.IsNullOrEmpty(dialog.Payload) ? null : dialog.Payload;
var role = meta.Role;
var currentAgentId = meta.AgentId;
var messageId = meta.MessageId;
var messageType = meta.MessageType;
var senderId = role == AgentRole.Function ? currentAgentId : meta.SenderId;
var createdAt = meta.CreatedTime;
var senderId = role == AgentRole.Function ? meta?.AgentId : meta?.SenderId;
var richContent = !string.IsNullOrEmpty(dialog.RichContent) ?
JsonSerializer.Deserialize<RichContent<IRichMessage>>(dialog.RichContent, _options.JsonSerializerOptions) : null;
var secondaryRichContent = !string.IsNullOrEmpty(dialog.SecondaryRichContent) ?
@ -79,14 +74,15 @@ public class ConversationStorage : IConversationStorage
var record = new RoleDialogModel(role, content)
{
CurrentAgentId = currentAgentId,
MessageId = messageId,
MessageType = messageType,
CreatedAt = createdAt,
CurrentAgentId = meta?.AgentId ?? string.Empty,
MessageId = meta?.MessageId ?? string.Empty,
MessageType = meta?.MessageType ?? string.Empty,
MessageLabel = meta?.MessageLabel,
CreatedAt = meta?.CreatedTime ?? default,
SenderId = senderId,
FunctionName = meta.FunctionName,
FunctionArgs = meta.FunctionArgs,
ToolCallId = meta.ToolCallId,
FunctionName = meta?.FunctionName,
FunctionArgs = meta?.FunctionArgs,
ToolCallId = meta?.ToolCallId,
RichContent = richContent,
SecondaryContent = secondaryContent,
SecondaryRichContent = secondaryRichContent,
@ -120,6 +116,7 @@ public class ConversationStorage : IConversationStorage
AgentId = dialog.CurrentAgentId,
MessageId = dialog.MessageId,
MessageType = dialog.MessageType,
MessageLabel = dialog.MessageLabel,
FunctionName = dialog.FunctionName,
FunctionArgs = dialog.FunctionArgs,
ToolCallId = dialog.ToolCallId,
@ -146,6 +143,7 @@ public class ConversationStorage : IConversationStorage
AgentId = dialog.CurrentAgentId,
MessageId = dialog.MessageId,
MessageType = dialog.MessageType,
MessageLabel = dialog.MessageLabel,
SenderId = dialog.SenderId,
FunctionName = dialog.FunctionName,
CreatedTime = dialog.CreatedAt

View file

@ -59,6 +59,7 @@ public partial class RoutingService
message.Indication = response.Indication;
message.CurrentAgentId = agent.Id;
message.IsStreaming = response.IsStreaming;
message.MessageLabel = response.MessageLabel;
message.AdditionalMessageWrapper = null;
await InvokeFunction(message, dialogs, options);
@ -75,6 +76,7 @@ public partial class RoutingService
message = RoleDialogModel.From(message, role: AgentRole.Assistant, content: response.Content);
message.CurrentAgentId = agent.Id;
message.IsStreaming = response.IsStreaming;
message.MessageLabel = response.MessageLabel;
message.AdditionalMessageWrapper = null;
dialogs.Add(message);
Context.SetDialogs(dialogs);

View file

@ -65,6 +65,7 @@ public partial class RoutingService
message.StopCompletion = clonedMessage.StopCompletion;
message.RichContent = clonedMessage.RichContent;
message.Data = clonedMessage.Data;
message.MessageLabel = clonedMessage.MessageLabel;
message.AdditionalMessageWrapper = clonedMessage.AdditionalMessageWrapper;
}
catch (JsonException ex)

View file

@ -109,6 +109,7 @@ public class ConversationController : ControllerBase
{
ConversationId = conversationId,
MessageId = message.MessageId,
MessageLabel = message.MessageLabel,
CreatedAt = message.CreatedAt,
Text = !string.IsNullOrEmpty(message.SecondaryContent) ? message.SecondaryContent : message.Content,
Data = message.Data,
@ -124,6 +125,7 @@ public class ConversationController : ControllerBase
{
ConversationId = conversationId,
MessageId = message.MessageId,
MessageLabel = message.MessageLabel,
CreatedAt = message.CreatedAt,
Text = !string.IsNullOrEmpty(message.SecondaryContent) ? message.SecondaryContent : message.Content,
Function = message.FunctionName,

View file

@ -79,8 +79,9 @@ public class PlotChartFn : IFunctionCallback
new(AgentRole.Assistant, obj.ReportSummary)
{
MessageId = message.MessageId,
CurrentAgentId = message.CurrentAgentId,
MessageLabel = "chart_report_summary",
Indication = "Summarizing",
CurrentAgentId = message.CurrentAgentId,
FunctionName = message.FunctionName,
FunctionArgs = message.FunctionArgs,
CreatedAt = DateTime.UtcNow

View file

@ -107,6 +107,7 @@ public class ChatHubConversationHook : ConversationHookBase
{
ConversationId = conv.ConversationId,
MessageId = message.MessageId,
MessageLabel = message.MessageLabel,
Text = !string.IsNullOrEmpty(message.SecondaryContent) ? message.SecondaryContent : message.Content,
Function = message.FunctionName,
RichContent = message.SecondaryRichContent ?? message.RichContent,
@ -139,6 +140,7 @@ public class ChatHubConversationHook : ConversationHookBase
{
ConversationId = conv.ConversationId,
MessageId = item.MessageId,
MessageLabel = item.MessageLabel,
Indication = item.Indication,
Sender = sender
};

View file

@ -46,6 +46,7 @@ public class DialogMetaDataMongoElement
public string AgentId { get; set; } = default!;
public string MessageId { get; set; } = default!;
public string MessageType { get; set; } = default!;
public string? MessageLabel { get; set; }
public string? FunctionName { get; set; }
public string? FunctionArgs { get; set; }
public string? ToolCallId { get; set; }
@ -60,6 +61,7 @@ public class DialogMetaDataMongoElement
AgentId = meta.AgentId,
MessageId = meta.MessageId,
MessageType = meta.MessageType,
MessageLabel = meta.MessageLabel,
FunctionName = meta.FunctionName,
FunctionArgs = meta.FunctionArgs,
ToolCallId = meta.ToolCallId,
@ -76,6 +78,7 @@ public class DialogMetaDataMongoElement
AgentId = meta.AgentId,
MessageId = meta.MessageId,
MessageType = meta.MessageType,
MessageLabel = meta.MessageLabel,
FunctionName = meta.FunctionName,
FunctionArgs = meta.FunctionArgs,
ToolCallId = meta.ToolCallId,