diff --git a/src/main/java/org/studiorailgun/AI.java b/src/main/java/org/studiorailgun/AI.java index c547166..41fba90 100644 --- a/src/main/java/org/studiorailgun/AI.java +++ b/src/main/java/org/studiorailgun/AI.java @@ -12,10 +12,10 @@ public class AI { * Simulates a frame of the ai * @param input The raw input text */ - public static void simFrame(String input){ + public static Quote simFrame(String input){ Quote playerQuote = new Quote(input); //handle ai statement - EvaluationTree.evaluate(Globals.conversation, playerQuote); + return EvaluationTree.evaluate(Globals.conversation, playerQuote); } } diff --git a/src/main/java/org/studiorailgun/Globals.java b/src/main/java/org/studiorailgun/Globals.java index 6b6f6ee..69dbc3b 100644 --- a/src/main/java/org/studiorailgun/Globals.java +++ b/src/main/java/org/studiorailgun/Globals.java @@ -3,7 +3,7 @@ package org.studiorailgun; import java.io.File; import org.studiorailgun.conversation.Conversation; -import org.studiorailgun.conversation.evaluators.GreetingEval; +import org.studiorailgun.conversation.evaluators.greet.GreetingEval; import org.studiorailgun.knowledge.KnowledgeWeb; /** diff --git a/src/main/java/org/studiorailgun/conversation/AgentLoop.java b/src/main/java/org/studiorailgun/conversation/AgentLoop.java index 1ce54e4..dc1ef0b 100644 --- a/src/main/java/org/studiorailgun/conversation/AgentLoop.java +++ b/src/main/java/org/studiorailgun/conversation/AgentLoop.java @@ -35,7 +35,8 @@ public class AgentLoop { if(CommandParser.parseCommands(prompt)){ continue; } - AI.simFrame(prompt); + Quote response = AI.simFrame(prompt); + System.out.println(response.getRaw()); } } } diff --git a/src/main/java/org/studiorailgun/conversation/Conversation.java b/src/main/java/org/studiorailgun/conversation/Conversation.java index a95974f..eda7078 100644 --- a/src/main/java/org/studiorailgun/conversation/Conversation.java +++ b/src/main/java/org/studiorailgun/conversation/Conversation.java @@ -1,7 +1,7 @@ package org.studiorailgun.conversation; -import org.studiorailgun.conversation.evaluators.GreetingData; import org.studiorailgun.conversation.evaluators.goal.GoalData; +import org.studiorailgun.conversation.evaluators.greet.GreetingData; import org.studiorailgun.knowledge.KnowledgeWeb; import org.studiorailgun.knowledge.Node; diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/EvaluationTree.java b/src/main/java/org/studiorailgun/conversation/evaluators/EvaluationTree.java index 3579a29..b717e43 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/EvaluationTree.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/EvaluationTree.java @@ -4,6 +4,8 @@ import org.studiorailgun.conversation.Conversation; import org.studiorailgun.conversation.Quote; import org.studiorailgun.conversation.categorization.SentenceFunctionCategorizor; import org.studiorailgun.conversation.evaluators.goal.GoalEval; +import org.studiorailgun.conversation.evaluators.greet.GreetingEval; +import org.studiorailgun.conversation.evaluators.synthesis.ResponseEval; /** * Evaluates a sentence based on data about the sentence @@ -14,7 +16,7 @@ public class EvaluationTree { * Evaluates a quote * @param quote The quote */ - public static void evaluate(Conversation conversation, Quote quote){ + public static Quote evaluate(Conversation conversation, Quote quote){ //parse data about the quote SentenceFunctionCategorizor.categorize(quote); @@ -32,7 +34,9 @@ public class EvaluationTree { GoalEval.evaluate(conversation); //synthesize language based on the results of the actions performed - //TODO + Quote response = ResponseEval.evaluate(conversation); + + return response; } } diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/goal/GoalEval.java b/src/main/java/org/studiorailgun/conversation/evaluators/goal/GoalEval.java index 4db1d9c..3e9e335 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/goal/GoalEval.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/goal/GoalEval.java @@ -2,8 +2,8 @@ package org.studiorailgun.conversation.evaluators.goal; import org.studiorailgun.conversation.ConvParticipant; import org.studiorailgun.conversation.Conversation; -import org.studiorailgun.conversation.evaluators.GreetingData; import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal; +import org.studiorailgun.conversation.evaluators.greet.GreetingData; /** * Evaluates the AI's goal in the conversation diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/GreetingData.java b/src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingData.java similarity index 90% rename from src/main/java/org/studiorailgun/conversation/evaluators/GreetingData.java rename to src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingData.java index 4904439..54040a8 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/GreetingData.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingData.java @@ -1,4 +1,4 @@ -package org.studiorailgun.conversation.evaluators; +package org.studiorailgun.conversation.evaluators.greet; import java.util.LinkedList; import java.util.List; diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/GreetingEval.java b/src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingEval.java similarity index 77% rename from src/main/java/org/studiorailgun/conversation/evaluators/GreetingEval.java rename to src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingEval.java index 2f00b07..41f59f3 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/GreetingEval.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/greet/GreetingEval.java @@ -1,4 +1,4 @@ -package org.studiorailgun.conversation.evaluators; +package org.studiorailgun.conversation.evaluators.greet; import java.io.File; import java.io.IOException; @@ -43,4 +43,14 @@ public class GreetingEval { } } + /** + * Constructs a greeting for the other participant + * @param conversation The conversation + * @return The greeting + */ + public static Quote constructGreeting(Conversation conversation){ + Quote response = new Quote("Hello"); + return response; + } + } diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/synthesis/ResponseEval.java b/src/main/java/org/studiorailgun/conversation/evaluators/synthesis/ResponseEval.java new file mode 100644 index 0000000..ae2879c --- /dev/null +++ b/src/main/java/org/studiorailgun/conversation/evaluators/synthesis/ResponseEval.java @@ -0,0 +1,27 @@ +package org.studiorailgun.conversation.evaluators.synthesis; + +import org.studiorailgun.conversation.Conversation; +import org.studiorailgun.conversation.Quote; +import org.studiorailgun.conversation.evaluators.greet.GreetingEval; + +/** + * Evaluates any response the ai might want to construct + */ +public class ResponseEval { + + /** + * Evaluates whether the ai wants to respond or not + * @param conversation The conversation + * @return The quote encapsulating the AI's response + */ + public static Quote evaluate(Conversation conversation){ + Quote response = null; + switch(conversation.getGoalData().getGoal()){ + case GREET: { + response = GreetingEval.constructGreeting(conversation); + } break; + } + return response; + } + +} diff --git a/src/test/java/org/studiorailgun/GreetingTests.java b/src/test/java/org/studiorailgun/GreetingTests.java index 9a38186..75bab59 100644 --- a/src/test/java/org/studiorailgun/GreetingTests.java +++ b/src/test/java/org/studiorailgun/GreetingTests.java @@ -3,6 +3,7 @@ package org.studiorailgun; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; +import org.studiorailgun.conversation.Quote; import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal; /** @@ -28,4 +29,13 @@ public class GreetingTests { assertEquals(Globals.conversation.getGoalData().getGoal(), ConversationGoal.GREET); } + @Test + public void testResponse(){ + Globals.init("./data/test/webs/web.json"); + + Quote response = AI.simFrame("Hello"); + + assertNotEquals(response, null); + } + }