anithai/Java-Gradio-Chatbot
0
1import java.io.*;
2import java.net.HttpURLConnection;
3import java.net.URL;
4import java.util.*;
5import org.json.JSONObject;
6import org.json.JSONArray;
7
8public class Main {
9 public static void main(String[] args) {
10 if (args.length == 0) {
11 System.out.println("Error: No input received.");
12 return;
13 }
14
15 String userQuestion = args[0].toLowerCase();
16 Set<String> keywordsSet = loadKeywords("/content/java_chatbot_keywords.csv");
17
18 String response = getResponse(userQuestion, keywordsSet);
19 System.out.println(response); // Correct output for Gradio
20 }
21
22 public static Set<String> loadKeywords(String filePath) {
23 Set<String> keywordsSet = new HashSet<>();
24 try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
25 String line;
26 while ((line = br.readLine()) != null) {
27 String[] parts = line.split(",");
28 if (parts.length >= 2) {
29 keywordsSet.add(parts[0].trim().toLowerCase());
30 String[] variations = parts[1].split(";");
31 for (String variation : variations) {
32 keywordsSet.add(variation.trim().toLowerCase());
33 }
34 }
35 }
36 } catch (IOException e) {
37 System.out.println("Error loading CSV: " + e.getMessage());
38 }
39 return keywordsSet;
40 }
41
42 public static String getResponse(String userQuestion, Set<String> keywordsSet) {
43 for (String keyword : keywordsSet) {
44 if (userQuestion.contains(keyword)) {
45 if (!userQuestion.contains("java")) {
46 userQuestion = userQuestion + " Java";
47 }
48 return fetchResponseFromGemini(userQuestion);
49 }
50 }
51 return "This is not in the syllabus.";
52 }
53
54 public static String fetchResponseFromGemini(String prompt) {
55 String apiKey = "AIzaSyANMb7mDPE0Ji9eV1hYC_Yzj8IpYoJW4LE"; // Replace with your API key
56 String response = "";
57 try {
58 URL url = new URL("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + apiKey);
59 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
60 connection.setRequestMethod("POST");
61 connection.setRequestProperty("Content-Type", "application/json");
62 connection.setDoOutput(true);
63
64String jsonBody = "{ \\\"contents\\\": [{ \\\"parts\\\": [{ \\\"text\\\": \\\"" + prompt + "\\\" }]}]}";
65 try (OutputStream os = connection.getOutputStream()) {
66 os.write(jsonBody.getBytes("UTF-8"));
67 }
68
69 StringBuilder rawResponse = new StringBuilder();
70 try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
71 String line;
72 while ((line = br.readLine()) != null) {
73 rawResponse.append(line);
74 }
75 }
76
77 JSONObject jsonResponse = new JSONObject(rawResponse.toString());
78 JSONArray candidates = jsonResponse.optJSONArray("candidates");
79
80 if (candidates != null && candidates.length() > 0) {
81 JSONObject candidate = candidates.getJSONObject(0);
82 JSONObject content = candidate.optJSONObject("content");
83
84 if (content != null) {
85 JSONArray parts = content.optJSONArray("parts");
86 if (parts != null && parts.length() > 0) {
87 response = parts.getJSONObject(0).getString("text");
88 } else {
89 response = "No text content available in the parts array.";
90 }
91 } else {
92 response = "No content available in the response.";
93 }
94 } else {
95 response = "No candidates available in the response.";
96 }
97 } catch (Exception e) {
98 return "Error fetching response: " + e.getMessage();
99 }
100 return response;
101 }
102}
103
104
105
106 