refine fetching agent function

This commit is contained in:
Jicheng Lu 2024-06-26 11:59:09 -05:00
parent 4fe56d4373
commit 5fc8238785
5 changed files with 48 additions and 26 deletions

View file

@ -208,7 +208,7 @@ namespace BotSharp.Core.Repository
var (agent, agentFile) = GetAgentFromFile(agentId);
if (agent == null) return;
var templateDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "templates");
var templateDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, AGENT_TEMPLATES_FOLDER);
if (!Directory.Exists(templateDir))
{
@ -234,7 +234,7 @@ namespace BotSharp.Core.Repository
var (agent, agentFile) = GetAgentFromFile(agentId);
if (agent == null) return;
var responseDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "responses");
var responseDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, AGENT_RESPONSES_FOLDER);
if (!Directory.Exists(responseDir))
{
Directory.CreateDirectory(responseDir);
@ -305,7 +305,7 @@ namespace BotSharp.Core.Repository
public List<string> GetAgentResponses(string agentId, string prefix, string intent)
{
var responses = new List<string>();
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "responses");
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, AGENT_RESPONSES_FOLDER);
if (!Directory.Exists(dir)) return responses;
foreach (var file in Directory.GetFiles(dir))
@ -399,7 +399,7 @@ namespace BotSharp.Core.Repository
public string GetAgentTemplate(string agentId, string templateName)
{
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "templates");
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, AGENT_TEMPLATES_FOLDER);
if (!Directory.Exists(dir)) return string.Empty;
foreach (var file in Directory.GetFiles(dir))
@ -421,7 +421,7 @@ namespace BotSharp.Core.Repository
{
if (string.IsNullOrEmpty(agentId) || template == null) return false;
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "templates");
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, AGENT_TEMPLATES_FOLDER);
if (!Directory.Exists(dir)) return false;
var foundTemplate = Directory.GetFiles(dir).FirstOrDefault(f =>
@ -460,7 +460,7 @@ namespace BotSharp.Core.Repository
if (string.IsNullOrEmpty(agentDir)) return false;
// Delete agent user relationships
var usersDir = Path.Combine(_dbSettings.FileRepository, "users");
var usersDir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER);
if (Directory.Exists(usersDir))
{
foreach (var userDir in Directory.GetDirectories(usersDir))

View file

@ -20,7 +20,7 @@ public partial class FileRepository
foreach (var agentDir in Directory.GetDirectories(dir))
{
var taskDir = Path.Combine(agentDir, "tasks");
var taskDir = Path.Combine(agentDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir)) continue;
var agentId = agentDir.Split(Path.DirectorySeparatorChar).Last();
@ -84,7 +84,7 @@ public partial class FileRepository
var agentDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId);
if (!Directory.Exists(agentDir)) return null;
var taskDir = Path.Combine(agentDir, "tasks");
var taskDir = Path.Combine(agentDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir)) return null;
var taskFile = FindTaskFileById(taskDir, taskId);
@ -106,7 +106,7 @@ public partial class FileRepository
var agentDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, task.AgentId);
if (!Directory.Exists(agentDir)) return;
var taskDir = Path.Combine(agentDir, "tasks");
var taskDir = Path.Combine(agentDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir))
{
Directory.CreateDirectory(taskDir);
@ -140,7 +140,7 @@ public partial class FileRepository
var agentDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, task.AgentId);
if (!Directory.Exists(agentDir)) return;
var taskDir = Path.Combine(agentDir, "tasks");
var taskDir = Path.Combine(agentDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir)) return;
var taskFile = FindTaskFileById(taskDir, task.Id);
@ -195,7 +195,7 @@ public partial class FileRepository
var agentDir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId);
if (!Directory.Exists(agentDir) || taskIds.IsNullOrEmpty()) return false;
var taskDir = Path.Combine(agentDir, "tasks");
var taskDir = Path.Combine(agentDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir)) return false;
var deletedTasks = new List<string>();

View file

@ -51,7 +51,7 @@ public partial class FileRepository
{
foreach (var user in _users)
{
var dir = Path.Combine(_dbSettings.FileRepository, "users", user.Id);
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER, user.Id);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
@ -69,7 +69,7 @@ public partial class FileRepository
var agents = _userAgents.Where(x => x.UserId == uid).ToList();
if (agents.Any())
{
var dir = Path.Combine(_dbSettings.FileRepository, "users", uid);
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER, uid);
var path = Path.Combine(dir, USER_AGENT_FILE);
File.WriteAllText(path, JsonSerializer.Serialize(agents, _options));
}

View file

@ -25,12 +25,12 @@ public partial class FileRepository
{
var userId = Guid.NewGuid().ToString();
user.Id = userId;
var dir = Path.Combine(_dbSettings.FileRepository, "users", userId);
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER, userId);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var path = Path.Combine(dir, "user.json");
var path = Path.Combine(dir, USER_FILE);
File.WriteAllText(path, JsonSerializer.Serialize(user, _options));
}
@ -38,8 +38,8 @@ public partial class FileRepository
{
var user = GetUserById(userId);
user.Verified = true;
var dir = Path.Combine(_dbSettings.FileRepository, "users", user.Id);
var path = Path.Combine(dir, "user.json");
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER, user.Id);
var path = Path.Combine(dir, USER_FILE);
File.WriteAllText(path, JsonSerializer.Serialize(user, _options));
}
}

View file

@ -36,6 +36,11 @@ public partial class FileRepository : IBotSharpRepository
private const string AGENT_TASK_PREFIX = "#metadata";
private const string AGENT_TASK_SUFFIX = "/metadata";
private const string TRANSLATION_MEMORY_FILE = "memory.json";
private const string AGENT_FUNCTIONS_FOLDER = "functions";
private const string AGENT_TEMPLATES_FOLDER = "templates";
private const string AGENT_RESPONSES_FOLDER = "responses";
private const string AGENT_TASKS_FOLDER = "tasks";
private const string USERS_FOLDER = "users";
public FileRepository(
IServiceProvider services,
@ -79,7 +84,7 @@ public partial class FileRepository : IBotSharpRepository
return _users.AsQueryable();
}
var dir = Path.Combine(_dbSettings.FileRepository, "users");
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER);
_users = new List<User>();
if (Directory.Exists(dir))
{
@ -142,7 +147,7 @@ public partial class FileRepository : IBotSharpRepository
return _userAgents.AsQueryable();
}
var dir = Path.Combine(_dbSettings.FileRepository, "users");
var dir = Path.Combine(_dbSettings.FileRepository, USERS_FOLDER);
_userAgents = new List<UserAgent>();
if (Directory.Exists(dir))
{
@ -194,11 +199,28 @@ public partial class FileRepository : IBotSharpRepository
private List<FunctionDef> FetchFunctions(string fileDir)
{
var file = Path.Combine(fileDir, AGENT_FUNCTIONS_FILE);
if (!File.Exists(file)) return new List<FunctionDef>();
var functions = new List<FunctionDef>();
var functionDir = Path.Combine(fileDir, AGENT_FUNCTIONS_FOLDER);
var functionsJson = File.ReadAllText(file);
var functions = JsonSerializer.Deserialize<List<FunctionDef>>(functionsJson, _options);
if (!Directory.Exists(functionDir)) return functions;
foreach ( var file in Directory.GetFiles(functionDir))
{
try
{
var extension = Path.GetExtension(file).Substring(1);
if (extension != "json") continue;
var json = File.ReadAllText(file);
var function = JsonSerializer.Deserialize<FunctionDef>(json, _options);
functions.Add(function);
}
catch
{
continue;
}
}
return functions;
}
@ -213,7 +235,7 @@ public partial class FileRepository : IBotSharpRepository
private List<AgentTemplate> FetchTemplates(string fileDir)
{
var templates = new List<AgentTemplate>();
var templateDir = Path.Combine(fileDir, "templates");
var templateDir = Path.Combine(fileDir, AGENT_TEMPLATES_FOLDER);
if (!Directory.Exists(templateDir)) return templates;
foreach (var file in Directory.GetFiles(templateDir))
@ -235,7 +257,7 @@ public partial class FileRepository : IBotSharpRepository
private List<AgentTask> FetchTasks(string fileDir)
{
var tasks = new List<AgentTask>();
var taskDir = Path.Combine(fileDir, "tasks");
var taskDir = Path.Combine(fileDir, AGENT_TASKS_FOLDER);
if (!Directory.Exists(taskDir)) return tasks;
foreach (var file in Directory.GetFiles(taskDir))
@ -252,7 +274,7 @@ public partial class FileRepository : IBotSharpRepository
private List<AgentResponse> FetchResponses(string fileDir)
{
var responses = new List<AgentResponse>();
var responseDir = Path.Combine(fileDir, "responses");
var responseDir = Path.Combine(fileDir, AGENT_RESPONSES_FOLDER);
if (!Directory.Exists(responseDir)) return responses;
foreach (var file in Directory.GetFiles(responseDir))