Страница 1 из 1

Gemini API на С++

Добавлено: 02 сен 2026, 06:28
ya
Подключить Gemini API на С++ можно с помощью сетевой библиотеки libcurl (для HTTP-запросов) и библиотеки nlohmann-json (для работы с JSON).
Установка зависимостей в Debian 11
Откройте терминал и установите необходимые пакеты:

Код: Выделить всё

sudo apt update
sudo apt install build-essential libcurl4-openssl-dev nlohmann-json3-dev
Код программы (gemini.cpp)

Код: Выделить всё

#include <iostream>
#include <string>
#include <curl/curl.h>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

// Вспомогательная функция для записи ответа от сервера
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {
    size_t totalSize = size * nmemb;
    output->append((char*)contents, totalSize);
    return totalSize;
}

int main() {
    // 1. Получение API-ключа из переменной окружения
    const char* apiKeyEnv = std::getenv("GEMINI_API_KEY");
    if (!apiKeyEnv) {
        std::cerr << "Ошибка: Переменная окружения GEMINI_API_KEY не установлена!" << std::endl;
        return 1;
    }
    std::string apiKey = apiKeyEnv;

    // 2. Формирование URL и тела JSON-запроса
    std::string url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=" + apiKey;
    
    json requestData = {
        {"contents", json::array({
            {
                {"parts", json::array({
                    {{"text", "Напиши одно короткое приветствие на русском языке."}}
                })}
            }
        })}
    };
    
    std::string jsonPayload = requestData.dump();
    std::string responseString;

    // 3. Инициализация и настройка cURL
    CURL* curl = curl_easy_init();
    if (curl) {
        struct curl_slist* headers = NULL;
        headers = curl_slist_append(headers, "Content-Type: application/json");

        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonPayload.c_str());
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseString);

        // Выполнение запроса
        CURLcode res = curl_easy_perform(curl);
        
        if (res != CURLE_OK) {
            std::cerr << "Ошибка cURL: " << curl_easy_strerror(res) << std::endl;
        } else {
            // 4. Парсинг ответа
            try {
                json responseJson = json::parse(responseString);
                
                if (responseJson.contains("candidates") && !responseJson["candidates"].empty()) {
                    std::string text = responseJson["candidates"][0]["content"]["parts"][0]["text"];
                    std::cout << "Ответ Gemini:\n" << text << std::endl;
                } else {
                    std::cout << "Ошибка или пустой ответ:\n" << responseJson.dump(4) << std::endl;
                }
            } catch (const std::exception& e) {
                std::cerr << "Ошибка парсинга JSON: " << e.what() << std::endl;
                std::cout << "Сырой ответ: " << responseString << std::endl;
            }
        }

        // Очистка ресурсов
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }

    return 0;
}
Компиляция и запуск

Скомпилируйте программу с помощью g++:

Код: Выделить всё

g++ gemini.cpp -o gemini -lcurl
Установите ваш API-ключ Gemini и запустите бинарный файл:

Код: Выделить всё

export GEMINI_API_KEY="ВАШ_НАСТОЯЩИЙ_API_КЛЮЧ"
./gemini

Re: Gemini API на С++

Добавлено: 02 сен 2026, 06:39
ya
Официальный API-ключ для Gemini создается на платформе Google AI Studio.
https://aistudio.google.com/welcome
​Перейдите на сайт Google AI Studio.
​Войдите с помощью своего аккаунта Google.
​Нажмите кнопку «Get API key» (или «Create API key») в меню.
​Выберите проект Google Cloud (или нажмите «Create API key in new project», чтобы создать новый автоматически).
​Скопируйте сгенерированный ключ.

Re: Gemini API на С++

Добавлено: 02 сен 2026, 07:29
ya
Создать новый проект и API-ключ через обычный curl с помощью старого API-ключа нельзя, так как потребительские ключи не имеют административных прав на создание ресурсов в Google Cloud.Однако это можно сделать через curl, используя официальный API управления ключами Google Cloud (apikeys.googleapis.com) и авторизационный токен от вашей учётной записи. Шаг 1. Авторизация и получение токенаУбедитесь, что у вас установлен инструмент Google Cloud CLI (gcloud), и войдите в систему под своим аккаунтом:

Код: Выделить всё

gcloud auth login
Шаг 2. Создание проекта и включение API (опционально)
Если вам нужен абсолютно новый проект, создайте его через CLI и узнайте его номер (PROJECT_NUMBER):

Код: Выделить всё

# Создание проекта
gcloud projects create ваш-id-нового-проекта --name="Название проекта"

# Включение сервиса управления ключами
gcloud services enable apikeys.googleapis.com --project=ваш-id-нового-проекта

# Узнать числовой номер проекта (он нужен для URL в curl)
gcloud projects describe ваш-id-нового-проекта --format="value(projectNumber)"
Шаг 3. Запрос на создание ключа через curl
Используйте следующий curl-запрос, подставив вместо PROJECT_NUMBER числовой номер вашего проекта:

Код: Выделить всё

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{ "displayName": "My New Gemini API Key" }' \
  'https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys'
Примечание: Метод создания ключа возвращает долгосрочную операцию (Long-running operation). В ответе придет объект с именем операции, а сам готовый keyString (сам ключ) можно будет получить отдельным запросом на чтение деталей ключа или посмотреть в панели Google AI Studio / Cloud Console.