Spaces:
Configuration error
Configuration error
File size: 2,269 Bytes
28b5ddf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONArray;
import org.json.JSONObject;
public class GeminiClient {
private final String apiKey;
private final String model;
public GeminiClient(String apiKey, String model) {
this.apiKey = apiKey;
this.model = model;
}
public String generateResponse(String prompt) throws IOException {
String safePrompt = prompt.replace("\"", "\\\"");
String inputJson = "{\n" +
" \"contents\": [\n" +
" {\n" +
" \"parts\": [\n" +
" { \"text\": \"" + safePrompt + "\" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
URL url = new URL(
"https://generativelanguage.googleapis.com/v1beta/models/" + model + ":generateContent?key=" + apiKey);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
try (OutputStream os = conn.getOutputStream()) {
os.write(inputJson.getBytes("utf-8"));
}
int status = conn.getResponseCode();
InputStream stream = (status == 200) ? conn.getInputStream() : conn.getErrorStream();
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "utf-8"));
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line.trim());
}
br.close();
return extractTextFromResponse(response.toString());
}
private String extractTextFromResponse(String raw) {
try {
JSONObject json = new JSONObject(raw);
JSONArray candidates = json.getJSONArray("candidates");
JSONObject content = candidates.getJSONObject(0).getJSONObject("content");
JSONArray parts = content.getJSONArray("parts");
return parts.getJSONObject(0).getString("text");
} catch (Exception e) {
return "Error: Could not parse response.";
}
}
}
|