7月13日で49歳になった。「そんな業務は部下に任せたらどうだ」というフレーズをやたらと耳にするようになったけど、受け入れるには抵抗がある。
目次
若者のチャレンジには協力するけど、おっさんで片付く業務はおっさんがやっとけばええねん派
業務を「させなきゃいけない」とか「教えてできるようにしてあげなければならない」という考え方、僕はあまり好きじゃない。任せるのはいつかしなきゃいけない。でも、「できるようにしてから任せる」という順番がどうもしっくりこない。
短い期間だけど、社内で研修をやっていた時期もある。一緒にデバッグしたり、ロジックを考えたりした記憶はあるけれど、何かを「教えた」記憶はほとんどない。「手を動かすの楽しいぜえ!」という気持ちは伝えたかもしれないけれど。
神にも髪のないスキンヘッドにも誓って、部下や若手の成長機会を奪いたいわけじゃない。僕なんかで片付く仕事は僕がやればいい。部下や若手には、見たことのない新しい世界をどんどん切り拓いてほしい。そのための成長を僕は全力で支えたい。
みんなが新しい世界を切り拓くためには、きっと、目先の仕事をこれまでの60%くらいの時間で片づけられる余裕が必要で、僕は、定年までの10年あまり、上司や先輩としてみんなの「余裕」を守るために、仕組みづくりや効率化の部分で協力したいと心から願っている。
今は僕もあまり余裕がないから、なかなかうまくいかないけど、この間、Vaultwardenを使った社内向けのパスワード管理環境を整えたのも、みんなの時間を5秒でも10秒でも削れたらいいなと思ったからなんだぜなんなんだこの告白。
こんなときだから触ってみようと思ったんだ――Difyを
考えてたんだ。チャットボットを起点とした営業ソリューションの新規提案(ハチワレ構文)。
それだけじゃない。周りの仕事を見ていると、手順書や引継ぎ書はモリモリ増えてるいっぽうで、今度は「どこに何が書いてあるのかわからない」という問題が起きているようにも見えるからRAGをサクっと組んだらええやんとか。
そんなタイミングでもあったのでほぼノーコードでAIアプリケーションを作成できるDifyと戯れてみることにした。夏休みの自由研究的なノリで。

Dify - 本番運用に耐える AI アプリを構築
あ、セルフホスト版です。Amazon Bedrockと接続しています。
いきなりデータ同期中でフリーズするウチのDify
Difyで就業規則問い合わせチャットボット30分で作ったなんて記事もよく見かけるので、本当に軽い気持ちではじめたわけですよ。
ただ、同世代のアラフィフにはわかるはず。軽いはじまりは割と長くなるんすよ。
知ってるでしょ、BOØWYのCLOUDY HEART。
GitHubから資材とってきて、docker compose up -d だけで起動するとかすげーな…と感心していたのも束の間。
ワークフロー開いたら「同期中…」で砂時計登場。いつになったら同期終わんねん。
ログを追ってみると、apiが発行したトークンをapi_websocketが検証できず、認証エラーになっている模様。片方が発行した「通行証」を、もう片方が「そんな通行証知らん」と拒否している状態。
どうやらウチの環境では、.envのSECRET_KEYが空だったため、それぞれが別の鍵を生成してしまっていたらしい。同じ鍵を明示的に設定すればよさそうだし、ワンライナーで片付けてしまえ!
sed -i "s|^SECRET_KEY=.*|SECRET_KEY=$(openssl rand -base64 42)|" .envコンテナ再起動して無事に「同期中」沼から脱出!
保存させてくれないウチのDify(v1.16.1固有の問題)
「同期中」沼から生還できた僕はさっそくRAGを組んでみようと、社内規程をいくつか食わせてみた。
あらかじめわかっていたことだけど、PDFをそのまま食わせても検索結果が微妙なので、ナレッジでパイプライン組んで、PDFをMarkdownに変換したうえでチャンクして保存しようとしたら
保存させてくれない!!なぜ!?
どうもDify 1.16.1の不具合っぽい。ローカルファイルを読み込むだけなのに、「認証情報が保存されてないからお引き取りください」と言われている状態らしい。ああ、ちょっと人相が悪いからって、突然「身分証明書を出せ」と職務質問してくるポリスメンね!僕なんてある部下に、初対面で「◯薬やってそう」と思われてたらしい。失礼な。座薬なら合法!!
閑話休題。執筆時点ではすでに修正PRが上がっているので、正式版への反映を待ちつつ、ひとまず暫定対処を打つ。
追記:v1.17.0がリリースされて解消されています
① Dockerコンテナから修正対象ファイルをぶっこぬく
docker compose cp \
api:/app/api/services/rag_pipeline/rag_pipeline_manage_service.py \
/tmp/rag_pipeline_manage_service.py
② 修正する
vi /tmp/rag_pipeline_manage_service.pyfor datasource in datasources:
if (
not datasource.declaration.credentials_schema
and not datasource.declaration.oauth_schema
):
datasource.is_authorized = True
continue
③ 構文チェック
python -m py_compile /tmp/rag_pipeline_manage_service.py④ Dockerコンテナに修正を反映する
docker compose cp \
/tmp/rag_pipeline_manage_service.py \
api:/app/api/services/rag_pipeline/rag_pipeline_manage_service.py
⑤ Docker再起動
docker compose restart apiよっしゃ!保存もできるようになった!
※コンテナを再作成すると変更は消えるので、あくまで正式版に修正が入るまでの暫定対処です。
RAGってルンルンアゲアゲジーニアスの略じゃないんかい!(違う)
去年の今頃、AWSのGenerative AI Use Cases JP(GenU)のハンズオンにも参加したことがあるので、RAGって意外とあっさり組めるもんなんだなという印象を持っていたし、Difyにしたって「サクっと組める」をウリにしてると思っていたので、環境さえ整えば1~2時間でそれなりの問い合わせシステムが作れる………と思っていたのだが………。
2日間の到達地点はいったんここまで。
できたこと
- 社内規程(PDF)をアップロードし、内容を読み取ってMarkdown化。JavaScriptで条文単位に明示的にチャンクさせてナレッジに格納。
- チャットから規程の条文に関する問い合わせはまあまあの精度。別表系がしんどい。
- 単純構造の表については、PDFをMarkdown化しても期待した精度は出ず、列見出しと値でKey-Valueっぽく変換して対処することで一定の精度まで改善!
今後の課題
- 「目で見てナンボ」の表の解釈。 役職と業務を掛け合わせてマルバツで定義する権限管理表なんかは、今のところうまく扱えていない。稟議を起票できるのは主任と課長、みたいな変換が必要になると推測される。
- 似た規程をたくさん拾っている(検索結果を見る限り、たぶん)。規程をたくさん取り込めば取り込むほど本来ひっかけてほしい規程にリーチできなくなる。また、規程A、規程B、規程Cにまたがるような質問への回答精度が悪い。
- 単純な番地検索が壊滅的。「A規程第n条は?」の質問には「見つかりません」と平然とウソをつくんだけど、調べてみると「意味が近い文章を探す」ベクトル検索と、「第n条」という文字列を正確に探す番地検索は、似ているようで別物らしい。キーワード検索との併用や、規程名・条番号をメタデータとして持たせる方法も試してみたい。
Difyおじさん界隈にようこそ
世の中のDifyに関する記事と比べたらのんびりとした時間軸ではあるものの、数時間で環境が出来上がり、数時間でナレッジベースの構築とチャットボットが完成し、次の日には「RAGの精度がヨー」とかわかったクチを利けるようになるんだ…なっ!!
AIってよくわかんねえんだよなとか、RAGってなんだよRAG FAIRかよとか、そんなこと言っちゃうおじさん諸氏には是非とも触ってみてもらいたい。
大丈夫。Dify使うおじさん多いから!笑

【おじさんでもできた】Difyで冷蔵庫の食材からレシピを提案するワークフローを作った

「インストール不要のAIツール」を試してみた--46歳おじさん、Difyに登録する|おじさんAIラボ

おじさんがDifyでマルチLLMをつくりました。|AI大好き|アイスターズAI研究所 川田
ここまで書いて僕は墓参りのために名古屋に来た。お盆だし。
1977年に生まれてよかった。PC-98全盛期も、クラウドとAIが当たり前になった今も技術に関われている。手を動かす楽しさも知っている。手を動かすための便利な基盤や技術に囲まれている。
まだ大したものは残せていないけど、次の世代に渡せるものは、案外たくさんあるんじゃないかと思っている。
いい時代に育ててくれてありがとう。
お墓で父ちゃんと母ちゃんにお礼を伝えたあと、ウェルビー今池に来てこの記事を仕上げている。サウナからのベトコンラーメンをキメて、英気とニンニクを養ったら、またDifyでRAGを組み直してみようかな。
試してみたいことは山ほどあるし!