BotSharp/src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.RefreshAgents.cs

56 lines
1.9 KiB
C#
Raw Normal View History

2023-10-17 20:29:40 +00:00
using BotSharp.Abstraction.Agents.Models;
2023-11-22 00:16:45 +00:00
using BotSharp.Abstraction.Conversations.Models;
2023-10-17 20:29:40 +00:00
using BotSharp.Abstraction.Repositories;
using System.IO;
namespace BotSharp.Core.Agents.Services;
public partial class AgentService
{
public async Task RefreshAgents()
{
var isDeleted = _db.DeleteAgents();
if (!isDeleted) return;
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
var agentDir = Path.Combine(dbSettings.FileRepository, _agentSettings.DataDir);
2023-11-14 01:25:25 +00:00
var user = _db.GetUserById(_user.Id);
2023-10-17 20:29:40 +00:00
var agents = new List<Agent>();
var userAgents = new List<UserAgent>();
foreach (var dir in Directory.GetDirectories(agentDir))
{
var agentJson = File.ReadAllText(Path.Combine(dir, "agent.json"));
var agent = JsonSerializer.Deserialize<Agent>(agentJson, _options);
if (agent == null) continue;
var functions = FetchFunctionsFromFile(dir);
var instruction = FetchInstructionFromFile(dir);
var responses = FetchResponsesFromFile(dir);
var templates = FetchTemplatesFromFile(dir);
var samples = FetchSamplesFromFile(dir);
2023-10-17 20:29:40 +00:00
agent.SetInstruction(instruction)
.SetTemplates(templates)
.SetFunctions(functions)
.SetResponses(responses)
.SetSamples(samples);
2023-10-17 20:29:40 +00:00
var userAgent = new UserAgent
{
Id = Guid.NewGuid().ToString(),
UserId = user.Id,
AgentId = agent.Id,
2023-11-14 05:37:04 +00:00
Editable = false,
2023-10-17 20:29:40 +00:00
CreatedTime = DateTime.UtcNow,
UpdatedTime = DateTime.UtcNow
};
agents.Add(agent);
userAgents.Add(userAgent);
}
_db.BulkInsertAgents(agents);
_db.BulkInsertUserAgents(userAgents);
}
}