Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using BotSharp.Abstraction.Loggers.Models;
using BotSharp.Abstraction.Repositories.Filters;

namespace BotSharp.Abstraction.Conversations;
Expand Down Expand Up @@ -53,7 +52,7 @@ Task<bool> SendMessage(string agentId,
/// <returns></returns>
Task UpdateBreakpoint(bool resetStates = false, string? reason = null, params string[] excludedStates);

Task<string> GetConversationSummary(IEnumerable<string> conversationId);
Task<string> GetConversationSummary(ConversationSummaryModel model);

Task<Conversation> GetConversationRecordOrCreateNew(string agentId);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;

namespace BotSharp.Abstraction.Models;

public class ConversationSummaryModel
{
[JsonPropertyName("conversation_ids")]
public IEnumerable<string> ConversationIds { get; set; } = new List<string>();

private string _agentId;

[JsonPropertyName("agent_id")]
public string AgentId
{
get => _agentId ?? BuiltInAgentId.AIAssistant;
set => _agentId = value;
}

private string _templateName;

[JsonPropertyName("template_name")]
public string TemplateName
{
get => _templateName ?? "conversation.summary";
set => _templateName = value;
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
using BotSharp.Abstraction.Conversations.Enums;
using BotSharp.Abstraction.MLTasks;
using BotSharp.Abstraction.Models;
using BotSharp.Abstraction.Templating;

namespace BotSharp.Core.Conversations.Services;

public partial class ConversationService
{
public async Task<string> GetConversationSummary(IEnumerable<string> conversationIds)
public async Task<string> GetConversationSummary(ConversationSummaryModel model)
{
if (conversationIds.IsNullOrEmpty()) return string.Empty;
if (model.ConversationIds.IsNullOrEmpty()) return string.Empty;

var routing = _services.GetRequiredService<IRoutingService>();
var agentService = _services.GetRequiredService<IAgentService>();

var contents = new List<string>();
foreach ( var conversationId in conversationIds)
foreach (var conversationId in model.ConversationIds)
{
if (string.IsNullOrEmpty(conversationId)) continue;

Expand All @@ -31,16 +32,16 @@ public async Task<string> GetConversationSummary(IEnumerable<string> conversatio

if (contents.IsNullOrEmpty()) return string.Empty;

var router = await agentService.LoadAgent(AIAssistant);
var prompt = GetPrompt(router, contents);
var summary = await Summarize(router, prompt);
var agent = await agentService.LoadAgent(model.AgentId);
var prompt = GetPrompt(agent, model.TemplateName, contents);
var summary = await Summarize(agent, prompt);

return summary;
}

private string GetPrompt(Agent agent, List<string> contents)
private string GetPrompt(Agent agent, string templateName, List<string> contents)
{
var template = agent.Templates.First(x => x.Name == "conversation.summary").Content;
var template = agent.Templates.First(x => x.Name == templateName).Content;
var render = _services.GetRequiredService<ITemplateRender>();

var texts = new List<string>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public async Task<IEnumerable<ChatResponseModel>> GetDialogs([FromRoute] string
public async Task<string> GetConversationSummary([FromBody] ConversationSummaryModel input)
{
var service = _services.GetRequiredService<IConversationService>();
return await service.GetConversationSummary(input.ConversationIds);
return await service.GetConversationSummary(input);
}

[HttpPut("/conversation/{conversationId}/update-title")]
Expand Down

This file was deleted.

Loading