2023-10-17 20:29:40 +00:00
|
|
|
using BotSharp.Abstraction.Agents.Models;
|
|
|
|
|
using BotSharp.Abstraction.Repositories;
|
2024-02-05 20:53:18 +00:00
|
|
|
using BotSharp.Abstraction.Tasks.Models;
|
2023-12-27 15:33:03 +00:00
|
|
|
using Microsoft.Extensions.Caching.Memory;
|
2024-02-05 20:53:18 +00:00
|
|
|
using System.Collections.Generic;
|
2023-10-17 20:29:40 +00:00
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
namespace BotSharp.Core.Agents.Services;
|
|
|
|
|
|
|
|
|
|
public partial class AgentService
|
|
|
|
|
{
|
|
|
|
|
public async Task RefreshAgents()
|
|
|
|
|
{
|
2024-02-05 20:53:18 +00:00
|
|
|
var isAgentDeleted = _db.DeleteAgents();
|
|
|
|
|
var isTaskDeleted = _db.DeleteAgentTasks();
|
|
|
|
|
if (!isAgentDeleted) return;
|
2023-10-17 20:29:40 +00:00
|
|
|
|
|
|
|
|
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
2024-01-16 03:26:18 +00:00
|
|
|
var agentDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
|
|
|
|
|
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>();
|
2024-02-05 20:53:18 +00:00
|
|
|
var agentTasks = new List<AgentTask>();
|
2023-10-17 20:29:40 +00:00
|
|
|
|
|
|
|
|
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);
|
2023-10-19 22:27:51 +00:00
|
|
|
var samples = FetchSamplesFromFile(dir);
|
2023-10-17 20:29:40 +00:00
|
|
|
agent.SetInstruction(instruction)
|
|
|
|
|
.SetTemplates(templates)
|
|
|
|
|
.SetFunctions(functions)
|
2023-10-19 22:27:51 +00:00
|
|
|
.SetResponses(responses)
|
|
|
|
|
.SetSamples(samples);
|
2023-10-17 20:29:40 +00:00
|
|
|
agents.Add(agent);
|
2024-02-05 20:53:18 +00:00
|
|
|
|
|
|
|
|
var userAgent = BuildUserAgent(agent.Id, user.Id);
|
2023-10-17 20:29:40 +00:00
|
|
|
userAgents.Add(userAgent);
|
2024-02-05 20:53:18 +00:00
|
|
|
|
|
|
|
|
var tasks = FetchTasksFromFile(dir);
|
|
|
|
|
agentTasks.AddRange(tasks);
|
2023-10-17 20:29:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_db.BulkInsertAgents(agents);
|
|
|
|
|
_db.BulkInsertUserAgents(userAgents);
|
2024-02-05 20:53:18 +00:00
|
|
|
_db.BulkInsertAgentTasks(agentTasks);
|
2023-12-27 15:33:03 +00:00
|
|
|
|
|
|
|
|
Utilities.ClearCache();
|
2023-10-17 20:29:40 +00:00
|
|
|
}
|
|
|
|
|
}
|