Browse Source

feat: Reset ConversationId type to Guid

pull/1421/head
colin 3 weeks ago
parent
commit
f97d5171dc
  1. 8
      aspnet-core/modules/ai/LINGYUN.Abp.AI.Agent/LINGYUN/Abp/AI/Agent/AgentService.cs
  2. 3
      aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Chats/IChatMessageStore.cs
  3. 2
      aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Chats/InMemoryChatMessageStore.cs
  4. 4
      aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Models/ChatMessage.cs
  5. 7
      aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Models/TokenUsageInfo.cs
  6. 1
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain.Shared/LINGYUN/Abp/AIManagement/Chats/ChatMessageRecordConsts.cs
  7. 7
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ChatMessageRecord.cs
  8. 2
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ChatMessageStore.cs
  9. 2
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ITextChatMessageRecordRepository.cs
  10. 2
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.EntityFrameworkCore/LINGYUN/Abp/AIManagement/EntityFrameworkCore/AIManagementDbContextModelBuilderExtensions.cs
  11. 2
      aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.EntityFrameworkCore/LINGYUN/Abp/AIManagement/EntityFrameworkCore/EfCoreTextChatMessageRecordRepository.cs

8
aspnet-core/modules/ai/LINGYUN.Abp.AI.Agent/LINGYUN/Abp/AI/Agent/AgentService.cs

@ -54,8 +54,10 @@ public class AgentService : IAgentService, IScopedDependency
tokenUsageInfo.WithConversationId(message.ConversationId);
tokenUsageInfo.WithMessageId(messageId);
#if DEBUG
Console.WriteLine();
Console.WriteLine($"消耗Token: {tokenUsageInfo}");
Console.WriteLine(tokenUsageInfo);
#endif
await StoreTokenUsageInfo(tokenUsageInfo);
}
@ -64,9 +66,9 @@ public class AgentService : IAgentService, IScopedDependency
{
var messages = new List<AIChatMessage>();
if (!message.ConversationId.IsNullOrWhiteSpace())
if (message.ConversationId.HasValue)
{
var historyMessages = await _chatMessageStore.GetHistoryMessagesAsync(message.ConversationId);
var historyMessages = await _chatMessageStore.GetHistoryMessagesAsync(message.ConversationId.Value);
foreach (var chatMessage in historyMessages)
{

3
aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Chats/IChatMessageStore.cs

@ -1,4 +1,5 @@
using LINGYUN.Abp.AI.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
@ -7,5 +8,5 @@ public interface IChatMessageStore
{
Task<string> SaveMessageAsync(ChatMessage message);
Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(string conversationId);
Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(Guid conversationId);
}

2
aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Chats/InMemoryChatMessageStore.cs

@ -14,7 +14,7 @@ public class InMemoryChatMessageStore : IChatMessageStore
{
private static readonly ConcurrentDictionary<string, List<ChatMessage>> _userMessageCache = new ConcurrentDictionary<string, List<ChatMessage>>();
public Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(string conversationId)
public Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(Guid conversationId)
{
var messages = new List<ChatMessage>();

4
aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Models/ChatMessage.cs

@ -8,7 +8,7 @@ public abstract class ChatMessage
public string? Id { get; private set; }
public string? ConversationId { get; private set; }
public Guid? ConversationId { get; private set; }
public string? ReplyMessage { get; private set; }
@ -33,7 +33,7 @@ public abstract class ChatMessage
return this;
}
public virtual ChatMessage WithConversationId(string conversationId)
public virtual ChatMessage WithConversationId(Guid conversationId)
{
ConversationId = conversationId;
return this;

7
aspnet-core/modules/ai/LINGYUN.Abp.AI.Core/LINGYUN/Abp/AI/Models/TokenUsageInfo.cs

@ -1,11 +1,12 @@
using System.Text;
using System;
using System.Text;
namespace LINGYUN.Abp.AI.Models;
public class TokenUsageInfo
{
public string Workspace { get; }
public string? MessageId { get; private set; }
public string? ConversationId { get; private set; }
public Guid? ConversationId { get; private set; }
public long? InputTokenCount { get; set; }
public long? OutputTokenCount { get; set; }
public long? TotalTokenCount { get; set; }
@ -21,7 +22,7 @@ public class TokenUsageInfo
return this;
}
public virtual TokenUsageInfo WithConversationId(string? conversationId)
public virtual TokenUsageInfo WithConversationId(Guid? conversationId)
{
ConversationId = conversationId;
return this;

1
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain.Shared/LINGYUN/Abp/AIManagement/Chats/ChatMessageRecordConsts.cs

@ -1,6 +1,5 @@
namespace LINGYUN.Abp.AIManagement.Chats;
public static class ChatMessageRecordConsts
{
public static int MaxConversationIdLength { get; set; } = 64;
public static int MaxChatRoleLength { get; set; } = 20;
}

7
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ChatMessageRecord.cs

@ -1,6 +1,5 @@
using Microsoft.Extensions.AI;
using System;
using Volo.Abp;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
@ -16,7 +15,7 @@ public abstract class ChatMessageRecord : AuditedAggregateRoot<Guid>, IMultiTena
public DateTime CreatedAt { get; private set; }
public string? ConversationId { get; private set; }
public Guid? ConversationId { get; private set; }
public string? ReplyMessage { get; private set; }
@ -42,9 +41,9 @@ public abstract class ChatMessageRecord : AuditedAggregateRoot<Guid>, IMultiTena
TenantId = tenantId;
}
public virtual ChatMessageRecord SetConversationId(string conversationId)
public virtual ChatMessageRecord SetConversationId(Guid conversationId)
{
ConversationId = Check.NotNullOrWhiteSpace(conversationId, nameof(conversationId), ChatMessageRecordConsts.MaxConversationIdLength);
ConversationId = conversationId;
return this;
}

2
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ChatMessageStore.cs

@ -35,7 +35,7 @@ public class ChatMessageStore : IChatMessageStore, ITransientDependency
_messageRecordRepository = messageRecordRepository;
}
public async virtual Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(string conversationId)
public async virtual Task<IEnumerable<ChatMessage>> GetHistoryMessagesAsync(Guid conversationId)
{
var maxLatestHistoryMessagesToKeep = await _settingProvider.GetAsync(
AIManagementSettingNames.ChatMessage.MaxLatestHistoryMessagesToKeep, 0);

2
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN/Abp/AIManagement/Chats/ITextChatMessageRecordRepository.cs

@ -8,7 +8,7 @@ namespace LINGYUN.Abp.AIManagement.Chats;
public interface ITextChatMessageRecordRepository : IBasicRepository<TextChatMessageRecord, Guid>
{
Task<IEnumerable<TextChatMessageRecord>> GetHistoryMessagesAsync(
string conversationId,
Guid conversationId,
int maxResultCount = 0,
CancellationToken cancellationToken = default);
}

2
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.EntityFrameworkCore/LINGYUN/Abp/AIManagement/EntityFrameworkCore/AIManagementDbContextModelBuilderExtensions.cs

@ -27,8 +27,6 @@ public static class AIManagementDbContextModelBuilderExtensions
.HasMaxLength(ChatMessageRecordConsts.MaxChatRoleLength)
.HasConversion(new ChatRoleValueConverter())
.IsRequired();
b.Property(x => x.ConversationId)
.HasMaxLength(ChatMessageRecordConsts.MaxConversationIdLength);
b.Property(x => x.Content)
.HasMaxLength(TextChatMessageRecordConsts.MaxContentLength)
.IsRequired();

2
aspnet-core/modules/ai/LINGYUN.Abp.AIManagement.EntityFrameworkCore/LINGYUN/Abp/AIManagement/EntityFrameworkCore/EfCoreTextChatMessageRecordRepository.cs

@ -18,7 +18,7 @@ public class EfCoreTextChatMessageRecordRepository : EfCoreRepository<IAIManagem
}
public async virtual Task<IEnumerable<TextChatMessageRecord>> GetHistoryMessagesAsync(
string conversationId,
Guid conversationId,
int maxResultCount = 0,
CancellationToken cancellationToken = default)
{

Loading…
Cancel
Save