package jp.ac.dendai.im.ai;

import java.util.ArrayList;

// Google の生成AI用ライブラリ
import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.GoogleSearch;
import com.google.genai.types.Part;
import com.google.genai.types.Tool;

/**
 * 返答を生成する際にGoogle検索の結果を参照するクラス
 */
public class GeminiSearch {
    public static final String apiKey = "(your-api-key)";    // 自分のAPIキーを記入
    public static final String model = "gemini-2.0-flash";
    public static void main(String[] args) {
        // Gemini クライアントをインスタンス化
        Client client = Client.builder().apiKey(apiKey).build();

        // システム指示(system instruction)を設定
        String instruction = "あなたはユーモアのある専門家です。";
        Content systemInstruction = Content.fromParts(Part.fromText(instruction));

        // Google Search tool を用意
        Tool googleSearchTool = Tool.builder().googleSearch(GoogleSearch.builder().build()).build();
        ArrayList<Tool> toolList = new ArrayList<Tool>();
        toolList.add(googleSearchTool);

        // 生成のための設定 config を用意
        GenerateContentConfig config =
            GenerateContentConfig.builder()
                .candidateCount(1)
                .maxOutputTokens(1024)
                .systemInstruction(systemInstruction)
                .tools(toolList)
                .build();

        // 生成
        String text = "情報科学と情報工学をそれぞれ説明してください。";
        // String text = "日本で「民主党」と呼ばれる政党を日本語で整理してください。";
        GenerateContentResponse response =
                client.models.generateContent(    model, text, config);

        // 返答のテキスト部分を text() で取得して表示
        System.out.println("返答: " + response.text());
    }
}
