Merge pull request #1153 from iceljc/master

add message label
This commit is contained in:
iceljc 2025-09-08 14:33:39 -05:00 committed by GitHub
commit ae2b5e2287
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 37 additions and 14 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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