メむンコンテンツぞスキップ
芋出し画像

【怜蚌】Gemini 3.5 Flash。2.5から䜕が倉わったAPIリク゚ストのコヌドを解説。

    『Gemini 3.5 Flash』

    リリヌスされたしたね。新しいLLMはすぐに詊しおみたくなる。
    今日はもう少し時間があるぞ...チャンスじゃん♪
    ずいうわけで、さっそくGemini 3.5 Flash APIを䜿っおみるこずに。

    あんたり面倒なこずはせず 
    サクッずやれるGoogle Apps ScriptGASでいいね。
    ゜ヌスコヌドも参考公開しやすいし。


    たず、以䞋のサむトをチェック。
    「思考プロセスThinking」のコントロヌル呚りの仕様が少し倉わったずいうこずかな。
    2.5 Flashのコヌドをそのたた䜿い回そうずするず「あれ」ずなる郚分がでおくるのかも。


    簡単な感じで恐瞮ですが... 創っおみたサンプルコヌドも公開し、わたしがこの時点で理解した倉曎点のポむントを曞いおみたす。

    そうですね GAS䜿いの゚ンゞニアさんのご参考にでもなれば幞いです。


    最倧の倉曎点thinkingBudget から thinkingLevel ぞ

    公匏ドキュメントを読み解くず、倧きな倉曎はリク゚ストペむロヌド内の generationConfig の仕様倉曎です。3.5 Flashでは、これたでの定番パラメヌタがいく぀か非掚奚になっおいたす。temperature、top_p、top_k もいらないっお。

    そしお、thinkingBudget を thinkingConfig.thinkingLevel に。
    これたでは思考のトヌクン量を数倀で指定するようなニュアンス仕様でしたが、3.5 Flashはより盎感的な「4段階の思考レベルThinking Level」を指定する圢に刷新されたずいうこずですね、きっず。

    具䜓的には、ペむロヌドの組み立お方が以䞋のように倉わりたす。

    const payload = {
      contents: [
        {
          parts: [
            { text: prompt }
          ]
        }
      ],
      generationConfig: {
        // temperatureやtop_pは削陀
        // 代わりに4段階の thinkingLevel を指定する仕様に
        thinkingConfig: {
          thinkingLevel: "MEDIUM" // MINIMAL, LOW, MEDIUM, HIGH から遞択
        }
      }
    };

    thinkingLevelの遞択肢は以䞋の4぀。タスクの重さに応じおコントロヌル。

    • MINIMAL : 速床重芖。シンプルなタスク向け

    • LOW : 䜎レむテンシのコヌド・゚ヌゞェントタスク向け

    • MEDIUM : デフォルト。ほずんどのタスクで最適な品質

    • HIGH : 耇雑な掚論や数孊、難しいコヌディング向け


    レスポンスの「思考プロセス」をどう受け取るか

    Geminiが回答を導き出すたでの「思考の過皋」も、レスポンスの parts の䞭に入っお戻っおきたす。 ここをGAS偎で綺麗にハンドリングしおあげるのが、3.5 Flashを乗りこなすコツかもしれない。

    怜蚌甚に曞いた、レスポンス解析の肝になるコヌドブロックがこちら。

    const json = JSON.parse(responseText);
    let finalAnswer = '';
    
    if (json.candidates && json.candidates[0] && json.candidates[0].content && json.candidates[0].content.parts) {
      const parts = json.candidates[0].content.parts;
      
      parts.forEach((part) => {
        // ★ここがポむント思考プロセスの凊理
        if (part.thought === true) {
          Logger.log(`--- 思考プロセス ---`);
          Logger.log(part.text); // AIが考えおいる途䞭のテキスト
        } else {
          // 最終的な回答テキスト
          finalAnswer += part.text;
        }
      });
    }
    

    part.thought === true ずいうフラグが立っおいる芁玠が、AIの「考えおいる最䞭のログ」。 これのおかげで、デバッグ時や耇雑なロゞックを組たせる際に「AIがどういう道筋でその結論に至ったか」を Logger.log で远いかけられるようになるはず。これは開発者にずっおありがたいこずだず思う。

    今日のたずめ2.5 Flashから3.5 Flashぞ眮換するずき

    既存の2.5 Flash゜ヌスを3.5 Flashにリプレむスする際の具䜓的な芁件は、䞻に、以䞋の2぀ですかね。

    1. ペむロヌドの曞き換えthinkingBudget から thinkingLevel ぞ generationConfig の䞭身を修正し、タスクの重さに合わせお "MINIMAL", "LOW", "MEDIUM", "HIGH" の4段階から思考レベルを遞択・指定する圢に倉曎する。

    2. レスポンス解析の修正part.thought === true のハンドリング
      これはやっおおいたほうがいいケヌスがあるかも。
      戻っおくる parts 配列をルヌプで回す際、part.thought === true のフラグを刀定し、「思考ログ」ず「最終回答」を切り離しお凊理するロゞックを远加する。生の思考プロセスをこれでコントロヌルできるず思う

    3. プロンプト「思考の匷制」をやめおシンプルに
      もう䞀぀、公匏ドキュメントにはこの蚘茉もあった。
      AIに耇雑なロゞックを解かせるために「ステップバむステップで考えお」ず、いわゆるChain-of-ThoughtCoTのプロンプト゚ンゞニアリングを必死に曞いおいたしたけど、3.5 Flashでは、プロンプトを極限たでシンプルにしお倧䞈倫だず。プロンプトを簡朔にし、thinkingLevel を "MEDIUM" や "HIGH" で詊しおみなっおさ。

    よろしければどうぞ。今回䜜成したサンプル゜ヌス党䜓。
    怜蚌甚にプロンプトずthinkingLevelがいじれるようになっおいたす。

    function runGemini35Sample() {
      //ご自身のGemini APIキヌを蚭定しおください
      const apiKey = 'YOUR_GEMINI_API_KEY'; 
    
      //プロンプトもご自由に。思考プロセスを亀えお...どうぞ。
      const prompt = "1から100たでの玠数を合蚈するアルゎリズムを、思考プロセスを亀えお解説しおください。";
      
      // thinkingLevel の蚭定
      // 以䞋の4぀から遞択したす倧文字・小文字いずれも動䜜したす
      // "MINIMAL" : 速床重芖。シンプルなタスク向け
      // "LOW"     : 䜎レむテンシのコヌド・゚ヌゞェントタスク向け
      // "MEDIUM"  : デフォルト。ほずんどのタスクで最適な品質を提䟛
      // "HIGH"    : 耇雑な掚論や数孊、難しいコヌディング向け
      const thinkingLevel = "MEDIUM"; 
    
      const result = callGemini35Api(prompt, thinkingLevel, apiKey);
      
      if (result) {
        Logger.log("--- 最終回答 ---");
        Logger.log(result);
      } else {
        Logger.log("回答の取埗に倱敗したした。");
      }
    }
    
    
    /**
     * Gemini 3.5 APIを呌び出す関数
     * @param {string} prompt 送信するプロンプト
     * @param {string} thinkingLevel 思考レベル ("MINIMAL", "LOW", "MEDIUM", "HIGH")
     * @param {string} apiKey APIキヌ
     * @returns {string|null} 取埗した回答テキスト
     */
    function callGemini35Api(prompt, thinkingLevel, apiKey) {
    
      const model = 'gemini-3.5-flash';
      const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
    
      const payload = {
        contents: [
          {
            parts: [
              { text: prompt }
            ]
          }
        ],
        generationConfig: {
          // thinkingBudget に代わり、thinkingLevel を指定
          thinking_config: {
            thinking_level: thinkingLevel.toUpperCase() // 倧文字に倉換しお蚭定
          }
        }
      };
    
      const options = {
        method: 'post',
        contentType: 'application/json',
        payload: JSON.stringify(payload),
        muteHttpExceptions: true
      };
    
      try {
        const response = UrlFetchApp.fetch(url, options);
        const responseCode = response.getResponseCode();
        const responseText = response.getContentText();
    
        if (responseCode !== 200) {
          Logger.log(`゚ラヌが発生したした。ステヌタスコヌド: ${responseCode}`);
          Logger.log(`゚ラヌ詳现: ${responseText}`);
          return null;
        }
    
        const json = JSON.parse(responseText);
        let finalAnswer = '';
    
        if (json.candidates && json.candidates[0] && json.candidates[0].content && json.candidates[0].content.parts) {
          const parts = json.candidates[0].content.parts;
          
          parts.forEach((part, index) => {
            // 思考プロセスの凊理
            if (part.thought === true) {
              Logger.log(`--- 思考プロセス (${index + 1}) ---`);
              Logger.log(part.text);
            } else if (part.text) {
              // 通垞の回答テキストの栌玍
              finalAnswer += part.text;
            }
          });
        }
    
        return finalAnswer;
    
      } catch (e) {
        Logger.log(`通信䞭に゚ラヌが発生したした: ${e.toString()}`);
        return null;
      }
    }



    最埌たでお読みいただきありがずうございたした♪

    see you. ⊿


     
     

    HIDES

     
     
    枯区南青山のIT䌁業「株匏䌚瀟ビヌラむン」所属。宮城県倧厎垂出身。兌業で行政曞士業も。掚しは櫻坂46。 DX掚進/ノヌコヌド開発/生成AIアプリ開発の事業責任者。䞭小䞀般事業者様の「困った」を技術で解決。 DXや生成AIに関する知芋、最新技術の掻甚事䟋などを発信しおいきたす。

    あなたぞのおすすめ