NeuralPlus 0.2.0
A small C++17 SDK for AI clients, sessions, tools, and tracing
Loading...
Searching...
No Matches
gemini_chatbot.cpp

Run an interactive or one-shot chatbot with the real Gemini client.

// Copyright 2026 Aniket Kulkarni
// SPDX-License-Identifier: Apache-2.0
#include "example_support.hpp"
#include <iostream>
#include <utility>
using namespace neuralplus;
using namespace neuralplus_examples;
namespace {
void usage() {
std::cout
<< "Gemini chatbot using the real generateContent API\n"
<< "Usage: neuralplus_gemini_chatbot [options]\n"
<< " --api-key KEY Override GEMINI_API_KEY/GOOGLE_API_KEY\n"
<< " --model ID Override gemini-3.6-flash\n"
<< " --system TEXT Set the system instruction\n"
<< " --prompt TEXT Run one prompt instead of interactive mode\n"
<< " --help Show this message\n";
}
} // namespace
int main(int argc, const char* const* argv) {
try {
const Arguments arguments(
argc,
argv,
{"--api-key", "--model", "--system", "--prompt"});
if (arguments.help()) {
usage();
return 0;
}
GeminiConfig config =
arguments.has("--model")
? GeminiConfig(arguments.require("--model"))
: models::gemini::gemini_3_6_flash();
if (arguments.has("--model")) {
config.model.capabilities.text_input = true;
}
apply_api_key(arguments, config.api_key);
auto client = make_client(std::move(config));
SessionOptions options;
options.system_message = arguments.value_or(
"--system", "Be helpful, accurate, and concise.");
Session session(std::move(options));
return run_chatbot(
*client, session, arguments.optional("--prompt"));
} catch (const std::exception& error) {
return print_exception(error);
}
}
Definition session.hpp:106
NEURALPLUS_API GeminiConfig gemini_3_6_flash()
NEURALPLUS_API std::unique_ptr< AIClient > make_client(OpenAIConfig config, const ClientOptions &options={})
Creates an OpenAI client. Credentials resolve as explicit value, environment, error.
Definition providers.hpp:76
ModelDescriptor model
Model ID, capabilities, limits, and data-driven provider options.
Definition providers.hpp:81
std::optional< std::string > api_key
Explicit key, otherwise GEMINI_API_KEY then GOOGLE_API_KEY is read once.
Definition providers.hpp:84
Model features used for early validation and feature discovery.
Definition types.hpp:282
bool text_input
Accepts UTF-8 text input.
Definition types.hpp:284
bool text_output
Can return normalized text.
Definition types.hpp:287
ModelCapabilities capabilities
Discoverable features used for early validation.
Definition types.hpp:326
Options used when creating or restoring a Session.
Definition session.hpp:91
std::optional< std::string > system_message
Provider-independent system instruction.
Definition session.hpp:96