#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* API_KEY = "AIzaSyAKNYNKJqaVGn86923nFELeZMtj3FFcQ0o";
const char* MAX_TOKENS = "50";
String user_statement;
void initWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(9600);
initWiFi();
Serial.println("Gemini AI Prompt started !!!");
}
void loop() {
Serial.println("->");
while(!Serial.available());
while(Serial.available() > 0) {
if(Serial.available() > 0) {
user_statement=Serial.readStringUntil('\n');
user_statement.trim();
}
}
user_statement = "\"" + user_statement + "\"";
Serial.println("User : " + user_statement);
ulang:
HTTPClient https;
if(https.begin("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + (String)API_KEY)) {
https.addHeader("Content-Type", "application/json");
String payload = String("{\"contents\": [{\"parts\":[{\"text\":" + user_statement + "}]}],\"generationConfig\": {\"maxOutputTokens\": " + (String)MAX_TOKENS + "}}");
// start connection and send HTTP header
int httpCode = https.POST(payload);
if ((httpCode == HTTP_CODE_OK) || (httpCode == HTTP_CODE_MOVED_PERMANENTLY)) {
String payload = https.getString();
DynamicJsonDocument doc(20); //1024
deserializeJson(doc, payload);
String Answer = doc["candidates"][0]["content"]["parts"][0]["text"];
Serial.println("Gemini AI Response: ");
Serial.println(Answer);
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
goto ulang;
}
https.end();
user_statement = "";
} else {
Serial.printf("[HTTPS] Unable to connect\n");
}
Serial.println("");
user_statement="";
}