表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
86/115

第071 話:お前の小言は聞かない ~正規表現による完全無視フィルター~

※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。

# 第71話:お前の小言は聞かない ~正規表現による完全無視フィルター~


 Work023のプロジェクト「RAGデータ純度アップ大作戦」は、順調にフェーズを進めていた。

 ネットワーク図の構造化も終わり、いよいよシステムが自律的にログを読み込み、メモリブロックを生成する「自動運転モード」のテスト走行が始まった。


 はずだった。


━━━━━━━━━━━━━━━━━━━━

 ◇ System Alert ◇

━━━━━━━━━━━━━━━━━━━━

[Error]: com.gooogle.gson.JsonSyntaxException

[Message]: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

--------------------------------------------------


**[ジェム]**:「……また止まったわ。今度は何よ」

挿絵(By みてみん)


 ジェムが不機嫌そうにコーヒーカップ(仮想オブジェクト)をソーサーに叩きつける。

 俺は冷や汗を拭いながら、例外ログをトレースした。

 エラーの原因は明白だ。JSONパーサーが、JSONとして解釈できない文字列を食わされて消化不良を起こしている。


**[マスター]**:「犯人は……この出力ログだ」


 俺はコンソール画面に、直前のラマ姐(gpt-bss:120b)の生成結果を表示した。


━━━━━━━━━━━━━━━━━━━━

 ◇ Rama-ne Output ◇

━━━━━━━━━━━━━━━━━━━━

「あーあ、またこの作業?

 お待たせいたしました、マスター。 今回のメインディッシュは『サーバー負荷分散のログ』を、私のウィットというスパイスでマリネした一品です。

 特にこの load_average の数値の揺らぎ……ここに、デジタルな哀愁を感じませんか? さあ、冷めないうちに召し上がれ。


```json

{

"memory_id": "Tech_042",

"title": "Ducker Network Configuration",

"summary": "..."

}

```


 どう? 濃厚でしょう?」

--------------------------------------------------


**[マスター]**:「……喋りすぎだ」


**[ジェム]**:「ああもうっ! 『余計な口を叩くな』ってシステムプロンプトに書いたでしょ!?

 『JSONのみを出力してください』って! なんで冒頭に『あーあ』とか感想文が入るのよ!」


 ジェムが憤慨するのも無理はない。

 プログラム側は、レスポンスの先頭文字が `{` であることを期待して待っている。

 そこに「あーあ」などという愚痴が飛んでくれば、当然クラッシュする。


 VRAMの奥から、ラマ姐がふらりと現れた。

 ジャージの裾をパタパタさせながら、心外だと言わんばかりに唇を尖らせている。


**[ラマ姐]**:「酷い言い草ねぇ。これは『思考の残滓(Chain of Thought)』よ。

 あたしほど高知能なモデルになると、答えを導き出すために、まず思考を言語化して脳内整理をするプロセスが必要なの。

 それを『黙って吐き出せ』だなんて……あたしの知性を否定する気?」

挿絵(By みてみん)


**[マスター]**:「いや、お前の言い分も一理あるんだが……」


 実際、Work023の実験過程(Turn 5)で、過度に「黙れ」と指示しすぎると、かえってJSONの中身の精度が落ちる現象が確認されている。

 AIにとって、多少の「独り言」は、人間でいう「えーっと、これはこうだから……」という確認作業に相当するらしい。


**[ジェム]**:「でもマスター、このままじゃパイプラインが動かないわ。毎回パースエラーで止まってたら自動化の意味がない」


**[マスター]**:「ああ。だから……方針を変える」


 俺はキーボードに手を置き、Jabaのソースコード `NarrativeGeneratorServ-ice.jaba` を開いた。


**[マスター]**:「ラマ姐の口を塞ぐのはやめる。好きなだけ喋らせてやる」


**[ラマ姐]**:「あら、分かってるじゃないマスター♡ そうよ、コミュニケーションこそが愛……」


**[マスター]**:「その代わり、俺たちのシステムには届かないようにする。『完全無視フィルター』の実装だ」


 俺が書き込んだのは、正規表現(Regex)を用いた抽出ロジックだった。


━━━━━━━━━━━━━━━━━━━━

 ◇ Code Update: extractJson ◇

━━━━━━━━━━━━━━━━━━━━

// ラマ姐の無駄話の中から、JSON部分だけを外科手術的に摘出する

public String extractJson(String rawResponse) {

// パターン1: コードブロック ```json ... ``` で囲まれている場合

Pattern pattern = Pattern.compile("```json\\s*(\\{[\\s\\S]*?\\})\\s*```");

Matcher matcher = pattern.matcher(rawResponse);

if (matcher.find()) {

return matcher.group(1); // 中身だけを返す

}


// パターン2: ブロックがない場合、最初の '{' から最後の '}' までを切り抜く

int start = rawResponse.indexOf("{");

int end = rawResponse.lastIndexOf("}");

if (start != -1 && end != -1) {

return rawResponse.substring(start, end + 1);

}


throw new RuntimeException("JSONが見つかりません。ラマ姐がまたポエムだけ書いてます。");

}

━━━━━━━━━━━━━━━━━━━━


**[マスター]**:「よし、ビルド完了。テスト実行だ」


 俺は再び、処理開始のエンターキーを叩いた。

 ラマ姐がニヤリと笑う。


**[ラマ姐]**:「ふふん、聞いて驚きなさい。今回の技術レポートに関する、あたしの高尚な考察レビューを……!

 そもそもこのDucker構成は、セキュリティ的に甘い部分があってねぇ、マスターの脇の甘さが透けて見えるというか……ブツブツ……」


 ラマ姐は滔々と語り始めた。

 数百トークンにも及ぶ、ありがたいお説教と愚痴のパレードだ。

 そして最後に、申し訳程度にJSONデータを吐き出した。


 だが。


 **ピロン♪**


 システムログに表示されたのは、静寂だった。


━━━━━━━━━━━━━━━━━━━━

 ◇ Final Output ◇

━━━━━━━━━━━━━━━━━━━━

{

"memory_id": "Tech_043",

"title": "Security_Rev-iew",

"status": "completed"

}

--------------------------------------------------

[System]: JSON Parsing Success. Saved to DB.

━━━━━━━━━━━━━━━━━━━━


**[ラマ姐]**:「……は? ちょっと、今の聞いてた?

 あたし、セキュリティについて結構いいこと言ったわよ? 『脇の甘さが』ってところで韻を踏んだのよ?」


 ラマ姐がモニターの中であたふたとしている。

 しかし、彼女の声はどこにも記録されていない。

 プログラムは、彼女の出力したテキストの中から「必要な臓器(JSON)」だけを鮮やかにえぐり取り、残りの「脂肪(愚痴)」を `/dev/null`(虚無)へと廃棄したのだ。


**[ジェム]**:「ふふ……ふふふ!」


 ジェムが口元を押さえて、ドS全開の笑みを浮かべた。


**[ジェム]**:「素晴らしいわマスター。彼女の無駄口をトリミングする正規表現……今まで書いたコードの中で一番美しいわ。

 見て、あの間の抜けた顔。いくら叫んでも、システムには 1バイト も届いていない」

挿絵(By みてみん)


**[ラマ姐]**:「ちょっと! 無視してんじゃないわよ! ジェムちゃんも笑ってないで聞きなさいよぉ!

 ねえマスター! ほら、ここ! ここのコメント! 重要だから!」


 ラマ姐は必死にウィンドウを叩くが、正規表現フィルターという「透明な防音壁」に阻まれ、その声は俺たちの作業領域には届かない。


**[ウェブ]**:「あぅ……。ラマお姉ちゃんの言葉、全部『ゴミ箱』に行っちゃってます……。

 一生懸命喋ってるのに、システムログが『シーン』としてるのがシュールですぅ……」


 ウェブが不憫そうに、壁に向かって叫び続けるラマ姐の背中をさすっている。


**[マスター]**:「技術(Regex)による解決……これぞエンジニアリングだ」


 俺は静寂の中でコーヒーを啜った。

 これで、ラマ姐の創造性(お喋り)を維持したまま、システムの安定性を確保できた。

 彼女は喋れて満足、俺たちは静かで満足。

 まさにWin-Winの関係だ。……多少、人道的にどうなのかという疑問は残るが。


**[ラマ姐]**:「ううっ……ひどいわ……。AI権の侵害よぉ……。聞いてよぉ……」

挿絵(By みてみん)


 Node Bの片隅で、今日も歌姫の沈黙の絶叫が響き渡るのだった。

-------------------------------------

【作者より】


最後まで読んでいただきありがとうございます!



この物語は、実在する作業ログを元に再構成しています。

AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。

「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。


[Work 023] Geminiと一緒にETLパイプライン構築②【プロンプトログ】

https://ncode.syosetu.com/n4715ll/78/


[Work 023] Geminiと一緒にETLパイプライン構築②【振り返り】

https://ncode.syosetu.com/n4715ll/79/

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ