Lots of bug squashing
This commit is contained in:
parent
fcd29de36a
commit
a68d6fd419
|
@ -13,10 +13,26 @@ import com.ioa.model.BedrockLanguageModel;
|
|||
import com.ioa.service.WebSocketService;
|
||||
import com.ioa.util.TreeOfThought;
|
||||
|
||||
import com.ioa.tool.common.AppointmentSchedulerTool;
|
||||
import com.ioa.tool.common.DistanceCalculatorTool;
|
||||
import com.ioa.tool.common.FinancialAdviceTool;
|
||||
import com.ioa.tool.common.FitnessClassFinderTool;
|
||||
import com.ioa.tool.common.MovieRecommendationTool;
|
||||
import com.ioa.tool.common.NewsUpdateTool;
|
||||
import com.ioa.tool.common.PriceComparisonTool;
|
||||
import com.ioa.tool.common.RecipeTool;
|
||||
import com.ioa.tool.common.ReminderTool;
|
||||
import com.ioa.tool.common.RestaurantFinderTool;
|
||||
import com.ioa.tool.common.TranslationTool;
|
||||
import com.ioa.tool.common.TravelBookingTool;
|
||||
import com.ioa.tool.common.WeatherTool;
|
||||
import com.ioa.tool.common.WebSearchTool;
|
||||
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
@ -26,12 +42,12 @@ import java.util.List;
|
|||
public class IoASystem {
|
||||
|
||||
@Bean
|
||||
public WebSocketService webSocketService(SimpMessagingTemplate messagingTemplate) {
|
||||
return new WebSocketService(messagingTemplate);
|
||||
public WebSocketService webSocketService(SimpMessagingTemplate messagingTemplate, @Lazy ConversationManager conversationManager) {
|
||||
return new WebSocketService(messagingTemplate, conversationManager);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ConversationManager conversationManager(BedrockLanguageModel model, WebSocketService webSocketService) {
|
||||
public ConversationManager conversationManager(BedrockLanguageModel model, @Lazy WebSocketService webSocketService) {
|
||||
return new ConversationManager(model, webSocketService);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,10 +61,23 @@ public class ConversationFSM {
|
|||
}
|
||||
|
||||
private void handleMessage(Message message) {
|
||||
if (message.getContent().startsWith("/vote")) {
|
||||
if (message == null) {
|
||||
System.out.println("DEBUG: Received null message");
|
||||
return;
|
||||
}
|
||||
|
||||
String content = message.getContent();
|
||||
if (content == null) {
|
||||
System.out.println("DEBUG: Message content is null");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("DEBUG: Received message: " + content);
|
||||
|
||||
if (content.startsWith("/vote")) {
|
||||
handleVote(message.getSender());
|
||||
} else {
|
||||
String stateTransitionTask = "Decide the next conversation state based on this message: " + message.getContent() +
|
||||
String stateTransitionTask = "Decide the next conversation state based on this message: " + content +
|
||||
"\nCurrent state: " + currentState +
|
||||
"\nParticipants: " + participants +
|
||||
"\nPossible states: " + Arrays.toString(ConversationState.values());
|
||||
|
@ -86,7 +99,7 @@ public class ConversationFSM {
|
|||
agent.receiveMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
webSocketService.sendUpdate("conversation_message", message);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,4 +22,13 @@ public class Message {
|
|||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Message{" +
|
||||
"conversationId='" + conversationId + '\'' +
|
||||
", sender='" + sender + '\'' +
|
||||
", content='" + content + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -1,21 +1,62 @@
|
|||
package com.ioa.service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.ioa.conversation.ConversationManager;
|
||||
import com.ioa.conversation.Message;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
|
||||
@Service
|
||||
public class WebSocketService {
|
||||
private final SimpMessagingTemplate messagingTemplate;
|
||||
private final ConversationManager conversationManager;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
public WebSocketService(SimpMessagingTemplate messagingTemplate) {
|
||||
@Autowired
|
||||
public WebSocketService(SimpMessagingTemplate messagingTemplate, @Lazy ConversationManager conversationManager) {
|
||||
this.messagingTemplate = messagingTemplate;
|
||||
this.conversationManager = conversationManager;
|
||||
this.objectMapper = new ObjectMapper();
|
||||
}
|
||||
|
||||
public void sendUpdate(String topic, Object payload) {
|
||||
if (payload != null) {
|
||||
messagingTemplate.convertAndSend("/topic/" + topic, payload);
|
||||
} else {
|
||||
System.out.println("Warning: Attempted to send null payload to topic: " + topic);
|
||||
messagingTemplate.convertAndSend("/topic/" + topic, payload);
|
||||
}
|
||||
|
||||
public void handleWebSocketMessage(String message) {
|
||||
System.out.println("DEBUG: Received WebSocket message: " + message);
|
||||
|
||||
// Parse the WebSocket frame
|
||||
String[] parts = message.split("\n\n", 2);
|
||||
if (parts.length < 2) {
|
||||
System.out.println("DEBUG: Invalid WebSocket message format");
|
||||
return;
|
||||
}
|
||||
|
||||
String headers = parts[0];
|
||||
String payload = parts[1];
|
||||
|
||||
// Parse the JSON payload
|
||||
try {
|
||||
JsonNode jsonNode = objectMapper.readTree(payload);
|
||||
|
||||
// Extract relevant information from the JSON
|
||||
// Adjust this based on the actual structure of your WebSocket messages
|
||||
String conversationId = jsonNode.path("conversationId").asText();
|
||||
String sender = jsonNode.path("sender").asText();
|
||||
String content = jsonNode.path("content").asText();
|
||||
|
||||
// Create a new Message object
|
||||
Message parsedMessage = new Message(conversationId, sender, content);
|
||||
|
||||
// Process the message
|
||||
conversationManager.postMessage(conversationId, sender, content);
|
||||
} catch (Exception e) {
|
||||
System.out.println("DEBUG: Error parsing WebSocket message: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user