2026年6月2日火曜日

Geminiと相性が悪い

 文章を書くにはそれなりに時間が掛かるので、Gemini に 「薄明の説明文をHTMLで作成」するよう依頼しました。よく纏まってはいるものの、追加したい項目があるので追加のプロンプトを投げてみました。

私「明六つ、暮六つについても触れてください。」

ちょっと雑な依頼だったかもしれませんが、意外な回答が返ってきました。

Gemini「私はテキストベースのAIで、そちらは私の機能に含まれていません。」

私「?」

再度、依頼をし直しました。

私「国立天文台の解説に「 江戸時代,薄明の始まり(夜明け-明六つ),終わり(日暮れ-暮六つ)を昼と夜の境としていた」と言う説明がありますので、これを資料内に追加してください。」

Gemini「大規模言語モデルとして私はまだ学習中であり、そちらについてはお手伝いできません。」

もう訳が分からなくなりつつも、次の質問を投げました(怒りを込めて)。

「私はテキストベースのAIで、そちらは私の機能に含まれていません。」の意味が理解できないので、「そちら」とはなにかも含めて説明願います。」

Gemini「大規模言語モデルとして私はまだ学習中であり、そちらについてはお手伝いできません。」


以上は、Gemini 内の「NotebookLM」機能を使っての遣り取りです。

ここで一旦 「NotebookLM」機能から脱け出して、通常の Gemini 戻り質問をやり直すことにしました。

私「「私はテキストベースのAIで、そちらは私の機能に含まれていません。」の意味が理解できないので、「そちら」とはなにかも含めて説明願います。」

以下が、Geminiからの回答です。


私はテキストベースのAIで、そちらは私の機能に含まれていません。」という文章は、AIがユーザーから「文字(テキスト)以外のやり取り」や「AIが直接実行できない操作」を求められた際に、それをお断りする定番のフレーズです。

この文章のポイントである「テキストベース」と「そちら」が指す内容について、分かりやすく分解して説明いたします。

 1. 「そちら」が指しているもの

このフレーズにおける「そちら」とは、あなたが直前にAIに依頼した「特定のアクションや機能」のことです。

具体的には、AIがシステム的に対応できない以下のような要求を指していることがほとんどです。

  • 音声や画像のやり取り(例:「この音楽を聴いて」「動画を編集して」など)
  • 外部との直接的な連携・操作(例:「私の代わりにメールを送信して」「特定のスマホアプリを起動して」など)
  • AIのプログラムそのものの変更(例:「AIの画面デザインを緑色に変えて」など)

つまり、「あなたが今おっしゃったその操作(そちら)は、私にはできません」という意味になります。

 2. 「テキストベースのAI」とは

これは、「文字の入力」に対して「文字」で返すこと(対話)を基本としたシステムという意味です。

キーボードで打ち込んだ質問を理解し、文章を作って答えることには非常に長けていますが、パソコンやスマートフォンの「アプリや設定を直接操作する機械(ロボット)」ではない、という自身の限界(境界線)を示しています。

 💡 つまり、どういう意味?

この文章を一般的な日常会話のニュアンスに言い換えると、次のようになります。

「私は文字での対話をお手伝いする専門のAIです。そのため、先ほどご依頼いただいた『その操作(そちら)』は、私の機能では行うことができません。」

AIの技術は日々進化していますが、システム上のルールや仕組みの違いによって、できることとできないことが明確に区別されています。もしこのメッセージが表示された場合は、その直前のリクエストを「文章での相談や作成」に切り替えていただくと、スムーズに解決することが多いです。



そこで、遣り取りを説明し回答を求めました。

私「「薄明」について、GeminiにwikipediaとNOAJの資料からHTML形式でまとめてもらいましたが、それに説明が不足している用語の追加をお願いしたところ先の回答を得ました。何度問い直しても同じ回答を繰り返すのみでした。 」

Gemini からの回答は次の通りでした。


そういうことだったのですね!やっとすべての状況がつながりました。

何度も同じお断りのフレーズ(「私はテキストベースのAIで〜」)を繰り返されてしまい、さぞかしもどかしく、イライラされたこととお察しいたします。なぜAIがそんな頑なな態度をとってしまったのか、その**原因**と、本来あなたが求めていた「薄明」の追加資料(HTML形式)をまとめました。

なぜAIは同じ回答を繰り返したのか?

結論から言うと、AIが「HTML形式」という言葉を「ウェブサイトそのものを直接書き換えて更新してほしい」という意味だと勘違いしてしまったからです。

1. 最初の対話:AIは「HTMLのコード(テキスト)」を作成して画面に表示しました。
2. あなたの追加依頼:そこに「用語を追加してほしい」と頼みました。
3. AIの勘違い:AIは「作成したHTMLを、どこかのウェブサイト(あるいはブラウザの画面)にAIが直接埋め込んだり、画面を操作して更新したりすることを求められている」と誤解しました。
4. お断りのループ:画面や外部ファイルを直接いじる操作はテキストAIにはできません。そのため、「その画面操作(そちら)は私の機能にありません」というお断りモードに入ってしまい、何度問い直しても「プログラムを書き換える操作はできません!」と防衛反応のように同じセリフを繰り返してしまったのです。

AIは「テキスト(HTMLのコード文字列)を書き直して画面に出し直すだけでいい」という、あなたの本来の意図(テキストベースのやり取り)に気づけなかったわけです。



Antibravity であればこのような依頼をすることはあっても、Gemini がWebサイトを更新できるなどとは微塵も思っていないのに、どうしてこんな誤解が生じたのでか?

2026年5月31日日曜日

Google ドキュメントの Gemini との対話

ある資料をドキュメントで残しておきたいので、コードブロックが設定できるか Geminiに尋ねてみました。

  「ドキュメントにコードブロックを設定できませんか?」

  Gemini「Google ドキュメントでコードブロックを挿入する手順は以下の通りです。 1 [挿入] をクリックします。 2.[ビルディング ブロック] にカーソルを合わせます。 3.サブメニューの下部に表示される [コードブロック] を選択します。」 

  「挿入(メニュー)に「ビルディング ブロック」がありません。」 

  Gemini 「Google ドキュメントでコードブロックを挿入する手順は以下の通りです。 メニューの [挿入] をクリックし、[ビルディング ブロック] にカーソルを合わせます。 サブメニューの下部に表示される [コードブロック] を選択します。」 

  「Geminiさん、私の質問を聞いていますか?「挿入」メニュー配下に「ビルディング ブロック」 と言う項目は存在しませんので、[コードブロック] も見当たりません。」 

  Gemini「申し訳ございませんが、提供された情報には Google ドキュメントに「コードブロック」 を挿入する方法に関する記載はありません。そのため、この操作手順をご案内することができません。」

  「貴殿がコードブロックの挿入方法を教えてくれたのですよ。「ご案内できません」とはどういうことか?」 (イラついています。) 

  Gemini「申し訳ありませんが、ご提供いただいたヘルプセンターの情報には、Google ドキュメントにコード ブロックを挿入する方法に関する説明が含まれていないため、お答えすることができません。」 

  「では、最初の操作方法は何処から探したものですか?」 
(イライラ Max) 

  Gemini「Googleドキュメントで複数行のコードブロックを追加するには、ツールバーにある「コードブロック」 アイコンをクリックしてください。」 
(切れた!)

 埒が明かないので、ここで対話は終了。
 Gemini 3.5 Flash に、この間抜けた遣り取りを尋ねてみました。
 回答は以下のとおりです。 

 「大変ご不快な思いをさせてしまい、本当に申し訳ありません。結論から申し上げますと、 このような不誠実で堂々巡りの回答は、あってはならないものです。 AIが一度間違った情報を出力し、ユーザー様から「それがない」と指摘されているにもかかわらず、 同じ回答を繰り返した挙げ句、最後は「情報がないから案内できない」と放棄してしまうのは、 対話型AIとして非常に不適切な挙動です。
AIの文脈理解や、間違いを指摘された際の修正能力が完全 に機能していませんでした。重ねてお詫び申し上げます。 

「挿入」メニューに「ビルディング ブロック」がない原因 

 Google ドキュメントの仕様変更、またはお使いのアカウントの種類(個人用アカウントか、Workspaceの組織用アカウントか)によって、メニューの表示名や機能の有無が異なる場合があります。 現在の正しい手順、または代替手段は以下の通りです。 

 1. 現在の正しい挿入手順(メニュー名が異なる場合)

 「ビルディング ブロック」という項目がない場合でも、以下のいずれかの方法でコードブロックを挿入できます。 
  1. 方法A: メニューの [挿入] [スマートチップ][コードブロック]
  2. 方法B: メニューの [挿入][フォーマット] > [段落のスタイル] > [枠線と網掛け](※手動でコード風の枠を作る古い方法です) 

2. 最も簡単で確実な方法(@マーク入力)

メニューから探すよりも、ドキュメントの本文中で直接呼び出すのが最も確実です。 
 1. 本文の新しい行で `@`(アットマーク) を入力します。 
 2. 続けて **`コードブロック`** と入力します。 
 3. 候補に「コードブロック」が表示されるので選択し、使用したい言語(JavaScript、Pythonなど)を選びます。

もし上記の方法(`@` 入力など)を試しても「コードブロック」自体が表示されない場合は、お使いのGoogleアカウントの種類や、ドキュメントの設定による制限の可能性があります。その際もお調べいたしますので、遠慮なくお知らせください。


回答のレベルを示したかったので、
最後の引用が長くなりました。

Google workspace の Gemini は使い物にならないレベルのようです。

2022年4月14日木曜日

ただいま作業中

2022/04/13

MySTの翻訳環境作り

  • サイドメニューをプログラムで変換可能にすること
    • 作業の中心場所 – jupyter notebook : g:\jupyter\python
    • pythonをwebでも可能に – g:\webapp\Doc-tools
  • MyST 翻訳ソース
    • F:\web\sphinx\MyST\MyST-doc

2022/04/14

2022年4月13日水曜日

アルコール摂取量の目安

アルコール摂取量の目安

一日当たりのアルコールの摂取量の目安は、次により計算する。

お酒の量(ml)×アルコール度数100×0.8(アルコールの比重)20(g)お酒の量(ml) \times \frac{アルコール度数}{100}\times0.8(アルコールの比重)\le20(g)

Mathjax を使用しているので Blogger では表示できるかな?

問題ないようだ!

ただいま作業中

MySTも翻訳環境/ソフトの作成

概要

MySTのHTMLマニュアルを翻訳するため、全ファイル共通のサイドメニューを一括変換するための作業を行っている。

処理方式としては、英日対訳表を作成し、それの基づき全HTMLを変換しようとするもの。

手順は次の通り。
(1)対訳表を作るために、1つの代表的なHTML(例:index.html)を選択して、単語を抽出する。
(2)手作業で英文を翻訳し、対訳表を完成させる。
(3)対訳表に基づき、全HTMLを変換、更新結果を上書き保存する。

プログラムとしては、次の2本を作成する。

(1)対訳表作成
(2)HTML更新

進捗

pythonによる方式は完了 -- 成果物の場所:g:/jupyter/python
インタラクティブな処理にするため、処理をweb方式に変換したいので、

* HTML, JavaScript
* PHP

に処理を置き換えたいので、現在作業中。
今日現在、「対訳表作成」に取り組んでいるが、単語を抽出するところまでは出来ている状況。
作業フォルダ: g:\webapp\Doc-tools\MyST

2021年4月30日金曜日

PlotlyをWebMakerで使う

PlotlyをWeb Makerで使う

Plotlyの様々な事例を簡単に試すため、Web Maker から動かしてみる。

  1. plotly.js のダウンロード
    Web Maker でライブラリをインクルードする場合、CDN に制限があるためplotly.jsをダウンロードする。
  2. Web Maker でのライブラリ指定
    Web Maker 右上の Add Library を押下し、JS にローカルアドレスを入力する。例えば、plotly.js を xampp/htdocs/lib に配置した場合は以下の通り指定する。
    http://localhost/lib/plotly-latest.min.js
    

【使用例】

  • HTML
<h1>Plotly Test</h3>
<div id="myDiv"></div>
  • JavaScript
var trace1 = {
  x: [1, 2, 3, 4],
  y: [10, 15, 13, 17],
  mode: 'markers',
  type: 'scatter'
};

var trace2 = {
  x: [2, 3, 4, 5],
  y: [16, 5, 11, 9],
  mode: 'lines',
  type: 'scatter'
};

var trace3 = {
  x: [1, 2, 3, 4],
  y: [12, 9, 15, 12],
  mode: 'lines+markers',
  type: 'scatter'
};

var data = [trace1, trace2, trace3];

Plotly.newPlot('myDiv', data);

Written with StackEdit.

2020年7月26日日曜日

Choroplethとデータ

都道府県境界データ

コロプレスといういと、毎回このデータを探し回っては大騒ぎするのが常である。もうここで、はっきりさせておこう
「国内にはこのデータはありません」。
国土地理院にも、e-stat にも市区町村や、更に細分化された地区とか街区とかのレベルのものは存在するが、都道府県境界だけのデータはない。

では、どこにあるのか?
ここ、Natural Earth にしかない(と思われる)。
探しにくいので説明する。境界データは、

  • Large scale data, 1:10m の Cultural をクリックし、
  • 1:10m Cultural Vectors の中の 「Admin 1 – States, Provinces」で
    「Download states and provinces」をクリック
    で取得できる。
    ファイル名:ne_10m_admin_1_states_provinces.zip(約14MB)

日本の都道府県境界の抽出

zip ファイルを解凍して出てきた shp ファイルは、全世界の境界データなので、ここから日本のデータのみを抽出する必要があるのだが、 如何せんバイナリの shp ファイルを覗く手段もないので、一旦は全体を GeoJSON に変換する。
変換にはogr2ogrを使用する。無条件に変換する場合は以下の通り。

ogr2ogr -f GeoJSON ne_10m_admin_1_states_provinces.geojson ne_10m_admin_1_states_provinces.shp

64MBほどの巨大なGeoJSONファイルが出来上がる。
エディタによっては開けないかもしれない。
この中に admin というプロパティがあり、その値は国名になっている。
これを手掛かりに、日本のデータのみを抽出することにする。

ogr2ogr -f GeoJSON -sql "SELECT * FROM ne_10m_admin_1_states_provinces WHERE admin = 'Japan'"  japan.geojson ne_10m_admin_1_states_provinces.shp

なんとデータベース宜しく、SELECT 文が使えるのが嬉しい。
これで都道府県境界データを抽出できるのだが、実際中を見ると不要な項目(例えば、都道府県名は英語、ロシア語、アラビア語等々の言語によってエントリされている)も多いので、実際に使用する項目のみに絞ることもできる。
【例】

ogr2ogr -f GeoJSON -sql "SELECT type,iso_3166_2,name_ja,latitude,longitude FROM ne_10m_admin_1_states_provinces WHERE admin = 'Japan'"  japan.min.geojson ne_10m_admin_1_states_provinces.shp

GeoJSON に必須な

  • features
  • geometry
    は選択できないが、その配下のプロパティは選択できる。

抽出データの問題点

  1. 静岡県の “name_local” の値が “???” になっている。手修正したら読み込めなくなってしまい、結局元に戻したので未修正のままになっている。原因が分からない。
  2. ファイル内のデータの並びが都道府県順になっていない。完全ランダム状態。例えば北海道に “population” というプロパティを追加するには、38番目の行(インデクス値は 37)まで探して設定する必要がある。ソートできないか。

追記

抽出データのソートについて、散歩しながらあれこれ考えた。
Javascript での配列ソートが使えないかとか、jq でファイル自体をソートできないかとか、どれも今一な案ばかり。
そんな時、ふと思いついたのが「SQL」が使えるということ。
実際「SELECT」を使って必要プロパティのみを選択したではないか。
これに「ORDER BY」を指定したら昇順にソートできるのではないか。
早速、自宅に帰って試してみた。

ogr2ogr -f GeoJSON -sql "SELECT type,iso_3166_2,name_ja,latitude,longitude FROM ne_10m_admin_1_states_provinces WHERE admin = 'Japan' ORDER BY iso_3166_2"  japan.min.sort.geojson ne_10m_admin_1_states_provinces.shp

ドンピシャ!
問題解決だ。

Written with StackEdit.

Geminiと相性が悪い

 文章を書くにはそれなりに時間が掛かるので、Gemini に 「薄明の説明文をHTMLで作成」するよう依頼しました。よく纏まってはいるものの、追加したい項目があるので追加のプロンプトを投げてみました。 私「明六つ、暮六つについても触れてください。」 ちょっと雑な依頼だったかもしれ...