Anthropic Claude 3.5で画像からiCalendarファイルを作成する
(gregsramblings.com)- ジャズピアノのレッスン日程がJPG画像だけで共有された状況で、Claude 3.5 Sonnetが表示された日付を読み取り、カレンダーへ移す反復作業を減らしてくれた
- 緑色で示された13個の日付は、2024年9月13日から2025年5月23日までの隔週金曜日のレッスンとして抽出された
- 続いて同じ会話の中で、各日付の午後2時 Pacific Time に
Jazz Piano Lessonの予定を入れたICSファイルのテキストまで生成した - 生成された
.icsファイルはテキストとして保存した後、Google Calendarのインポート/エクスポートから取り込み、正常に追加できた - ChatGPTも日付の識別はできたが、最初は
.icsではなくPythonコードを提示し、ファイル内容を直接依頼して初めてiCalendarテキストを生成した
画像の日程からカレンダーファイルまで
- ジャズピアノ講師が秋冬の個人レッスン日程表をJPG画像で送り、13個のレッスン日が緑色のマーカーで示されていた
- Google Calendarに13件の予定を手作業で作成する代わりに、Claude 3.5 Sonnetへ画像をアップロードした
- 最初の依頼は次のとおりだった
List the dates that are outlined in green
- Claudeが抽出した日付は次の13個だった
- Friday, 13-Sep-24
- Friday, 27-Sep-24
- Friday, 11-Oct-24
- Friday, 8-Nov-24
- Friday, 6-Dec-24
- Friday, 20-Dec-24
- Friday, 17-Jan-25
- Friday, 31-Jan-25
- Friday, 28-Feb-25
- Friday, 14-Mar-25
- Friday, 11-Apr-25
- Friday, 25-Apr-25
- Friday, 23-May-25
- これらの日付は、2024年9月10日火曜日を含む週に始まる隔週金曜日のレッスン日程に該当する
Claudeが作成したiCalendarファイル
- 次の依頼として、各日付の午後2時 Pacific Time に
Jazz Piano Lessonの予定を作成する ICS ファイルの生成を求めた - 生成されたiCalendarテキストには、
BEGIN:VCALENDAR、VERSION:2.0、PRODID、CALSCALE:GREGORIANと13個のVEVENTブロックが含まれていた - 各イベントには次のフィールドが入っていた
SUMMARY:Jazz Piano LessonDTSTART、DTEND: 1時間の予定DTSTAMP:20240824T000000Z- 日付ごとの一意な
UID
- 時刻はUTCのZ表記に変換され、Pacific Timeの時刻変化がファイルに反映されていた
- 利用手順は、生成された内容をコピーして新しいテキストファイルに貼り付け、
.ics拡張子で保存した後、任意のカレンダーアプリに取り込むというもの - Google Calendarでは設定のインポート/エクスポートメニューから
.icsファイルを取り込み、予定が正常に追加された - 同じ入力をChatGPTで試したところ、日付の識別はできたものの、最初は
.icsファイルの生成はできないと答えてPythonコードを提供し、その後「.icsファイルの内容だけ見せてほしい」と依頼すると該当する内容を生成した
1件のコメント
Hacker News のコメント
Claude にリストやデータ抽出をさせるときは、結果を必ず再確認する必要がある
99.9% は正しいが、たまに 1〜2 件のレコードが間違っていて、結果がそれらしく見えるため、なおさら見逃しやすい。長いリストや表では大規模言語モデルがごくわずかに間違えることがあり、自分でも実際に経験したことがある。信頼しても検証は必要
答えが機械的に検証可能なら、大規模言語モデルに内部で実行できる Python 検証器を書かせる方法もある。ChatGPT はコード実行が可能で、Sonnet 3.5 も可能だと認識しているが、自分では試していない
George Washington の誕生日を尋ねたときに「May 20, 2020」と答えるのと、「February 20, 1733」と自信満々に幻覚するのとは違う。一見するとそれらしく見える。Presidents' Day は 2 月で誕生日と関係がありそうだし、年も合っているように見えるので、十分だと感じてしまいやすい
しかし間違っており、大規模言語モデルがこうした「事実」を確信に満ちた態度で語るのが怖い。確率的モデルがそう語るように作られていて、情報を確認したり検証したりする仕組みが十分ではなかったためだ
「信頼せよ、されど検証せよ」は逆説的で循環的だ。ChatGPT が提示したすべての事実を、より高次の真実の源だと信じる Wikipedia で確認しなければならないのなら、なぜ最初からそこから始めないのか。出力を検証するために Python 検証器を作らなければならないのなら、なぜ最初からそれをしないのか。
こうした巧妙な誤りによって大きな問題が起きるはずだ。オフバイワンエラーは見つけるのが非常に難しく、データはゆっくり汚染され、どんどん見当違いの方向へ進み、手遅れになってようやく気づくことになる。大規模言語モデルのゴミ出力が、ピザに接着剤を塗れというおすすめのように全部目立つものならむしろ幸いだが、現実には井戸に毒が少しずつ染み込むような形になるだろうし、不正確な出力が生活の重要な部分に入り込み始めると、本当に厄介なことになりかねない
自分でやったら 99% の精度も出せないと思う。こういう作業で本当に99.9% の精度なら、喜んで受け入れられる
たとえばポッドキャストアプリを 2 つ試していて、購読しているフィードの違いを見たかった。最初は 2 つの OPML ファイルを比較してほしいと頼んだが、結果は間違っていた。30 分かけてプロンプトを調整し手動で検証することもできたが、代わりに 2 つのファイルを比較するスクリプトを書いてもらったところ、うまく動いた。複雑な出力を一つひとつ確認する退屈な作業に比べると、スクリプトはレビューしておそらく正しいと確信するのが比較的簡単だ
元記事と似た作業を英語以外のデータで試したが、Claude がデータの一部を「親切に」英語へ翻訳するのを止められなかった。「画像の説明を含めて」と言うと翻訳し、「画像の説明を含めるが、翻訳や要約はしないで」と言うと、単に飛ばしてしまった
2 週間前にまったく同じ用途があり、学校から PDF ファイルを受け取って、カフェでスマホしか持っていなかった
ChatGPT を使った。記事でコードインタープリターでは .ics ファイルを直接生成できないと主張している点はその通りだが、この特定の問題は十分に解決可能だった。Android スマホで次のように進めた: PDF から有用な日付、時刻、メモをすべて抽出させ、.ics ファイル形式の内容をコード出力として作らせたうえで、コードインタープリターを使ってその内容をファイルに入れ、.ics 拡張子で保存させた
最後までうまく処理でき、スマホの gcal アプリでファイルをダウンロードして開き、すべての予定を取り込めた
コードインタープリターが ICS ファイルを「生成」できないという主張は、実行される Python 環境にその作業用の特定ライブラリがないためだ。ICS ファイルは特定形式のテキストファイルにすぎないので、十分に作成できる
ChatGPT-4o に映画タイトルのリストが入った txt ファイルを渡して、似たことをした。各映画の公開日を返させたうえで、好きな映画を記念日ごとに観られるよう、すべての映画公開日を毎年繰り返す記念日イベントとして含めた iCal ファイルを受け取った
友人何人かにもやってあげて、これまで合計 100 本以上の映画タイトルで成功率は 100% だった
だから 2001 年 9 月 11 日が火曜日だったことを覚えている。アルバムの発売日で、その日に良いアルバムも 1 枚あった
学校や雇用主のようなところは、いまだにPDF形式のカレンダーを多く配布している。
実際にカレンダーアプリへ取り込んで実用的に使える形式にすることより、ブランディングや視覚的な書式設定に多くの時間をかけている。
もっと堅牢に一般化できる2段階のプロセスが可能なのではないかと思う。まず、どんな文書でも読み取って日付、時刻とタイムゾーン、場所、URL、メモ、繰り返しの有無を表にし、次に、おおよそその構造を持つ表を読んで Google Calendar、iCal、ICS ファイルやリンクを生成する方式だ。
それぞれの段階を非常にうまく実行できるよう、モデルやエージェントを個別にファインチューニングすることもできそうだ。
ここで Siri は失敗したと思う。「月曜日に始まって90日間続くイベントを作って」のようなことも、いつも賭けに近かった。
自分で手作業したくないことを Siri もできなかった。それでは、あまりアシスタントとは言いがたい。
GPT4-o にインターネットバンキングの取引一覧のスクリーンショットを入れて、会社の確定申告用の取引一覧を得た。目で確認し、結果は正しかった。
その前には、プロダクトマネージャーが機能フラグを有効にする会社IDの一覧をスクリーンショットで送ってきた。すべて手入力する代わりに、GPT4-o でスクリーンショットからカンマ区切りの一覧を作らせたところ、これも完璧に動作した。
これはすごい。同時に、AI のおかげでもっと広まってほしい設計パターンもよく示している。相互運用可能で人間が読めるファイル形式だ。.ICS ファイルのようなものだ。
もっと多くのウェブサイトやアプリが、こうした形式のサポートを優先してくれるといい。AI を挟んで使いやすくなるだけでなく、より多くの人が創造的に拡張機能を作れるようになる。
この10年ほど、「シンプルさ」という名のもとにデータがよりサイロ化され、ファイルそのものの重要性が下がる流れがあったが、ある程度は巻き戻ってほしい。
ChatGPT でカレンダー項目をよく作っている。Google Calendar リンク、ICS ファイル、QRコードのどれも可能だった。
元の記事で何がうまくいかなかったのかは分からない。
最近は目的のために「Pythonを使って」と依頼することもできる。そうすればファイルは作ってくれるが、結果を Python の文字列や配列としてエンコードする必要があり、ミスが増える可能性がある。
カレンダー招待にAIを使うのは確かに相性がよい。似たような作業をここでやったが、ical はもっと単純だ。
https://hareeshganesan.com/2024/07/14/baby-calendar
gpt 4o で似たようにデータ入力を簡略化している。今でもかなり有用だが、まだ人々は大規模言語モデルで体系的な作業をあまりしていない。
だが、あまりにも明らかに有用なので変わっていくと思う。何らかのフォームにデータを入力する作業は、これから自動化できるし、実際に自動化されるだろう。特に情報が印刷物や印刷可能な形で存在するなら、カメラを向けてすばやく確認すればよい。
標識やポスターのような場所にある情報を吸い上げるのは、驚くほど有用になり得る。人々は、簡単にアクセスできるデジタル形式では存在しない多くの情報を視覚的に伝えるために、多大な労力とお金を費やしている。