diff --git a/BotSharp.WebHost/Settings/ArticulateAi.json b/BotSharp.WebHost/Settings/ArticulateAi.json index 3380ac68..0ff12242 100644 --- a/BotSharp.WebHost/Settings/ArticulateAi.json +++ b/BotSharp.WebHost/Settings/ArticulateAi.json @@ -15,7 +15,7 @@ }, "BotSharpIntentClassifier": { - "classifer": "SVMClassifier" + "classifer": "NaiveBayesClassifier" }, "BotSharpTagger": { diff --git a/Platform.Articulate/ArticulateAi.cs b/Platform.Articulate/ArticulateAi.cs index 1f5292ab..9e17ec16 100644 --- a/Platform.Articulate/ArticulateAi.cs +++ b/Platform.Articulate/ArticulateAi.cs @@ -28,7 +28,7 @@ namespace Platform.Articulate public class ArticulateAi : PlatformBuilderBase, IPlatformBuilder - where TAgent : AgentBase + where TAgent : AgentModel { public DialogRequestOptions RequestOptions { get; set; } @@ -38,7 +38,7 @@ namespace Platform.Articulate foreach (TAgent agent in results) { - var domain = (agent as AgentModel).Domains.FirstOrDefault(x => x.Id == domainId); + var domain = agent.Domains.FirstOrDefault(x => x.Id == domainId); if (domain != null) { @@ -55,7 +55,7 @@ namespace Platform.Articulate foreach (TAgent agent in results) { - foreach (DomainModel domain in (agent as AgentModel).Domains) + foreach (DomainModel domain in agent.Domains) { var intent = domain.Intents.FirstOrDefault(x => x.Id == intentId); if (intent != null) @@ -72,10 +72,8 @@ namespace Platform.Articulate { var intents = new List(); var allAgents = GetAllAgents(); - foreach (TAgent agt in allAgents) + foreach (TAgent agent in allAgents) { - var agent = agt as AgentModel; - foreach (DomainModel domain in agent.Domains) { foreach (IntentModel intent in domain.Intents) @@ -94,8 +92,7 @@ namespace Platform.Articulate public TrainingCorpus ExtractorCorpus(TAgent agent) { var corpus = new TrainingCorpus(); - var agt = agent as AgentModel; - corpus.Entities = agt.Entities.Select(x => new TrainingEntity + corpus.Entities = agent.Entities.Select(x => new TrainingEntity { Entity = x.EntityName, Values = x.Examples.Select(y => new TrainingEntitySynonym @@ -107,7 +104,7 @@ namespace Platform.Articulate corpus.UserSays = new List>(); - foreach(DomainModel domain in agt.Domains) + foreach(DomainModel domain in agent.Domains) { foreach(IntentModel intent in domain.Intents) { @@ -133,6 +130,13 @@ namespace Platform.Articulate return corpus; } + public override bool SaveAgent(TAgent agent) + { + agent.Status = "Changed"; + agent.LastTraining = DateTime.UtcNow; + return base.SaveAgent(agent); + } + public async Task Train(TAgent agent, TrainingCorpus corpus) { string agentDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Projects", agent.Id); diff --git a/Platform.Articulate/Controllers/AgentController.cs b/Platform.Articulate/Controllers/AgentController.cs index d564c524..a088f89b 100644 --- a/Platform.Articulate/Controllers/AgentController.cs +++ b/Platform.Articulate/Controllers/AgentController.cs @@ -68,7 +68,7 @@ namespace Platform.Articulate.Controllers public AgentModel GetAgentById([FromRoute] string agentId) { var agent = builder.GetAgentById(agentId); - + return agent; } @@ -76,7 +76,7 @@ namespace Platform.Articulate.Controllers public AgentModel GetAgentByName([FromRoute] string agentName) { var agent = builder.GetAgentByName(agentName); - + return agent; } } diff --git a/Platform.Articulate/Models/AgentModel.cs b/Platform.Articulate/Models/AgentModel.cs index e5dbbb81..5a65f27a 100644 --- a/Platform.Articulate/Models/AgentModel.cs +++ b/Platform.Articulate/Models/AgentModel.cs @@ -35,5 +35,7 @@ namespace Platform.Articulate.Models public List Domains { get; set; } public List Entities { get; set; } + + public DateTime LastTraining { get; set; } } } diff --git a/dockerfiles/ARTICULATE.Dockerfile b/dockerfiles/ARTICULATE.Dockerfile new file mode 100644 index 00000000..e4c684f2 --- /dev/null +++ b/dockerfiles/ARTICULATE.Dockerfile @@ -0,0 +1,16 @@ +# stage 1: build +FROM microsoft/dotnet AS botsharp-articulate +WORKDIR /source + +# copies the rest of your code +COPY . . + +# RUN dotnet build +RUN dotnet publish BotSharp.WebHost/BotSharp.WebHost.csproj --configuration ARTICULATE --output /app + +# copy Settings folder +WORKDIR /app +RUN mkdir App_Data/Projects + +# stage 2: run +ENTRYPOINT [ "dotnet", "BotSharp.WebHost.dll" ] diff --git a/dockerfiles/docker-compose-articulateui.yml b/dockerfiles/docker-compose-articulateui.yml index 7f2bb98b..4fd6d49b 100644 --- a/dockerfiles/docker-compose-articulateui.yml +++ b/dockerfiles/docker-compose-articulateui.yml @@ -1,37 +1,16 @@ version: '3.0' services: - api: - image: samtecspg/articulate-api:0.12.1 - ports: ['0.0.0.0:7500:7500'] - networks: ['botsharp-network'] - entrypoint: ['node', 'start.js'] - environment: - - SWAGGER_BASE_PATH - ui: image: samtecspg/articulate-ui:0.12.1 ports: ['0.0.0.0:3000:3000'] networks: ['botsharp-network'] environment: - - rasanluendpoint=http://rasa:5000 - API_URL - - rasa: + + botsharp: image: botsharpdocker/botsharp-rasa:latest ports: ['0.0.0.0:5000:5000'] networks: ['botsharp-network'] - duckling: - image: samtecspg/duckling:0.1.6.0 - ports: ['0.0.0.0:8000:8000'] - networks: ['botsharp-network'] - - redis: - image: redis:4.0.6-alpine - ports: ['0.0.0.0:6379:6379'] - networks: ['botsharp-network'] - command: redis-server --appendonly yes - - networks: {botsharp-network: {}}