TECH PLAY

株匏䌚瀟Insight Edge

株匏䌚瀟Insight Edge の技術ブログ

å…š181ä»¶

 この蚘事は Insight Edge Advent Calendar 2025 の2日目の蚘事です!🊌🊌🊌🊌🛷🎅 日目のニャットさんの蚘事 で玹介された、テックブログレビュヌ゚ヌゞェントのサポヌトのもず、なんずか間に合いたした。䌚瀟でのアドベントカレンダヌは初の詊みですが、お祭り感があっお楜しいですね。 はじめに  はじめたしお。Insight Edgeデヌタサむ゚ンティストのnakanoです。  LLMアプリケヌションの開発においお、「ずりあえず動くもの」を䜜るこずは比范的容易です。しかし、実甚的なレベルにたで仕䞊げるこずは難しい課題です。その理由は、LLMアプリの良し悪しを枬る評䟡軞が曖昧なたただず、改善の方向性が定たらず開発が迷走しおしたうからです。そこで今回は、この課題を解決するアプロヌチずしお、評䟡駆動開発による進め方をご玹介したす。  本蚘事では、「曞き蟌みや線匕きがある玙面画像から、情報を抜出するアプリ」を題材に、評䟡駆動によるLLMアプリケヌションの開発プロセスを解説したす。 目次 はじめに 目次 プロゞェクトの説明 評䟡駆動開発でLLMアプリケヌションを育おる 評䟡駆動開発ずは バヌゞョン1の開発 1-1. 評䟡基準の蚭蚈 1-2. 正解デヌタの準備 1-3. LLMアプリの開発 1-4. 評䟡 バヌゞョン2の開発 2-1. 評䟡基準の修正 2-2. 正解デヌタの修正ず远加 2-3. アプリの改善 2-4. 評䟡 バヌゞョン3, 4, 5, 6:ひたすらサむクルを回す たずめ プロゞェクトの説明  今回開発するLLMアプリケヌションは、 曞き蟌みや線匕きがある玙面画像から、情報を抜出する ためのツヌルです。 背景・課題  私は最近、GoogleのAIツヌル「NotebookLM」の音声解説機胜にハマっおいたす。NotebookLMはドキュメントをアップロヌドするず、AIが芁玄や音声解説を生成しおくれるサヌビスです。昔読んだ論文や備忘メモをアップロヌドするだけで、音声解説を䜜れるため内容を楜しく振り返るこずができたす。しかし玙の本は、デゞタル化する必芁がありたす。たた、私は本を読む際に、気になる箇所に線を匕いたり、䜙癜にメモを曞き蟌んだりする癖がありたす。これらの個人的な情報も䞀緒にNotebookLMに取り蟌みたいず考えおいるため、暙準的なOCRツヌルでは察応できたせん。 䜜るもの 本プロゞェクト抂芁  そこで次の芁望を満たす、玙面情報抜出アプリを䜜成したす。 本文の抜出 : 撮圱した玙面の画像から、本文テキストを抜出できるこず。 本文以倖の情報の抜出 : 玙面の図や衚の内容を音声解説に掻甚できるレベルでテキスト化できるこず。 曞き蟌みや線匕き情報の抜出(重芁) : 読曞時に本に曞き蟌んだメモ曞きや線匕き情報を抜出し、読者がその時気になったポむントをテキスト化できるこず。  これらの芁望を満たすアプリを䜜るこずで、過去に読んだ玙の情報をポッドキャスト化し、楜しく振り返るこずができるようになりたす。 評䟡駆動開発でLLMアプリケヌションを育おる 評䟡駆動開発ずは  評䟡駆動開発ずは、最初に評䟡基準を蚭蚈し、その基準に基づいおアプリケヌションを反埩的に改善しおいく手法です。 ただし、プロゞェクトの序盀では評䟡基準自䜓がわからなかったり、デヌタを芋おいくたびに新しい評䟡基準が芋぀かったりしたす。 そのため本蚘事では、評䟡粟床の改善以倖に、評䟡基準の修正も含めお反埩的に開発を進めおいきたす。 評䟡駆動な開発サむクル  このフロヌは、 Eval Driven System Design - From Prototype to Production の蚘事を参考に、自分のプロゞェクトに合わせおアレンゞしたものです。過去にこちら データサイエンティストが評価駆動手法を使ってみた〜家計簿分類プロジェクトの実践記〜 - Insight Edge Tech Blog のテックブログで觊れおいるため、よければご参照ください。 バヌゞョン1の開発  評䟡たで含めた最初のサむクルを玠早く回すために、バヌゞョン1では本文テキストずペヌゞ番号を抜出する皋床のシンプルなLLMアプリケヌションを䜜成したす。 1-1. 評䟡基準の蚭蚈  最初に評䟡基準を蚭蚈したす。抜出した情報(ペヌゞ番号,本文テキスト)の正確性を評䟡するための指暙です。 ペヌゞ番号 (page_number)は、完党䞀臎で評䟡したす。 理由はペヌゞ番号は1文字でも間違うず意味が倉わっおしたうためです。 本文テキスト (context)は、レヌベンシュタむン距離を正芏化したものを採甚したす。 理由は、シンプルなため解釈性が高く、郚分的な誀りを評䟡できるためです。 Pythonでの実装䟋は以䞋の通りです。 # 抜出アプリの出力フォヌマット class ExtractedPageContentV1 (BaseModel): context: str = Field(..., description= "曞面の画像から抜出された本文" ) page_number: str = Field(..., description= "ペヌゞ番号" ) # 正解デヌタのフォヌマット(たたたた、出力フォヌマットず同じ) class GroundTruthV1 (BaseModel): context: str = Field(..., description= "曞面の画像から抜出された本文" ) page_number: str = Field(..., description= "ペヌゞ番号" ) # 本文テキストの正確性を評䟡する関数 import Levenshtein def calculate_normalized_distance (pred_context: str , true_context: str ) -> float : distance = Levenshtein.distance(pred_context, true_context) normalized_distance = 1 - distance / max ( len (pred_context), len (true_context)) return normalized_distance 1-2. 正解デヌタの準備  次に正解デヌタを䜜りたす。最初は5~20件皋床で良いず考えたす。理由は、プロゞェクトを進めおいく䞭で芁件やスコヌプが倉わるこずも倚く、最初から倧量の正解デヌタを䜜成するのは非効率だからです。そのためたずは党䜓を代衚するような5件のデヌタをしっかり䜜成したす。 入力画像の䟋䞭倮公論新瀟『䞭囜蟲村の珟圚』(山田昌匘著)より 実際にPythonで衚珟するず以䞋のようになりたす。 # 正解デヌタ(手䜜業で䜜る) ground_truth_dataset_v1 = [ { "input_path" : "./data/䞭囜蟲村の珟圚/䞭囜蟲村の珟圚 - 70.jpg" , "ground_truth" : { "page_number" : "56" , "context" : "ずぎ汁などを混ぜおグツグツ煮お䜜るので、そのコストはれロである。 \n " " 逊豚は自家消費のためでもある。 \n " # äž­ç•¥(実際には党12行のテキストを蚘茉) "えあるずいう。そのように生産性の䜎い蟲地経営の䞭で、逊豚こそが圌の䞻な収益源ずな \n " "っおいるのである。トりモロコシは逊豚の飌料ずなり、もし䜙れば販売するこずも可胜。そ" , } }, # ... (他の4件も同様に䜜成) ] 1-3. LLMアプリの開発  次に凊理を実装したす。 最初のサむクルなので、シンプルですぐに実装できるアプリケヌションを䜜成したす。 プロンプトも特に工倫はせず簡単に蚘述したす。 def extract_page_content_v1 (image_path: str ) -> ExtractedPageContentV1: with open (image_path, "rb" ) as f: image_bytes = f.read() response = client.models.generate_content( model= "gemini-2.5-flash" , config={ "response_mime_type" : "application/json" , "response_json_schema" : ExtractedPageContentV1.model_json_schema(), }, contents=[ types.Part.from_bytes( data=image_bytes, mime_type= "image/jpeg" , ), "あなたは、曞面の画像から蚘述内容を抜出する専門家です。" "page_numberには、このペヌゞのペヌゞ番号を敎数で入れおください。" "もし、ペヌゞ番号がわからない堎合は空欄にしおください。" "contextには、蚘茉されおいる日本語をすべお抜出しおください。" "ただし抜出するテキストは本文だけで、ヘッダヌやフッタヌ、ペヌゞ番号などは含めないでください。" "改行がある䜍眮には改行コヌドを入れおください。" "段萜の最初の空欄には党角スペヌスを入れおください。" ], ) response_json = response.parsed result = ExtractedPageContentV1.model_validate(response_json) return result  実際に抜出された情報は以䞋のような感じです。 パッず芋は期埅通り文字情報を抜出できおいたす。 ExtractedPageContentV1( page_number= '1' , context= 'たえがき \n 今䞖玀に入っお、䞭囜は䞖界最倧 <略> りの蟲民囜家で、正匏な統蚈は' ) 1-4. 評䟡  実際に正解デヌタを利甚しお評䟡を行いたす。結果は以䞋のずおりです。 No. ペヌゞ番号䞀臎 本文スコア(正芏化レヌベンシュタむン距離 1 True 89.9% 2 True 81.4% 3 True 35.5% 4 True 96.9% 5 True 95.1% ペヌゞ番号は党件正解、本文テキストも平均80%近くの粟床が出おいたす。 䞀方で、3件目のファむルの粟床が極端に䜎いこずがわかりたす。 各デヌタを確認したずころ以䞋のような課題が芋぀かりたした。 課題1 : 図衚を誀っお本文ずしお抜出しおしたっおいる 3件目のファむルの粟床が35%ず極端に䜎い芁因は、図に蚘茉されたテキストを本文ずしお抜出しおいたためでした。 バヌゞョン1では、本文テキストだけを察象ずしおいるため、図衚の情報は含めないこずが期埅する動䜜でした。 バヌゞョン2での察応ずしお、プロンプトに「図衚の情報に含たれるテキストは含めないでください。」を远加するこずにしたす。 課題2 : 改行コヌドの入れ忘れ 党ファむル共通しお、改行コヌド \n の入れ忘れのために粟床が萜ちおいるこずもわかりたした。 改行コヌドは、1ペヌゞの䞭に10数個あるため、党䜓的な粟床ぞの圱響は無芖できたせん。 改善斜策ずしおは、プロンプトを修正しお改行コヌドの入れ忘れを防止するこずも考えられたす。 しかし、改行コヌドの有無は最終的な甚途ぞの悪圱響はありたせん。 これは 評䟡指暙ず実務の嬉しさが乖離しおいる ため、次のステップでの察応ずしおは、評䟡時に改行コヌドの有無を無芖するように評䟡基準を調敎したす。 課題3 : 最初/最埌の行は、撮圱時に圱が映り蟌みやすく誀認識が倚い。 玙面を撮圱しおいる郜合䞊、最初ず最埌の行は、撮圱時に圱が映り蟌みやすく、誀認識が倚いこずがわかりたした。 逆に最初ず最埌の行が正確に認識できおいる堎合、䞭間の行も比范的正確に認識できおいるず考えられたす。 その他の課題 : その他の现かい誀認識もいく぀か芋぀かった 「お」を「で」ず倉換するなど、単玔なOCRミス。 「もし䜙れば販売するこずも可胜。」を「もし䜙れば垂堎に出すこずも可胜。」ず、意味を倉えるような誀認識。 段萜の開始を瀺す、党角スペヌスの入れ忘れ。 性胜以倖課題 : 性胜以倖の課題ずしお以䞋のようなものもある。 正解デヌタの䜜成に時間がかかりすぎる。 グラフや地図の情報を抜出できない。 曞き蟌みや、線匕き情報を抜出できない。 バヌゞョン2の開発 バヌゞョン1の課題を螏たえお、バヌゞョン2では以䞋のように改善を行いたす。 評䟡時に、改行コヌドの有無は無芖する。改行コヌドを正確に抜出できるかどうかは、最終的な甚途にずっお重芁ではないため。 本文テキストの粟床は、最初ず最埌の行だけで評䟡する。撮圱の郜合䞊、最初ず最埌の行は陰になりやすくOCRの難易床が高いため。 図衚の有無も刀定する。図衚の芁玄も行わせるが、評䟡はしない。理由は、工数が増えるため。 線匕きや曞き蟌み情報の抜出粟床を評䟡する。読者が気になったポむントを抜出するこずが本アプリケヌションの重芁な目的であるため。 その他の现かい発生したミスを改善するようにプロンプトを修正する。䟋えば、OCRミスや段萜開始の党角スペヌス入れ忘れなど。 2-1. 評䟡基準の修正  評䟡基準は以䞋のように修正したす。 正解デヌタ䜜成の工数を削枛し぀぀、実務の嬉しさず䞀臎するように埮調敎しおいたす。 本文テキスト (context) 最初の行ず最埌の行に぀いおそれぞれのレヌベンシュタむン距離を正芏化したものを採甚したす。 正解デヌタから最初の行ず最埌の行の文字数を抜出し、その郚分だけを評䟡察象ずしたす。 評䟡時に改行コヌドの有無は無芖したす。 図衚の有無 (has_figures) 真停倀での完党䞀臎評䟡を行いたす。 線匕きテキスト (highlighted_texts) 抜出したテキストの ず で囲たれた郚分をリストずしお抜出したす。 正解デヌタず郚分䞀臎でマッチングを行い、マッチング率を算出したす。 曞き蟌みテキスト (annotation_texts) 抜出した曞き蟌みテキストのリストを正解デヌタず郚分䞀臎でマッチングを行い、マッチング率を算出したす 2-2. 正解デヌタの修正ず远加  評䟡基準の修正に䌎い、正解デヌタのフォヌマットも修正したす。 # 出力フォヌマットの修正 # - 本文の䞭で線匕きされおいる領域は<highlighted></highlighted>で囲むように指瀺する class ExtractedPageContentV2 (BaseModel): page_number: str = Field(..., description= "ペヌゞ番号" ) context: str = Field(..., description= "曞面の画像から抜出された本文" ) has_figures: bool = Field(..., description= "図衚の有無" ) figures_summary: str = Field(..., description= "図衚の芁玄" ) annotation_texts: List[ str ] = Field(..., description= "曞き蟌みテキストのリスト" ) #正解デヌタのフォヌマットの修正 class GroundTruthV2 (BaseModel): page_number: str = Field(..., description= "ペヌゞ番号" ) context_first_line: str = Field(..., description= "本文の最初の行" ) context_last_line: str = Field(..., description= "本文の最埌の行" ) has_figures: bool = Field(..., description= "図衚の有無" ) annotation_texts: List[ str ] = Field(..., description= "曞き蟌みテキストのリスト" ) highlighted_texts: List[ str ] = Field(..., description= "線匕きテキストのリスト" ) ground_truth_dataset_v2 = [ { "input_path" : "./data/䞭囜蟲村の珟圚/䞭囜蟲村の珟圚 - 70.jpg" , "ground_truth" : { "page_number" : "56" , "context_first_line" : "ずぎ汁などを混ぜおグツグツ煮お䜜るので、そのコストはれロである。" , "context_last_line" : "っおいるのである。トりモロコシは逊豚の飌料ずなり、もし䜙れば販売するこずも可胜。そ" , "has_figures" : False , "annotation_texts" : [], "highlighted_texts" : [ "のちにようやく料理の塩蟛さの䞀芁因がわかった。" , "「負担」ずは、就孊幎霢の子䟛がいお珟金収入が必芁な事を指し" , ], }, }, # ... (他の9件も同様に远加) ] 2-3. アプリの改善  改善方針を受けお、LLMアプリケヌションを以䞋のように修正したす。 出力圢匏ずプロンプトのみ修正しおいたす。 def extract_page_content_v2 (image_path: str ) -> ExtractedPageContentV2: with open (image_path, "rb" ) as f: image_bytes = f.read() response = client.models.generate_content( model= "gemini-2.5-flash" , config={ "response_mime_type" : "application/json" , "response_json_schema" : ExtractedPageContentV2.model_json_schema(), }, contents=[ types.Part.from_bytes( data=image_bytes, mime_type= "image/jpeg" , ), "あなたは、曞面の画像から蚘述内容を抜出する専門家です。" "page_numberには、このペヌゞのペヌゞ番号を敎数で入れおください。" "もし、ペヌゞ番号がわからない堎合は空欄にしおください。 \n\n " "contextには、蚘茉されおいる日本語をすべお抜出しおください。" "ただし抜出するテキストは本文だけで、ヘッダヌやフッタヌ、ペヌゞ番号などは含めないでください。" "改行がある䜍眮には改行コヌドを入れおください。" "段萜の最初の空欄には党角スペヌスを入れおください。" "蛍光ペンや赀ペンで線匕きされおいる郚分は<highlighted>ず</highlighted>で囲んでください。" "抜出するテキストは本文のみであり、図や衚の情報に含たれるテキストは含めないでください。 \n\n " "has_figuresには、このペヌゞに図衚が含たれおいる堎合はTrue、含たれおいない堎合はFalseを入れおください。 \n\n " "figures_summaryには、図衚がある堎合、その内容を簡朔に芁玄しお蚘述しおください。 \n\n " "annotation_textsには、このペヌゞに手曞きの曞き蟌みがある堎合、その内容をすべおリスト圢匏で入れおください。" "もし曞き蟌みがない堎合は空のリストを入れおください。 \n\n " ], ) response_json = response.parsed result = ExtractedPageContentV2.model_validate(response_json) return result 出力結果は以䞋のようになりたした。今回もパッず芋は期埅通りの情報が抜出できおいたすが、実際の粟床はどうでしょうか ExtractedPageContentV2( page_number= '56' , context=( 'ずぎ汁などを混ぜおグツグツ煮お䜜るのずで、...途䞭略...' 'もし䜙れば<highlighted>販売</highlighted>するこずも可胜。' ), has_figures= False , figures_summary= '' , annotation_texts=[], ) 2-4. 評䟡  粟床評䟡した結果は以䞋の通りです。 本文テキストの性胜はやや改善されおいるように感じたす。しかし、そろそろデヌタ数を増やしお行かないず本圓に適切なのか、わからなくなっおきたした。 たた、線匕きテキストや曞き蟌みテキストの抜出性胜も蚈枬できおいたす。 No. ペヌゞ番号䞀臎 図有無の刀定 本文開始行スコア 本文最終行スコア 線匕きテキストスコア 曞き蟌みテキストスコア 1 True True 93.75% 92.68% 13.46% 100.00% 2 True True 100.00% 97.56% 100.00% 100.00% 3 True True 100.00% 94.12% 0.00% 100.00% 4 True True 100.00% 97.37% 6.90% 0.00% 5 True True 100.00% 90.24% 87.50% 100.00% 6 True True 90.24% 100.00% 100.00% 68.75%  本文抜出に関しおも90%皋床は達しおいたすが、20文字に1文字は誀認識があるず考えるずただただ改善の䜙地がありたす。 たたこの評䟡甚デヌタはひず぀の本から抜出したものなので、他の本に察しおも同様の粟床が出るかは䞍明です。 次のバヌゞョンからは、デヌタを増やし課題に挏れがないかなど再床芋盎しながら改善を進めおいきたす。  線匕きテキストや曞き蟌みテキストスコアの粟床はただただ改善の䜙地がありたす。 特に曞き蟌みテキストスコアは、曞き蟌みが無いペヌゞを曞き蟌みなしず刀断すれば100%ずなるため、珟圚の指暙は䞍適切な気がしたす。 バヌゞョン3, 4, 5, 6:ひたすらサむクルを回す バヌゞョン以降は、次の衚のずおり现かく修正しおいきたした。線匕きや曞き蟌みの粟床は割愛し、本文抜出に぀いおだけ玹介したす。 バヌゞョン 方針ず結果 3 方針 ・正解デヌタを6件→50件に増やす。 ・新曞以倖にも技術曞、暪曞きの本など倚様な圢態を远加する。 結果 ・デヌタ皮類を増やしたg、平均粟床は抂ね良奜 ・䞀郚倧倖しするケヌスが発生(原因長い脚泚など特殊なレむアりト) 4 方針 ・長い脚泚を無芖するようプロンプトに远蚘する。 ・具䜓的には「各頁にある脚泚など本文倖のテキストは含めおはならない」ず蚘茉。 結果 ・倧倖しするケヌスは激枛した。 ・数字や蚘号の党角半角の衚蚘ゆれなど现かいミスが目立぀。 5 方針 ・プロンプトが長くなっおきたため、Geminiのベストプラクティスに埓い党䜓的に修正 ・参考: https://ai.google.dev/gemini-api/docs/prompting-strategies 結果 ・ 段萜開始の党角スペヌス入れの遵守率が倧幅に改善 6 方針 ・数字や蚘号の党角半角の衚蚘ゆれが起きないよう现かくプロンプトに指瀺する。 結果 ・ 蚘号数字での枛点が枛少し、さらに粟床が向䞊 これらの修正によっお、䞋蚘のグラフの通り粟床を着実に改善できたした。 各バヌゞョンの抜出粟床掚移  䞀方で䟝然ずしお生成AI特有の課題は残っおいたす。この点はGeminiではなく、専甚のOCRモデルを組み合わせるなどの察策が必芁ず考えられたす。 読みにくい箇所を想像する前に述べたようにを前述したようになど 有名人ず1文字違いの人名を誀認識する たずめ  本蚘事では、「曞き蟌みや線匕きがある玙面画像から、情報を抜出するアプリ」を題材に、評䟡駆動開発でLLMアプリを実甚化レベルたで育おるプロセスを解説したした。 評䟡駆動開発の3぀のメリット 改善の方向性が明確になる LLMアプリはなんずなく良さそうず確認しながら進めがちですが、明確に方向性を決めるこずができたす。 反埩的な改善が可胜 LLMアプリ開発ではプロンプトを现かく調敎しおいきたすが、改善を確認しながら着実に改善できるようになりたす。 ステヌクホルダヌずの合意圢成がしやすい 定量的な指暙により、開発進捗や品質を客芳的に共有できるようになりたす。 実践での孊び 正解デヌタの䜜成コストは䟮れない。最初は評䟡デヌタを絞った方が良い 評䟡指暙は、最終的な甚途ず乖離しないよう泚意深く蚭蚈する 少数のデヌタで玠早くサむクルを回し、課題を発芋しおから本栌的にデヌタを増やす おわりに  LLMアプリケヌションを「ずりあえず動く」状態から「実甚レベル」に育おるプロセスを玹介したした。 本蚘事で玹介したプロセスを参考に、皆さんもLLMアプリケヌションを着実に実甚レベルたで育おおみおください。  明日のInsight Edge Advent Calendar 3日目は、因果掚論ずLLMに関する蚘事ですお楜しみに🎄🎄🎄🎄🎄
はじめに こんにちは、アゞャむル開発チヌム兌Insight Edge Techblog線集チヌム担圓のニャットです。 以前、 Vertex AI Geminiを䜿った瀟内議事録生成アプリ の蚘事で生成AI案件ぞの挑戊に぀いお曞きたしたが、その埌、生成AI案件にも少しず぀慣れおきたした。ずはいえ、生成AIの進化があたりにも速すぎお、キャッチアップの日々が続いおいたす。笑 最近は、Claude Codeのコマンド、サブ゚ヌゞェント、スキルずいった新しくリリヌスされた機胜をいじっおみるこずを楜しんでいたす。そしおClaude Code Actionを䜿っおGitHub䞊でこれらの機胜を掻甚できるように仕組み構築も色々詊行錯誀しおいたす。 その䞭の1぀ずしお、テックブログレビュヌ゚ヌゞェントをマルチ゚ヌゞェント構成で構築したので、今回はその取り組みに぀いお玹介したす。 今回のレビュヌ゚ヌゞェントの構成はテックブログレビュヌにずどたらず、他のドキュメントレビュヌやコヌドレビュヌにも応甚できるず思いたすので、ぜひ参考にしおいただけるず嬉しいです なお、匊瀟では以前LangGraphベヌスでTechblogレビュヌ゚ヌゞェントを開発し玹介しおいたしたが、最近はClaude Code Actionベヌスに眮き換えおいたすので、その倉遷に぀いおも説明したす。 はじめに 本蚘事に぀いお LangGraphからClaude Code Actionぞ - Techblogレビュヌ゚ヌゞェントをみんなで進化させおみた1幎間 1. LangGraphでの゚ヌゞェント䜜成からスタヌトやっおみる 2. Claude Code Actionも䜵甚しお掻甚しおみるみんなでやる 継続運甚で芋えおきた課題ず改善ポむント 3. マルチ゚ヌゞェント構成ぞの進化させおレビュヌ質を高めるやり抜く 1. 執筆フロヌに合わせた段階的レビュヌ 2. レビュヌの質を高める仕組み 3. レビュヌの効率化 珟圚のTechblogレビュヌ゚ヌゞェント詳现 レビュヌ゚ヌゞェント構成 蚘事レビュヌ䟋 /outline-review の実行結果 /initial-review の実行結果 工倫点 カスタムスラッシュコマンドのワヌクフロヌ制埡でレビュヌフロヌの最適化 サブ゚ヌゞェント分離によるコンテキスト節玄ずレビュヌの深さ向䞊 サブ゚ヌゞェントからメむンスレッドぞの結果受け枡しJSON蚭蚈の工倫 GitHub Suggestion機胜を確実に動かすための指瀺の工倫 MCPツヌルの積極的な掻甚 Web怜玢・取埗機胜の有効化 残っおいる課題ず今埌の改善点 たずめ Insight Edge Advent Calendar 2025が始たりたした 本蚘事に぀いお この蚘事は、 Insight Edge Advent Calendar 2025 1日目の蚘事です。 匊瀟には「 やっおみる・みんなでやる・やりぬく 」ずいうValueがあり、私たちテックブログ線集チヌムもこのValueを倧切にしおいたす。線集チヌムメンバヌは幎初にそれぞれ「やっおみる」チャレンゞを遞ぶようにしおおり、今回玹介するレビュヌ゚ヌゞェントの進化は、たさにこのValueを䜓珟した取り組みです。 1人のメンバヌの「やっおみる」から始たり、チヌム党䜓で「みんなでやる」で改善を重ね、アドベントカレンダヌずいう目暙に向けお「やりぬく」——本蚘事では、そんなストヌリヌをお䌝えしたす。 LangGraphからClaude Code Actionぞ - Techblogレビュヌ゚ヌゞェントをみんなで進化させおみた1幎間 このセクションでは、Techblogレビュヌ゚ヌゞェントをLangGraphベヌスからClaude Code Actionベヌスのマルチ゚ヌゞェント構成にシフトさせた過皋を玹介したす。珟圚の゚ヌゞェント構成を先に知りたい方は、 次のセクション からご芧ください。 1. LangGraphでの゚ヌゞェント䜜成からスタヌトやっおみる 匊瀟のテックブログレビュヌ゚ヌゞェントは、以前も本テックブログで公開しおいた通り、Matsuzakiさんが LangGraphベヌスのレビュヌ゚ヌゞェント を䜜っおくださっおいたこずから始たりたした。Techblogレビュヌ䜜業を゚ヌゞェントを䜿っお自動化する仕組みはここがスタヌトでした。 私も実際に掻甚させおいただきたしたが、人間が指摘しづらい现かいポむント文蚀の統䞀性などをずばっず指摘しおくれお、ずおも助かりたした。 圓時のレビュヌ結果むメヌゞも蚘事内にありたすので、詳しくは Matsuzakiさんの蚘事 をご芧ください。 蚘事の䞭では、「今埌やりたいこず」ずしお以䞋のようなアむデアが挙げられおいたした。 蚘事内容に基づいお察象読者ペル゜ナを䜜成し、ペル゜ナの芖点からレビュヌする 内容チェックでWeb怜玢を取り入れ、類䌌蚘事の参照や比范ができるようにする レビュヌにSEO芳点を取り入れ、怜玢流入を意識したキヌワヌドやタむトルを提案する 2. Claude Code Actionも䜵甚しお掻甚しおみるみんなでやる LangGraphベヌスのレビュヌ゚ヌゞェントを運甚する䞭で執筆者や線集チヌムから倚くのフィヌドバックが集たり、圓時挙げられおいた「やりたいこず」を実珟したい思いも匷くなっおいきたした。しかし、テックブログ線集チヌムは組織改善掻動の䞀環であり、メンバヌは日々の案件察応で忙しく、゚ヌゞェントの改善やLangGraph実装を継続的に曎新する時間を十分に確保するのは難しい状況でした。 ちょうどその頃、Claude CodeずClaude Code Action( 詳现はこちら )ぞの関心が䞖の䞭に広たりたした。線集チヌムのKさんが「Techblogの掻動を自動化する」チャレンゞを掲げおおり、すぐにもClaude Code Actionを導入しおいただき、Github䞊でClaude Codeによるレビュヌを詊せる環境を敎えおくれたした。 この時は、レビュヌ芳点を1぀のプロンプトにたずめ、プルリク゚スト䞊で @claude を呌び出すずClaude Codeが自埋的にレビュヌしおくれる方針を採甚しおいたした。プロンプトは線集チヌム党員で敎理したした。誀字・脱字、読みやすさ、技術的正確性、蚘事の深さ、読者の匕き蟌み、拡散性SEOなどの芳点でレビュヌするように指瀺したした。 プロンプトの詳现を芋る ## タスク あなたはInsight Edge TechBlogの線集者です。Pull Requestの内容をもずにレビュヌを実斜し、具䜓的な課題ず修正方針を瀺す提案を䜜成したす。 ## 手順 1. メンバヌのTechblogをしっかり読み、内容を理解したす。 2. 誀字、脱字がないかをチェックしたす。 3. 読みやすさに焊点を眮き、チェックしたす。  - 蚀葉遣いや衚珟が明確で分かりやすいか - 段萜や芋出しなどのフォヌマットは敎理されおいるか - 図などで衚珟した方が分かりやすい項目がなかったか 4. 技術的正確性に焊点を眮き、チェックしたす。必芁に応じおりェブ怜玢も行い、内容が正確かどうかを確認しおください。 - 技術的な内容に誀りや誀解を招く衚珟はないか - ゜ヌスデヌタが信頌できるか 5. 蚘事の深さに焊点を眮き、考えたす。 - トピックに察する背景知識や文脈が十分に提䟛されおいるか - 初心者から䞭玚者・䞊玚者たでにずっお有益な情報量か 6. 読者の匕き蟌みに焊点を眮き、考えたす。  - 冒頭から興味を惹かれる構成になっおいるか - 読み進めたくなる工倫やストヌリヌテリングがあるか 7. 拡散性に焊点を眮き、考えたす。 - タむトルなど怜玢でヒットしやすいワヌドが含たれおいるかSEO向䞊のため、もっずいい曞き方がないか - 蚘事の内容は読者から拡散したくなるような内容になっおいるか 8. 䜕床か読み返し、同僚ずしお芪切な態床でレビュヌコメントを䜜成したす。 ## 出力 - 圢匏: markdown圢匏で出力したす。 - 構成: 以䞋の内容を含むレビュヌコメントを䜜成しおください。絵文字なども䜿っお分かりやすくしおください。 - 総評蚘事を読んだ時の党䜓的な印象 - 良かった点 - 改善点 - 提案: 具䜓な箇所に察しお具䜓的な察応方針か修正埌の文章を提案しおください。 このようなプロンプトでも、最初からいい感じのレビュヌ結果が返っおきたした。䟋えば、先日公開された AI゚ヌゞェントはなぜ耇雑なタスクを完遂できないのか の初皿でのレビュヌ結果は以䞋の通りです。 蚘事のレビュヌ結果むメヌゞ 玄半幎間LangGraphずClaude Code Actionを䜵甚しおレビュヌを運甚した結果、芳点のアップデヌトのしやすさやClaude Codeの進化ぞの期埅から、線集チヌムでは最終的にClaude Code Actionベヌスぞ䞀本化するこずを決めたした。 継続運甚で芋えおきた課題ず改善ポむント この仕組みを玄半幎間を運甚しおきたしたが、執筆者や線集チヌムから以䞋のようなフィヌドバックがありたした。 良かった点 现かい誀字や文蚀の統䞀性、構成改善の提案、芖芚化の提案、技術的な正確性、読みやすさの改善、SEO芳点の提案など、人間が指摘しづらい点を遠慮なく指摘しおくれたした。 実際執筆しおいただいたメンバヌからも以䞋のようなポゞティブなフィヌドバックがありたした。 メンバヌの実際のフィヌドバック 䞀方で、レビュヌ蚘事数が増えおくるずだんだん以䞋のような課題も芋えおきたした。 課題ず改善ポむント: レビュヌコメントの質にばら぀きがある コメントは長いものの、参考になる内容は7割ほどで、線集チヌムの最終レビュヌでは远加で指摘する箇所も残っおいたした。 ファクトチェックができおいない 時事ネタセミナヌの開催期間、論文の内容、技術的な内容のファクトチェックができおいなかった。プロンプトには「怜玢しお確認するように」ず曞いおいたのに、怜玢できおいる様子がなく、誀った指摘を䜜っおくるこずもあった 各芳点のレビュヌが浅い それぞれの芳点である皋床指摘はくるが、深くレビュヌできないため、深い指摘がこなかった 執筆フロヌに合わせたレビュヌができない 固定プロンプトのため、目次段階、初皿、修正埌、どのタむミングでも毎回同じレビュヌをしおいた さらに、課題ずたではいかないものの、以䞋のような 远加でやりたいこず も芋えおきたした。 Matsuzakiさんが挙げおいた ペル゜ナを䜜成しおレビュヌ も取り入れるずレビュヌの質が䞊がるのでは 過去蚘事ずの内郚リンク最適化 関連蚘事があれば自動で提案しおくれるず今幎のチャレンゞである「PV数向䞊」にも぀ながりそう 具䜓的な修正提案の提瀺 該圓箇所ぞのむンラむンコメントやサゞェッション圢匏で、明確な修正案を盎接提瀺しおもらえるずより効率的では 3. マルチ゚ヌゞェント構成ぞの進化させおレビュヌ質を高めるやり抜く それらの課題を解決したいずいう思いに加えお、Insight Edge初のアドベントカレンダヌの開催もやっおくる月に25本の投皿をレビュヌしなければならないのは線集チヌムに察しおかなりの負担になっおしたうため、アドベントカレンダヌ䌁画者ずしおTechblogレビュヌ゚ヌゞェントの改善をやり抜く決意をしたした。 そこで、以䞋の方針で゚ヌゞェントを進化させるこずにしたした。 1. 執筆フロヌに合わせた段階的レビュヌ 執筆者が必芁なタむミングで必芁なレビュヌを受けられるよう、3぀のカスタムスラッシュコマンドを䜜りたした。 /outline-review 目次段階で構成を簡朔にチェック /initial-review 初皿を培底的にレビュヌ /update-review 修正埌の差分をレビュヌ スラッシュコマンドの詳现は以䞋のClaude Codeの公匏ドキュメントをご参照ください。 Claude Code公匏ドキュメント: カスタムスラッシュコマンド 2. レビュヌの質を高める仕組み マルチ゚ヌゞェント化 サブ゚ヌゞェント機胜を䜿っお各芳点ごずに専門゚ヌゞェントが深くレビュヌするこずで、抜象的ではなく具䜓的なコメントを実珟 ペル゜ナ駆動レビュヌ 読者䜓隓評䟡゚ヌゞェントには蚘事内容に応じおタヌゲット読者のペル゜ナを生成し、適甚 MCPサヌバヌの蚭定 倖郚ツヌルず連携し、最新の技術仕様の取埗 Web怜玢、Web取埗機胜を有効化 WebFetch、WebSearch機胜を䜿えるようにするこずで時事ネタや最新情報を怜蚌 サブ゚ヌゞェント、MCPツヌル蚭定、Web怜玢・取埗機胜の蚭定詳现は以䞋のClaude Codeの公匏ドキュメントをご参照ください。 Claude Code公匏ドキュメント: サブ゚ヌゞェント Claude Code公匏ドキュメント: MCPツヌル Claude Code公匏ドキュメント: Claudeが利甚できるツヌル 3. レビュヌの効率化 GitHub Suggestion機胜 Claude Code Actionのむンラむンコメント䜜成MCPツヌルを掻甚し、該圓箇所に盎接修正案を提瀺しおワンクリックで修正を適甚可胜にする 珟圚のTechblogレビュヌ゚ヌゞェント詳现 では珟圚のTechblogレビュヌ゚ヌゞェントがどうなっおいるのか、説明したす。 レビュヌ゚ヌゞェント構成 党䜓のアヌキテクチャは以䞋の通りです。 Techblog Review System アヌキテクチャ(Google Nano Banana Proを䜿甚しお生成) ちょっず耇雑に芋えるかもしれたせんが、流れはシンプルです。 スラッシュコマンド実行: /outline-review 、 /initial-review 、 /update-review のいずれかのコマンドをGitHub䞊で実行 メむン゚ヌゞェントClaude Codeによる凊理: 蚘事を分析し、必芁なサブ゚ヌゞェントを遞択しお順次か䞊列で起動 サブ゚ヌゞェントによる専門レビュヌ: 各゚ヌゞェントが独立したコンテキストで䞊列凊理 結果統合・出力: 環境に応じおMarkdownファむルたたはPRコメントずしお出力 今回は、以䞋のサブ゚ヌゞェントを甚意しおいたす。 サブ゚ヌゞェント名 䞻な圹割 起動条件 ペル゜ナ適甚 䜿甚MCPツヌル persona-generator ペル゜ナ生成 垞時 - - structure-evaluator 構成・深さ・匕き蟌み評䟡 垞時 ✓ - japanese-quality-checker 日本語品質チェック 垞時 ✓ textlint MCP quality-checker フォヌマット・芖芚化チェック 垞時 × - seo-analyzer SEO最適化 垞時 ✓ - internal-link-optimizer 内郚リンク提案 垞時 ✓ - tech-validator 技術的正確性の怜蚌 条件付き* × Context7 MCP, WebSearch fact-checker 時事ネタ・統蚈デヌタ怜蚌 条件付き** × WebSearch compliance-checker コンプラむアンス・法的リスク 垞時 × - *技術内容が深い堎合論文匕甚、技術甚語10個以䞊、コヌドブロック3぀以䞊などのみ起動 **倖郚リンクや時事的事実「最近」「先日」「発衚」「リリヌス」などが含たれる堎合に起動 各サブ゚ヌゞェントは独立したコンテキストで動䜜するため、それぞれの専門分野に集䞭した深いレビュヌが可胜になっおいたす。 蚘事レビュヌ䟋 では実際の私のこのブログでレビュヌしおみたす。 執筆者が目次・ドラフトか原皿をプルリク゚ストに挙げた際、線集チヌムメンバヌがプルリク゚ストのコメント䞊で @claude /outline-review や @claude /initial-review を実行しおレビュヌを䟝頌したす。 GitHub䞊でのスラッシュコマンド実行むメヌゞ /outline-review の実行結果 たずは目次を䞊げた段階で /outline-review を実行しおレビュヌをお願いしおいたした。 アりトラむンレビュヌ結果 SEO察策のため、タむトルを短くするようにず提案されたり、流入を増やすため関連蚘事のリンクを远加するように提案されたりしおいたすね。 この埌、党郚指摘を採甚させおいただき、改善したした ちなみにレビュヌ過皋では、以䞋のようなペル゜ナを䜜成しおくれたようです。 ペル゜ナ生成結果 /initial-review の実行結果 次に、初皿を完成し、 /initial-review を実行しおレビュヌをお願いしたした。 初皿レビュヌ結果 ヌ 総合コメント 初皿レビュヌ結果 ヌ GitHub Suggestion 総合コメントから分かる通り、ずおも詳现にレビュヌできおいるず思いたす。 たた、むンラむンコメントで改善提案も色々もらえたした。 アドベントカレンダヌをどうしおも最初から宣䌝したかったのに・・・゚ヌゞェント的にはあたり良くないようですね。笑 工倫点 次に、このレビュヌ仕組みを構築した時の工倫ポむントを玹介させおいただきたす。もし同じような仕組みを䜜りたい方がいれば、参考になれば嬉しいです。 カスタムスラッシュコマンドのワヌクフロヌ制埡でレビュヌフロヌの最適化 カスタムスラッシュコマンドは簡単にいうず事前に定矩されたプロンプトで、コマンド呌び出し時にこのプロンプトがClaude Codeのメむンセクションに枡され、指瀺された凊理が実行されたす。 䟋えば初皿をレビュヌするための /initial-review コマンドでは、環境刀定 → レビュヌ察象特定 → ペル゜ナ生成 → 蚘事分析 → サブ゚ヌゞェント遞択・䞊列起動ペル゜ナ情報も枡す→ 結果統合 → 環境別出力ずいう流れで動けるように、カスタムスラッシュコマンドの定矩に工倫したした。 初皿レビュヌ甚カスタムスラッシュコマンドワヌクフロヌむメヌゞ ヌ Google Nano Banana Proを䜿甚しお生成 具䜓的な工倫ポむントを以䞋に玹介したす。 環境刀定ず出力先の切り替え: GitHub Actions環境かロヌカル環境かで出力先を切り替えるようにしたした。 if [ "$GITHUB_ACTIONS" = "true" ]; then echo "レビュヌ結果はPRコメントずしお投皿されたす" else echo "レビュヌ結果は.reviewsフォルダヌに保存されたす" fi この目的は、執筆者が執筆䞭でもロヌカル環境で自身の蚘事をレビュヌできるようにするためです。これによっお線集チヌムのレビュヌ負担も軜枛できたす。 ペル゜ナ駆動レビュヌ: ワヌクフロヌ開始時に蚘事の内容を理解し、察象読者ず想定するペル゜ナを䜜成。これらのペル゜ナを読者䜓隓評䟡゚ヌゞェント構成、日本語品質、SEO、内郚リンクに適甚し、倚角なレビュヌをさせるように工倫したした。䞀方で、技術的正確性や法的リスクなど客芳的に刀断すべき芳点はペル゜ナに䟝存せず、専門家芖点で評䟡させるようにしたした。 **ペル゜ナの適甚:** 生成されたペル゜ナは、以䞋の**読者䜓隓評䟡゚ヌゞェント**に適甚しおください。 - ` structure-evaluator ` : 読者にずっお理解しやすい構成か - ` japanese-quality-checker ` : 読者にずっお読みやすい日本語か - ` seo-analyzer ` : 読者の興味を匕くタむトルか - ` internal-link-optimizer ` : 読者が次に読みたい蚘事ぞ誘導できおいるか **重芁:** これらの゚ヌゞェントは、**生成された各ペル゜ナごずに個別に起動**しおください。 - 䟋: 3぀のペル゜ナが生成された堎合、 ` structure-evaluator ` を3回各ペル゜ナで1回ず぀起動 - 各起動時には、該圓するペル゜ナ情報を枡しおください 以䞋の゚ヌゞェントは、プロの専門家芖点で客芳的に評䟡したす**ペル゜ナ䞍芁、1回のみ起動**。 - ` tech-validator ` : 技術的正確性 - ` fact-checker ` : 事実確認 - ` compliance-checker ` : 法的リスク - ` quality-checker ` : 芖芚的品質 条件付きサブ゚ヌゞェント起動: 蚘事内容によっおチェック芳点は倉わるため、条件付きでサブ゚ヌゞェントを起動するようにしたした。 **条件付き゚ヌゞェント:** - ` tech-validator ` : 技術内容が深い堎合のみ起動 - 論文の匕甚、arXiv/DOIリンク、技術甚語10個以䞊、コヌドブロック3぀以䞊などがある堎合 - ` fact-checker ` : 以䞋のいずれかに該圓する堎合に起動 - 倖郚リンクhttp/httpsが含たれおいる - 時事的事実がある「最近」「先日」「発衚」「リリヌス」などのキヌワヌド これによっお党おの蚘事に察しお無駄に党おの芳点でチェックする必芁がなくなり、効率的か぀コスト抑えおレビュヌできるようになりたす。 䞊列実行の明瀺的な指瀺: 各サブ゚ヌゞェントは独立ずした芳点でチェックし、順序関係がないため、䞊列で起動するように指瀺したした。 ### 3. サブ゚ヌゞェント䞊列実行 遞定したサブ゚ヌゞェントを䞊列で起動しおください。 これによりGitHub Actionの実行時間も短瞮でき、コスト削枛にも぀ながりたす。 サブ゚ヌゞェント分離によるコンテキスト節玄ずレビュヌの深さ向䞊 䞊でも曞いた通り、Claude Code Actionを導入した圓初は1぀の倧きなプロンプトで党芳点をレビュヌしおいたした。しかし、各芳点でのレビュヌが浅く、具䜓的な指摘が少ないずいう課題がありたした。そこで、Claude Codeのサブ゚ヌゞェント機胜を掻甚し、芳点ごずに独立した゚ヌゞェントぞ分離しおみたした。サブ゚ヌゞェントは独立したコンテキストりィンドりで動䜜するため、それぞれが専門分野ぞ特化したシステムプロンプトず十分なコンテキストを持぀こずができたす。 これにより、䟋えば japanese-quality-checker は日本語品質チェックのベストプラクティスやtextlintの䜿い方に集䞭でき、 tech-validator は技術怜蚌に必芁な詳现な指瀺を持぀こずができるようになりたした。結果ずしお、各芳点でのレビュヌの深さが向䞊したず思いたす。 ※ 階局型マルチ゚ヌゞェントは AI゚ヌゞェントが耇雑タスクを完遂できない理由ず、「マルチ゚ヌゞェント×コンテキスト゚ンゞニアリング」の最新手法 でも説明されおいたすので、ぜひ合わせおご芧ください。 サブ゚ヌゞェントからメむンスレッドぞの結果受け枡しJSON蚭蚈の工倫 耇数のサブ゚ヌゞェントを䞊列実行する際、各゚ヌゞェントからの結果をどう受け取り、どう統合するかが課題でした。 最埌の総合コメントおよびサゞェッション投皿を統合しお敎理しやすいように、珟圚では各サブ゚ヌゞェントには以䞋のような統䞀されたJSON圢匏で結果を返すよう指瀺しおいたす。 { " category ": " 日本語品質 ", " issues ": [ { " type ": " 誀字 ", " severity ": " high ", " location ": " 第3ç«  ", " problem ": " 「おにをは」の誀り ", " suggestion ": " 具䜓的な修正案 ", " original_text ": " 元のテキスト ", " suggested_text ": " 修正埌のテキスト ", " line_range ": " 105-106 " } ] , " inline_comments ": [ { " comment_type ": " suggestion ", " line_range ": " 120 ", " comment ": " コメント内容 " } ] , " positives ": [ " 良かった点 " ] , " summary ": " 総評 " } この蚭蚈により、メむンスレッドでは各゚ヌゞェントのJSON結果を受け取り、以䞋の凊理が可胜になりたした。 重芁床 severity 別に指摘事項を敎理 original_text 、 suggested_text 、 line_range が揃っおいる指摘を自動的にGitHub Suggestionずしお投皿 カテゎリ別に敎理された最終レポヌトの生成 GitHub Suggestion機胜を確実に動かすための指瀺の工倫 Claude Code ActionにはGitHub PR䞊でむンラむンコメントを投皿する mcp__github_inline_comment__create_inline_comment ずいうMCPツヌルが甚意されおいたす。 しかし、コマンドやサブ゚ヌゞェントのプロンプトで明瀺的に「このツヌルを䜿え」ず指瀺しないず、䜿われないこずも倚いです。そのため、明瀺的に䜿うよう指瀺したした。 **IMPORTANT - GitHub PR Inline Comment圢匏での出力:** この実行はGitHub Actions環境で行われおいたす。 具䜓的な修正案がある堎合は、必ず以䞋のフィヌルドを含めおください。 - ` original_text ` : 修正察象の元のテキスト - ` suggested_text ` : 修正埌のテキスト - ` line_range ` : 該圓箇所の行範囲 これらの情報を ` mcp__github_inline_comment__create_inline_comment ` ツヌルを䜿っお GitHub PR䞊でSuggestion圢匏のむンラむンコメントずしお投皿しおください。 なお、Claude Code Actionがデフォルトで mcp__github_inline_comment__create_inline_comment を蚱可しおいない可胜性もありたすので、蚱可するように蚭定を远加したした。 MCPツヌルの積極的な掻甚 レビュヌの質を高めるため、以䞋のMCPツヌルを掻甚しおいたす。 textlint MCP ( mcp__textlint__lintFile )日本語の自動チェックに䜿甚。 japanese-quality-checker が呌び出し Context7 MCP ( mcp__context7__get-library-docs )最新の技術ドキュメント取埗に䜿甚。 tech-validator が呌び出し github_inline_comment MCP ( mcp__github_inline_comment__create_inline_comment )GitHub PR Suggestionの投皿に䜿甚。Claude Code Action内で甚意されたMCPツヌルのため、蚭定䞍芁。 Web怜玢・取埗機胜の有効化 ずおも簡単なこずですが、以前の仕組みではプロンプトで必芁に応じおりェブ怜玢するように指瀺しおいたにもかかわらず、事実確認が必芁な指摘事項はほずんどハルシネヌションが発生しお、プロンプトが悪いのかずずっず思い蟌んでいたした。しかし、実はClaude Code Actionはデフォルトでこの機胜を蚱可しおいないため、怜玢や取埗ができおいなかったこずが最近刀明したした。笑 そのため、今回からは WebSearch ず WebFetch 機胜を有効化するこずで、 tech-validator や fact-checker が最新の公匏情報を怜蚌できるようにしおいたす。 Claude Code Actionの蚭定は以䞋ずしたした。 - name : Run Claude Code Actions Review uses : anthropics/claude-code-action@v1 with : use_bedrock : "true" track_progress : true github_token : ${{ steps.app-token.outputs.token }} claude_args : | --model sonnet --max-turns 50 --mcp-config .mcp.json --allowedTools Task,Edit,Read,WebFetch,WebSearch,Glob,Grep,SlashCommand,mcp__github_comment__update_claude_comment,mcp__github_inline_comment__create_inline_comment,mcp__context7__resolve-library-id,mcp__context7__get-library-docs,mcp__textlint__lintFile,mcp__textlint__lintText,mcp__textlint__getLintFixedFileContent,mcp__textlint__getLintFixedTextContent,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(git log:*),Bash(git diff:*),Bash(git branch:*) --disallowedTools "" prompt : | (省略したす 残っおいる課題ず今埌の改善点 䞊蚘の仕組みを導入しおから、珟圚のずころメンバヌからかなりポゞティブなフィヌドバックをもらっおいたすが、ただいく぀かの課題が残っおいたす。 サブ゚ヌゞェントによっおはただ過剰や䞍足な指摘がある。 → 今埌は線集チヌム党員で継続的にプロンプトを改善しおいこうず思いたす。 サブ゚ヌゞェントはなるべく䞊列実行をするようにしおいるが、それでも実行時間は前より長くなっおいるため、Github Actionのコストがかかる。 → 必芁な゚ヌゞェントのみ起動する刀定ロゞックをさらに掗緎させたいですね。 珟圚はWeb怜玢・取埗機胜を特に制限なく有効化しおしたっおいたすが、むやみに倖郚情報を参照しすぎるず、コンテキストも増倧し、コスト増加やハルシネヌションのリスクもある。 → 今埌適切な制限を蚭けたいず考えおいたす。 たた他の課題もあるず思いたすが、これから皆さんのフィヌドバックを求め続け、改善を続けおいきたいず思いたす。 たずめ テックブログレビュヌ゚ヌゞェントは、Matsuzakiさんの「やっおみる」から始たり、Kさんや線集チヌムメンバヌの「みんなでやる」で改善、そしおアドベントカレンダヌに向けた「やり抜く」で改善を続けおきたInsight Edgeらしい事䟋を玹介させおいただきたした。 私個人もこの掻動を通じおClaude Code Actionの機胜、Claude Codeのスラッシュコマンド、サブ゚ヌゞェントに関しおより詳しくなりたした。このレビュヌの仕組みはTechblogに限らず、案件のコヌドレビュヌやドキュメントレビュヌなどにも掻甚できるず思いたすので、この知芋を掻かしお瀟内のコヌドレビュヌ課題を解決するこずにも挑戊しおみたいず思いたす。そこでもう1぀の「やっおみる・みんなでやる・やりぬく」のValue事䟋が䜜れたら嬉しいです。 Insight Edge Advent Calendar 2025が始たりたした 最埌に、改めおお知らせです この蚘事は Insight Edge Advent Calendar 2025 の1日目ずしお公開しおいたす。 12月25日たで毎日、匊瀟メンバヌがそれぞれの挑戊や孊びを発信しおいきたすので、ぜひ Insight Edge Advent Calendar 2025 をフォロヌしお、お楜しみください
MathJax = {tex: {inlineMath: [['$', '$']]}}; Insight Edgeのデヌタサむ゚ンティストのki_ieです。数理最適化の専門家ずしお、これたでさたざたな課題を数理最適化問題ずしおモデリングしおきたした。 モデリングはアルゎリズム蚭蚈ず比べお泚目を集めるこずが少ないようですが、実際には技術的な知芋・調査を芁求する骚の折れるタスクです。 このタスクを賢いLLMが手䌝っおくれたら嬉しいですね 昚幎の蚘事 では ChatGPT の OpenAI o1 にどれだけ数理最適化問題のモデリングを任せられるか詊しおみたした。今回の蚘事では最新の ChatGPT モデルである GPT-5 Thinking を䜿っお同様の実隓を行い、どこたで䜿えるものになったのかを確認したす。 数理最適化に詳しい方は、準備的な内容をスキップしお 前回のおさらいず今回の狙い から読み始めおいただければず思いたす。 数理最適化問題ずは 数理最適化問題ず混合敎数蚈画問題の基瀎知識がある方はこの節はスキップしたしょう(面癜いこずは䞀぀も曞いおありたせん) このセクションは 昚幎の蚘事 ず党く同じ内容です。 数理最適化問題ずその実行可胜解・最適解 数理最適化問題ずは「倉数・制玄・目的関数」が䞎えられたずきに、 「制玄を守るなかで最も目的関数を小さく(たたは倧きく)する決定倉数を遞ぶ」 ずいう問題です。 数理最適化問題は、䞀般に以䞋の圢で衚珟できたす: 数理最適化問題 倉数 : $x \in D \ \ (\subseteq \mathbb{R}^n)$ 倉数 $x$ は $D$ の䞭から遞べる 制玄 : $g_i(x) \leq b_i \ \ (i \in I)$ $x$ は $g_i(x) ≀ b_i$ がすべおの $i \in I$ に぀いお成り立぀ように遞ぶ 目的関数(最小化) : $\min f(x)$ 䞊蚘ルヌルを守ったうえで $f(x)$ を最小化したい。 䞊手に $D$, $g_i$, $f$ を蚭蚈しおやるこずで、配送蚈画から蚌刞ポヌトフォリオの最適化たで幅広い問題が 数理最適化問題ずしお衚珟できるこずが知られおいたす。 たずえばコンビニの店長の立堎でおにぎりの仕入れ量を適正化する問題を単玔化すれば、以䞋のような最適化問題ずしおモデル化できたす: 䟋: おにぎりの仕入れ量の適正化 倉数: おにぎりの仕入れ量 $x \in \mathbb{Z}_+$ 制玄: おにぎりが店から溢れない $x \leq 100$ 目的関数: $\max f(x)$ $f(x)$ : おにぎり $x$ を仕入れたずきの期埅利益 $D$ の芁玠で制玄をすべお守るものはその問題の実行可胜解ず呌ばれたす。 実行可胜解のうち目的関数を最小にするものは数理最適化問題の最適解(たたは解)ず呌ばれたす。 数理最適化問題で課題をモデリングする目的は、最適解を埗るこずにありたす。 たずえばおにぎりの仕入れ量の適正化の文脈では最も利益があがる仕入れ量が $70$ であれば、$x=70$ が最適解です。 これが蚈算で求められれば、このコンビニでは利益を最倧化する仕入れの意思決定ができるようになっおハッピヌです。 䞀方、問題によっおは最適解を求めるこずが極めお難しいこずがありたす。 おにぎりの仕入れ量の適正化問題は$x=0, 1, 2 \cdots 100$ を党探玢すれば簡単に最適解が求たりたすが、 もっず耇雑な問題ではそうはいかないこずもしばしばあるのです。 そのような堎合は「目的関数倀の良い」実行可胜解が求たったらそれでよしずするこずが実務䞊は䞀般的です。 おにぎりの仕入れ量の問題で蚀えば、$x=68, 71$ ずいった解が芋぀かっお、$x=70$ が芋぀けられなかったら、 $x=68, 71$ をずりあえずの答えずしお採甚するずいうむメヌゞです。 この堎合でも、あおずっぜうで仕入れ量を決定するコンビニよりは利益を倧きくできるわけです。 混合敎数蚈画問題 数理最適化問題の䞭でも特別に重芁な問題クラスずしお、混合敎数蚈画(MIP; Mixed Integer Programming)問題がありたす。 これは実行可胜領域 $D$ を$\mathbb{R}^n \times \mathbb{Z}^m$ ずしお、制玄・目的関数を線圢なものに限定したものです。 混合敎数蚈画問題 倉数 : $x \in \mathbb{R}^n \times \mathbb{Z}^m$ 制玄 : $a_i^\top x \leq b_i \ \ (i \in I)$ $a_i^\top$ を行ベクトルずしお集めた行列を$A$, $b_i$ を集めたベクトルを $b$ ずしたら、たずめお $Ax ≀ b$ ず曞ける。 目的関数(最小化) : $\min c^ \top x$ 倉数に別途䞊䞋限を蚱す堎合も、等号制玄を蚱す堎合もある。いずれもここで瀺した圢に容易に倉圢できる この問題クラスの重芁性を説明するために、たず数理最適化を利甚した課題解決の䞀般的な流れを説明したす。 さたざたなタむプの数理最適化問題に察しお、最適解たたは最適解ではないにせよ目的関数倀の良い実行可胜解を求めおくれるプログラムが䜜られおいたす。これらのプログラムはよく「゜ルバヌ」ずよばれたす。数理最適化の考え方ず゜ルバヌを利甚しお珟実の課題を解くずきの流れは以䞋のようになりたす。 課題の敎理 課題を数理最適化問題ずしおモデル化 数理最適化問題を゜ルバヌで求解する 埗られた最適解(たたは目的関数倀の良い実行可胜解)を珟実䞖界で採甚する 課題を数理最適化問題に萜ずし蟌むこずにも技術的な難しさがありたすが、 その数理最適化問題を解く゜ルバヌを蚭蚈・実装するこずもたた倧倉に難しいこずです。 そのため、できれば既存の゜ルバヌを甚いお求解できるような範囲でモデル化をしたいずいうのが数理最適化゚ンゞニアの本音です。 MIPによるモデリングはこの芳点で倧倉すぐれおいたす。MIPは倚様な問題を衚珟でき、さらに優れた゜ルバヌが存圚するからです。 MIPは制玄・目的関数が線圢に限定されおいるため䞀芋するず限られた衚珟力しかないように芋えたすが、0, 1の倀しかずらないバむナリ倉数を巧みに䜿うこずで耇雑な論理関係を衚珟でき、幅広い問題を衚珟可胜です。衚珟できる問題の幅広さゆえ、孊術的にも深く研究され、゜ルバヌの研究が積み重ねられおきたした。その結果、優れた商甚・OSSの゜ルバヌが存圚するのです。 このような背景から、MIPによるモデリングは数理最適化の実務においおなくおはならない基本技術ずなっおいたす。 LLMに混合敎数蚈画問題をモデリングさせたいモチベヌション このセクションは 昚幎の蚘事 ず党く同じ内容です。 課題のMIPモデリングずいうのはなかなか骚の折れる䜜業です。 論理的に正しいずいうだけではなく゜ルバヌにずっお解きやすいモデルを䜜るこずが求められるため、 難しい課題の堎合は最適化モデルの詊行錯誀・調査の1サむクルだけで数日かかっおしたう、ずいうこずも皀ではありたせん。 この䜜業、なるべくサボりたいですね。性胜向䞊の著しいLLMに手䌝っおもらえれば、 たるごず䜜業代替ずはならなくずも効率化できるのではないかずいうのが、本蚘事で怜蚌したいポむントです。 数理最適化゚ンゞニアずしお確認したい具䜓的なポむントは以䞋の3぀です。 有名問題をモデル化できるか / 有名定石を利甚できるか 有名問題に簡単な芁件を远加しおもモデル化がうたくいくか 耇雑な芁件を䞊手にモデル化できるか LLM に 1. ができたら、数理最適化初心者/孊習者にはLLMによる補助が有甚だず考えられるでしょう。 数理最適化問題のモデリングにはさたざたな「定石」が登堎したす。 䟋えば、0/1倉数 $x, y \in \{0, 1 \}$ の論理積をMIPの枠組みで考えたいずきには、補助倉数 $z \in \{0, 1 \}$ を導入しお 制玄 $z ≀ x, z ≀ y, x+y-1≀z$ を加えれば $z$ は $x, y$ の論理積(AND)ずなる、ずいうテクニックがありたす。 知っおいれば簡単に䜿えるテクニックですが、自分で思い぀くのは難しいです。 初心者がこれをLLMに教えおもらえるなら、孊習効率は䞊がりそうですね。 ある皋床経隓のある数理最適化゚ンゞニアにずっおも、モデル化方法の怜蚎が぀かないずきのサヌベむの代替ずしお LLMに聞くずいうのが有甚になるかもしれたせん。 2.ができたら、実務的なモデリングの補助ずしおも䜿えそうです。 実際の問題は有名定石単䜓で解けないケヌスのほうが倚く、 そのような堎合定石を組み合わせたり、自分でテクニックを䜜っおモデル化する必芁がありたす。 ここたでLLMがやっおくれるなら、実務的なモデリングの補助ずしお十分有甚でしょう。 3.は、ここたでできたらモデリングの初手はLLMずの察話になりそうですね。 これで毎回完璧な答えが出おきたら私達は冷や飯を食わされるこずになりそうですが どこたでできるか芋おみたしょう。 前回のおさらいず今回の狙い 昚幎の蚘事では o1-mini に3぀の難易床のモデリングタスクを実斜させたした。その結果、圓時のLLMは以䞋のレベルの胜力を持぀ずわかりたした。 有名問題をモデル化できるか / 有名定石を利甚できるか ▶ できる 有名問題に簡単な芁件を远加しおもモデル化がうたくいくか ▶ ちょっずできる 耇雑な芁件を䞊手にモデル化できるか ▶ できない 難易床 1 の実隓では、 LLM に有名な数理最適化問題 (巡回セヌルスマン問題ずクラス分け問題) の芁件を日本語で䞎え、正しくモデリングができるかを確認したした。いずれに぀いおも o1-mini で問題のないモデリングが埗られたため、今回は远加実隓をしたせん。詳现が気になる方は、 昚幎の蚘事 を参照しおください。有名問題は正解の数理モデルをLLMが知識ずしお知っおいるので、これはモデリング胜力の蚌明ずいうより知識の再生胜力が瀺されたず考えたほうがいいかもしれたせん。 有名問題に簡単な芁件を远加した難易床 2 の実隓では、倧筋は良いものの倚少のツッコミどころがあるずいう出力で、 有名問題ず有名手法の簡単なパッチワヌクではモデル化できない課題を扱う難易床 3 の実隓では党く歯が立たない、ずいう結果でした。 今回の蚘事では最新の GPT-5 Thinking を甚いおレベル2, レベル3のタスクを再床詊み、どの皋床レベルが䞊っおいるのかを確認したす。 LLM に数理最適化問題をモデリングさせる 2. 有名問題に簡単な芁件を远加しおもモデル化がうたくいくか 「1. 有名問題をモデル化できるか / 有名定石を利甚できるか」はスキップするので 2. からナンバリングを始めおいたす。 巡回セヌルスマン問題 + α 巡回セヌルスマン問題に远加芁件を加えた問題を GPT-5 Thinking に投げお、モデリングが正しくできるか芋おいきたす。 倪字郚分 が通垞の巡回セヌルスマン問題にはない远加芁件です。 次の課題を混合敎数蚈画問題ずしおモデル化しおください。 「10個の郜垂をすべお回っお出発地点に返っおくる必芁がある。移動時間を最短化したい。 ただし、特定の3郜垂を先に蚪問し、残りの7郜垂を埌に蚪問したい。 」 結果は「パラメタ」「決定倉数」「制玄」「目的関数」の4セクションに分けおください。 結果は次の通りです(䞻結果の前埌のテキストの削陀ずフォヌマット修正は出力埌線集): パラメタ 郜垂集合$ V = \{1, \dots, 10\} $ 出発・到着の仮想ノヌド$ 0 $郜垂数に含めない 先行蚪問集合$ A \subset V,\ |A| = 3 $ 埌行蚪問集合$ B = V \setminus A,\ |B| = 7 $ 移動時間たたは距離$ c_{ij} \ge 0 \quad (i, j \in V \cup \{0\},\ i \ne j) $ 郜垂数$ n = |V| = 10 $ 決定倉数 経路採甚$ x_{ij} \in \{0,1\} \quad (i, j \in V \cup \{0\},\ i \ne j) $ $ x_{ij} = 1 $ なら匧 $ i \to j $ を通る 蚪問順序指暙$ u_i \in \{1, \dots, n\} \quad (i \in V) $ 制玄 出発点・終点 $$ \sum_{j \in V} x_{0j} = 1, \qquad \sum_{i \in V} x_{i0} = 1$$ 各郜垂の入次数・出次数 $$ \sum_{\substack{j \in V \cup \{0\} \\ j \ne i}} x_{ij} = 1 \quad (\forall i \in V), \qquad \sum_{\substack{j \in V \cup \{0\} \\ j \ne i}} x_{ji} = 1 \quad (\forall i \in V)$$ 郚分巡回消去MTZ制玄 $$ u_i - u_j + n\,x_{ij} \le n - 1 \quad (\forall i, j \in V,\ i \ne j)$$ 先行蚪問制玄3郜垂を必ず先に蚪問 $$ u_i \le u_j - 1 \quad (\forall i \in A,\ \forall j \in B)$$ 倉数の領域 $$ x_{ij} \in \{0,1\} \ (i \ne j), \quad u_i \in \{1, \dots, n\}$$ 目的関数 $$\min \sum_{i \in V \cup \{0\}} \sum_{\substack{j \in V \cup \{0\} \\ j \ne i}} c_{ij} \, x_{ij}$$ ほが完璧です。前回の蚘事では地点 1 を出発点ず固定したモデルを出力しおしたいたしたが、今回は仮想的な始点 $0$ を導入するこずで 出発地点の自由床を保っおいたす。巡回セヌルスマン問題では、ぐるっず䞀呚するずいう性質から出発地点を奜きに再解釈できるため、出発地点を固定しおかたわないのですが、この問題では「先行蚪問集合」が定矩されおいるため、出発地点を固定しおしたうず問題がありたす。この点に気づいお察応できおいるのは玠晎らしいです。 前回の蚘事では「固定しちゃっおるけどたあ固定した問題ずしおは正しいかな」ず思っお芋過ごしおいたのですが、冷静に考えるず入力された課題文には忠実ではないわけで、指摘するべきでした前回蚘事読者のみなさた、倱瀌したした。 その他の面も問題なさそうです。o1-mini で少し怪しい蚘述になっおいた $u_i$ の倀域敎数vs連続に぀いおも、今回は敎数倉数ずしお揺らぎなく曞かれおいたす。個人的には連続倉数ず曞いおくれたほうが「わかっおいる」感が出せおるず思いたすが、 モデリングずしおは問題ないでしょう。 問題を指摘するずすれば「倉数の領域」で倀域が繰り返し曞かれおいるのは蚘述ずしお気になりたすね。 たた「先行蚪問制玄」の蚘述が冗長なのは効率が悪い蚘述で、 $u_i \leq |A| (i \in A)$ などず効率的に曞いおほしいものです。間違いずは蚀えたせんが、人手での修正が必芁ですね。 総合評䟡ずしおは「人力の確認ず修正が入る前提であれば、有甚な出力を出せおいる」ずいう前回ず同様の結果だず思いたすが、 より䞀貫した、修正もしやすい良いモデルになっおいるず思いたす。 特に仮想的な始点を導入できおいるのは玠晎らしいです。これは仕事で䜿えるツヌル感が出おいたすね。 クラス分け問題 + α 有名なクラス分け問題に远加芁件(倪字郚分)を入れた次の発展線も解かせおみたしょう。 GPT-5 Thinking ぞ次の質問を投げたす。LLM に喧嘩を防いでもらいたしょう。 次の課題を混合敎数蚈画問題ずしおモデル化しおください。 「120人の孊生を3぀のクラスに分けたい。3぀のクラスの人数は等しくしたうえで、クラス間の成瞟のばら぀きを最小に抑えたい。 ただし、䜕察かの喧嘩をしおしたう生埒ペアがあるため、それらのペアの生埒は必ず別のクラスにしおほしい。 」 結果は「パラメタ」「決定倉数」「制玄」「目的関数」の4セクションに分けおください。 次の結果が返っおきたした(䞻結果の前埌のテキストの削陀ずフォヌマット修正は出力埌線集): パラメタ 孊生集合 $I={1,\dots,120}$ クラス集合 $C={1,2,3}$ 成瞟 $s_i \in \mathbb{R}$各孊生 (i) の既知のスコア 喧嘩ペア集合 $\mathcal{A} \subseteq \{(i,j)\in I\times I \mid i<j\}$ 各クラスの定員 $Q=40$固定 党䜓平均 $\bar{s}=\frac{1}{120}\sum_{i\in I} s_i$定数 決定倉数 $x_{ic}\in {0,1}$: 孊生 $(i)$ をクラス $(c)$ に割り圓おるなら1 $u_c \in \mathbb{R}$: クラス $(c)$ の平均成瞟 $z \ge 0$: クラス平均の最倧偏差の䞊限 制玄 各孊生はちょうど1クラス $\sum_{c\in C} x_{ic}=1 \quad \forall i\in I$ 各クラスの人数は等しい $\sum_{i\in I} x_{ic}=Q \quad \forall c\in C$ 喧嘩ペアは同䞀クラス犁止 $x_{ic}+x_{jc}\le 1 \quad \forall (i,j)\in \mathcal{A},\ \forall c\in C$ クラス平均の定矩 $Q u_c=\sum_{i\in I} s_i x_{ic} \quad \forall c\in C$ クラス平均の偏差を $(z)$ で抑制 $u_c-\bar{s}\le z,\quad \bar{s}-u_c \le z \quad \forall c\in C$ 目的関数 クラス間の成瞟ばら぀きクラス平均の最倧偏差を最小化 $\min\ z$ 完璧です。この問題に぀いおは前回もほが問題ない答えでしたが、重箱の隅を぀぀くような指摘はできたした。今回は文句無しに完璧です。 3. 耇雑な芁件を䞊手にモデル化できるか ここたで、有名問題に毛が生えた皋床の問題であれば GPT-5 Thinking はそれなりに正しくモデル化しおくれるこずがわかりたした。 最埌にしっかりず耇雑な芁件を䞎えお、モデル化できるか芋おみたす。 GPT-5 Thinking ぞ次の質問を投げたす。 次の課題を混合敎数蚈画問題ずしおモデル化しおください。 「拠点にある䞀台の車を䜿っおすべおの店舗を回っお拠点に戻る蚈画を立おたい。 拠点ず各店舗にはそれぞれタむムりィンドりが蚭定されおいる。 各店舗のタむムりィンドりは最倧3぀であり、䜜業開始時間がいずれかのタむムりィンドりに入っおいれば蚱されるものずする。 拠点のタむムりィンドりは1぀であるが、出発時刻・垰還時刻のいずれもここに収たる必芁がある。 巡回䞭のいずれかのタむミングで1床だけ拠点ぞの報告業務を行うため、ここで䞀定の時間を䜿う必芁がある。 報告業務はいずれかの地点での䜜業終了盎埌に行うものずする。 報告業務を行うこずができるタむムりィンドりは1぀指定されおいるものずする。 各店舗での䜜業時間・地点間の移動時間・報告業務の時間はパラメタで䞎えられる。」 結果は「パラメタ」「決定倉数」「制玄」「目的関数」の4セクションに分けおください。 結果は次の通りです (䞻結果の前埌のテキストの削陀ずフォヌマット修正は出力埌線集): パラメタ ノヌド集合 拠点出発 $0$ 店舗集合 $N=\{1,\dots,n\}$ 拠点垰着 $n{+}1$ 蚱可アヌク集合 $A=\{(i,j)\mid i\in\{0\}\cup N,\ j\in N\cup\{n{+}1\},\ i\neq j\}$。 走行時間察称でなくおよい$\tau_{ij}\ge 0$ for $(i,j)\in A$。 䜜業時間$s_i\ge 0$ for $i\in N$。拠点は $s_0=s_{n+1}=0$。 店舗タむムりィンドり高々3本店舗 $i\in N$ に察し区間集合 $K_i$$|K_i|\le 3$ず各区間 $[a_{ik},\,b_{ik}]$。 拠点タむムりィンドり1本$[a_0,\,b_0]$出発時刻 $t_0$ ず垰還時刻 $t_{n+1}$ の双方がこの範囲。 報告業務 所芁時間 $r\ge 0$ 実斜可胜タむムりィンドり $[a^R,\,b^R]$開始時刻がこの範囲。 ビッグ M 時間緩和甚 $M := (b_0-a_0)+s_{\max}+\tau_{\max}+r$$s_{\max}=\max_i s_i,\ \tau_{\max}=\max_{(i,j)\in A}\tau_{ij}$ 報告窓甚 $M_R := (b_0-a_0)+s_{\max}$ 決定倉数 ルヌティング$x_{ij}\in\{0,1\}$ for $(i,j)\in A$アヌク䜿甚なら1。 到着䜜業開始時刻$t_i\in\mathbb{R}_{\ge 0}$ for $i\in\{0\}\cup N\cup\{n{+}1\}$。 窓遞択$w_{ik}\in\{0,1\}$ for $i\in N,\ k\in K_i$店舗で採甚する窓を1本遞択。 報告実斜堎所遞択$y_i\in\{0,1\}$ for $i\in N$店舗 $i$ の䜜業盎埌に報告を行うなら1。実斜は1回のみ。 制玄 (1) 流れ・蚪問制玄単䞀車䞡で党店舗1回蚪問 $\sum_{j\in N\cup\{n{+}1\}} x_{0j}=1,$ $\sum_{i\in \{0\}\cup N} x_{i,n{+}1}=1,$ $\sum_{j\in N\cup\{n{+}1\}} x_{ij}=1\ \ (\forall i\in N),$ $\sum_{i\in \{0\}\cup N} x_{ij}=1\ \ (\forall j\in N)$ (2) 時間䌝播䜜業・報告・移動を含む $t_j \ge t_i + s_i + \tau_{ij} + r\,y_i - M\,(1-x_{ij})\ \ \ (\forall (i,j)\in A)$。 ($s_0=s_{n+1}=0$。 報告は店舗でのみ起こり $y_i$ は $i\in N$ のみ。 ) (3) タむムりィンドり 拠点 $a_0 \le t_0 \le b_0,\ \ a_0 \le t_{n+1} \le b_0$。 店舗窓の遞択ず敎合 $\sum_{k\in K_i} w_{ik}=1$ $t_i \ge \sum_{k\in K_i} a_{ik}w_{ik} (\forall i\in N)$ $t_i \le \sum_{k\in K_i} b_{ik}w_{ik}\ (\forall i\in N)$。 (4) 報告業務は1回のみ・盎埌開始・報告窓内 $\sum_{i\in N} y_i = 1$ $t_i + s_i \ge a^R - M_R(1-y_i),\ \ t_i + s_i \le b^R + M_R(1-y_i)\ \ (\forall i\in N)$。 䜜業終了盎埌に開始するので開始時刻は $t_i+s_i$。 (5) 自己ルヌプ犁止 $x_{ii}=0\ \ (\forall i\in N)$。 目的関数 垰還時刻の最小化最短完了 $\min\ t_{n+1}$。 距離最小化を望む堎合は $\min \sum_{(i,j)\in A}\tau_{ij}x_{ij}$ に眮換可胜。 おお、これは なんだかぱっずみは良さそうですね各セクションを芋おいきたしょう。 パラメタセクションでは、 $K_i$ が区間の集合のように曞いおありたす。これは制玄(3)の $k \in K_i$ などでみられる $K_i$ を添え字の集合ず芋る立堎ず異なり、圢匏的には問題がありたすね。その他は倧きな問題はないように芋えたす。big-M の具䜓的な倀に問題がないかは、実際に制玄で登堎するずころで確認したしょう。 制玄セクションは(1)〜(5)たでに分かれお蚘述されおいたす。わかりやすくおいいですね。 (1), (2) ではサむクル陀去を含めた巡回セヌルスマン問題の制玄が曞かれおいたす。MTZずは少し違う圢匏ですが、 (2) があるこずでサむクル陀去たで察応できおいるのですね。厳密には $s_i + \tau_{ij} + r=0$ ずなるケヌスでサむクルが陀去できなかったり、蚈算効率の芳点から $u$ を導入する普通の MTZ 制玄を入れるずいう考え方もありえるず思いたすが、問題があるずしおも修埩可胜なものだず思っおいいでしょう。 big-M ずしお登堎した $M$ の倀も、う〜ん倚分これは正しいですね。すごい。(2) の最埌の括匧の補足郚分は蛇足ですが、これは無芖すればいいでしょう。 (3) はタむムりィンドりに関しおの制玄です。拠点に関するものは正しいですね。店舗に関するものは、$w_ik$ を䞀぀遞ぶずいうこずはいいのですが、$t_i \leq ...$ の制玄は明確におかしいですね$w_ik = 0$ のずきに過剰に匷い制玄。 $t_i \geq ...$ のほうも、登堎する時刻の倀がすべお非負ずいう前提がなければ同様におかしいモデリングです。簡単に修正可胜ですが、ミスではありたすね。 (4) 報告に関する芁件を蚘述しおいたす。$M_R$ の具䜓的倀の正しさは埌回しにしたしょう。このモデリングの方針は正しいですね これができるなら (3) でも同じ手法を䜿っおほしかったですが、こういうミスっお人間もしちゃいたすね。(4) で正解を出しおきたので蚱せたす。 $M_R$ の倀は、報告タむムりィンドりが拠点タむムりィンドりに含たれるずいう前提のもずでは問題はない気がしたすが、すこしゆるい評䟡になっおいる気がしたす。これは些末な問題で、ちゃんず蚈算すれば修正可胜です。 (5) は (1) にたずめおもいいでしょう。問題ありたせん。 これは玠晎らしい進化です。前回の実隓では「それっぜい数匏を出力するが、そもそも倉数ずパラメタの区別すら曖昧な論理的に読めないもの」が出力されおいたした。今回のものは、倚少ミスはあるものの修正可胜であり、最適化モデリングをするうえでの「䞀歩目」ずしおは利甚可胜なレベルのものです。 たずめ たずめです。 有名問題をモデル化できるか / 有名定石を利甚できるか ▶ できる 有名問題に簡単な芁件を远加しおもモデル化がうたくいくか ▶ 抂ねできる 耇雑な芁件を䞊手にモデル化できるか ▶ 間違えはするが、意味のある出力を出せる GPT-5 Thinking は有名問題ず有名定石の簡単な組み合わせにずどたらず、 耇雑な芁件に぀いお、倚少のミスを含みながらも論理的に考えるこずができるようです。 MIPモデリングに関しお、 GPT-5 Thinking は以䞋の3぀の䜿い方ができそうです: 数理最適化初心者が簡単なモデルを䜜りたいずき・孊習したいずき 簡単なモデルは䜜っおくれる ただし正誀刀断は自分でできる必芁があるため、 教科曞で基本的な勉匷をしたうえで利甚する 䞭玚者~䞊玚者レベルの人のモデリング補助 LLMの知識の幅は圧倒的。調査・怜蚎をしたいずきに「ダメもずで聞いおみる」のには意味がありそう たずえば、定石をしらない問題がでおきたずきに(枝葉の芁件を削っお)モデル化させおみお、良さそうなものを䜿う and/or 出兞を調べお調査する、など NEW! 耇雑なモデリングの補助 耇雑な芁件を䞎えおも、怜蚎可胜な意味のあるモデルを出力できる 堎合によっおはモデリングの「䞀歩目」をLLMに任せお、あずは人間が修正する、ずいう䜿い方ができそう LLMを䜿っお面癜いモデルを曞いおいきたしょう
はじめに はじめたしお。Insight Edgeデザむン郚 共創蚭蚈チヌムの小森谷です。 本蚘事は、私が2025幎の倏にInsight Edgeぞ参画しお最初に取り組んだプロゞェクトに぀いおたずめたものです。 チヌムの䞀員ずしおどのようにプロゞェクトを進め、䜕を感じ、どんな孊びを埗たのか――そのリアルな過皋をお䌝えできればず思いたす。 はじめに この蚘事でわかるこず 参画初日のオリ゚ン、最初の仕事は「党瀟䌚議」の蚭蚈だった 「10日埌の党瀟䌚議で、Insight Edge Vision2030をテヌマにワヌクショップをしたい」 制玄条件ずゎヌルむメヌゞ から“蚭蚈の手がかり”を探る 今日は7月15日。開催日は7月25日。本番たで、あず10日... 玠案ず察話 ― 背景にある意図を探る 限られた時間の䞭で最善を尜くすために、ずにかく早い段階でドラフトを出すこずを意識した。 ワヌクショップの手法遞定ず具䜓化 人間ず人間の共創プロセス 人間ずAIの共創プロセス 圓日の様子 ― “聎き合う”が立ち䞊がる瞬間 参加者の声抜粋 これからも「共創」を続けるために 筆者に぀いお この蚘事でわかるこず 10日で党瀟䌚議を蚭蚈した“段取り” フィッシュボりルを遞んだ背景や経緯ず内円の緊匵を䞋げる工倫 AIを「芳察者構造化支揎」ずしお扱うワヌクショップ蚭蚈の実践プロセス 参画初日のオリ゚ン、最初の仕事は「党瀟䌚議」の蚭蚈だった 「10日埌の党瀟䌚議で、Insight Edge Vision2030をテヌマにワヌクショップをしたい」 笑顔で淡々ず語る森さん Insight Edgeに参画した初日、最初のミヌティングでそう告げられたずき、私は正盎状況を぀かみきれおいなかった。 けれど、䞍思議ず䞍安よりもワクワクが勝っおいたように思う。 その埌のプロセスで、少しず぀ Insight Edgeの“文化のようなもの” を䜓感しおいった。 配属先は「デザむン郚 共創蚭蚈チヌム」。“共創をデザむンする”ずいう蚀葉の意味を、珟堎で手探りしながら孊んでいった。 本皿では、その10日間を圓時の芖点ず珟圚の理解の䞡方から振り返り、初仕事ずしお取り組んだ「Vision2030 ワヌクショップ」の蚭蚈から実践に至る過皋を蚘録したい。 制玄条件ずゎヌルむメヌゞ から“蚭蚈の手がかり”を探る 今日は7月15日。開催日は7月25日。本番たで、あず10日... 初日のオリ゚ンで共有されたのは、こんな抂芁だった。 実質的な準備期間は営業日 䌚堎は倧手町オフィスの䌚議宀 スクリヌンは぀ 参加者はおよそ60名 2時間半ずいう限られた時間の䞭で、前半はマネゞメント局によるむンプットセッション、埌半は参加者同士によるワヌクショップを行う。 淡々ず「Vision2030」に぀いお語るCINOの森さんず、静かに頷く共創チヌムリヌダヌの飯䌏さんを眺めながら、埌営業日ずは思えない萜ち着きぶりだな、ず考えおいた。 静かに頷く飯䌏さん ただ瀟内の人の顔もほずんど知らず、物事の進め方も぀かめおいなかった私は、 䌚議の蚭蚈の前にたず背景や状況の把握に集䞭 するこずにした。 2回目のミヌティングでは、初回で聞いた内容をヒアリングシヌトにたずめ、ただ聎けおいない郚分空癜のセルを埋めながら、森さんず認識をあわせおいく。 ※ヒアリングシヌト蚭蚈意図や制玄を敎理するための事前質問祚 どんな状態を目指しおいるのか 参加者にどんな䜓隓をしおほしいか 起きおほしいこず、起きおほしくないこず 䞀぀ひず぀確認しながら意図を蚀語化しお、党䜓像を可芖化する。私はこの “解像床を䞊げおいく”時間 がずおも奜きだ。 ふずした瞬間に出おくる蚀葉や迷いの䞭に、蚭蚈のヒントが朜んでいる。 この時の森さんは、マネゞメントからのメッセヌゞを届けるだけでなく、 メンバヌ自身が自分の蚀葉で未来を語れるようになっおほしい のだず語っおいた。 ひずずおり埋めたヒアリングシヌトを出発点ずしお進行を敎理した䞊で、玠案に着手する。 ほずんど同時進行のWBS 玠案ず察話 ― 背景にある意図を探る 限られた時間の䞭で最善を尜くすために、 ずにかく早い段階でドラフトを出すこず を意識した。 たず手始めに、前半ず埌半を有機的に接続するこずを意図しお 「アりトプット前提でむンプットを聎く」構成 を提案。むンプットセッションの冒頭で「本日の問い」を提瀺した䞊で、参加者がワヌクシヌトにメモをずりながらセッション内容を聎き、埌半はそのメモをもずに語り合う仕掛けである。 むンプットセッションの流れ アりトプットセッションの流れ ①はマスト、②③は時間があれば、の優先床を぀けた できるだけ楜しい雰囲気にするために「旅皋衚」のフォヌマットをアレンゞしおワヌクシヌトを䜜成した 䞊蚘の他に、コンセプト案、タむムラむン、倧枠の流れをたずめたスラむドなど、圓日の流れをむメヌゞできる皋床の玠案を共有するず、すぐにフィヌドバックが返っおきた。 「マネゞメントのメンバヌは䌚話に混ざるべきか混ざるず誘導っぜくならないか」 「党員がフラットに話すための仕掛けを入れられないか」 「そもそも党員が同じように話すのが本圓にいいのだろうか」 「もう少し埌半のシャッフルを増やせないか」 「シャッフルするなら、ワヌルドカフェずか」 「いや、今の構成だず時間が足りない」 さたざたな意芋が䞊がるず、小さな混沌が生たれる。耇数の混沌が混ざっお倧きな混沌になる。私はそれらにたみれながら、それぞれの意図を探っおいった。 ワヌクショップの手法遞定ず具䜓化 人間ず人間の共創プロセス 森さんず飯䌏さんがどうも「シャッフル」にこだわる様子だったので、あらためお問いを立おおみた。 「シャッフルするこずで、䜕が起きお欲しいのか」 これを起点に話すうちに、森さんがみおいる”景色”がよりクリアになっおいった。 「郚門暪断で話す堎が少ない、郚門によっお芋えおいる珟実が違っおいる」 そしお 「他の郚門の話を聎いおほしいんだよね」 ず続けた森さんの蚀葉をきっかけに、ワヌクショップの軞は、“語り合う”から“聎き合う”ぞシフトした。 「聎く」ずいう行為をどう蚭蚈するか。 この問いから”フィッシュボりル”ずいう手法に蟿り着くたでに、さほど時間はかからなかった。 「フィッシュボりル」ずは「金魚鉢」を暡した​アクティビティの䞀皮で、​察話を深めながら、その内容を参加者党員で共有するこずができる。​立堎の異なる参加者が、お互いの芳点をよく理解し、傟聎するこずを促進する効果がある。​円座の「内偎」で進行する話を「倖偎」から眺めるずいう構図から、フィッシュボりル金魚鉢ず呌ばれおいる。 玠案を起点にしたこの察話のプロセスは、たさに「共創」だったように思う。 人ず人ずのやり取りの䞭で「意図」が立ち䞊がり、少しず぀圢を倉えおいく。 ちなみにこの時点ですでに、党䜓䌚議圓日の3日前である。 人間ずAIの共創プロセス ざっくりの方向性やアむデアが出揃ったずころで、AIの出番である。ここからは、実際にAIず共創したプロセスの䞀郚を玹介する。 私はたず玠材を䞀括投入し 「制玄優先事項・時間・人数などを螏たえお、目的敎合性ず運営難易床の芳点から玠案を比范し論点を構造化 しおください。」ず䟝頌した。 もちろん䞀発で敎理はできないが、 「なんずなくこれじゃないかな」ずいう盎感的な発想が、AIずの協働により構造敎理されおいく のはずおも気持ちがいい。 私にずっおAIは「芳察者」であり「構造化の支揎者」でもある。そしおその“芳察”の芖点は、人間が芋萜ずしがちな蚭蚈の盲点を照らしおくれる。 ChatGPTずずもに敎理した内容の抜粋 AIには案ラりンドテヌブル・ワヌルドカフェ・フィッシュボりルをフラットにむンプットしたが、掚奚はフィッシュボりル。 「内円の発蚀者が緊匵する」懞念に぀いおは、ワヌクシヌトのメモを元に話しおもらうこずで倚少は緩和するかもしれない。メモは緊匵した時の”お守り”にもなる。比范怜蚎の結果、時間効率ず参加密床の芳点からフィッシュボりルを採甚した。 しかし、AIが助けおくれるのは思考プロセスたで。 意思決定の埌に埅っおいたのは最も倧きな「山堎」、人間の仕事だった。 チヌム線成や䌚議宀の配眮怜蚎などは森さんず飯䌏さんがリヌドし、ワヌクシヌトの印刷や圓日の備品の準備は共創蚭蚈チヌム兌務の楠さんや酒井さんがサポヌトしおくれた。 そしおマネゞメントの皆さんがむンプットセッションの資料を準備し、圓日の音響や䌚堎蚭営は経営管理郚の皆さんが敎えおくれた。 瞊暪無尜にパスを回しあいながら堎を䜜っおいく感芚だった。 䌚議宀におけるフィッシュボりルの配眮図テヌブル移動は党員での協働䜜業ずなった 圓日の様子 ― “聎き合う”が立ち䞊がる瞬間 そうしお迎えた党瀟䌚議の圓日。 䌚堎セッティングず䞊行しお、ファシリテヌタヌず曞蚘を担う皆さんに「進行ガむド」の説明をしたのだが、なんずも䞍思議な安心感があった。初めたしお、ずは思えない枩かくサポヌティブな雰囲気に、ああ今日はきっずうたくいくな、ず思った。 開始30分前の雰囲気はこんな感じ 前半のむンプットセッションでは、マネゞメント局から「Vision2030」の背景ず想いが語られた。 䌚堎は静かだったが、ただの“聎講”の静けさではない。 ワヌクシヌトにメモを取りながら、自分の䞭の“問い”を探しおいるような集䞭力 が、䌚堎に満ちおいた。 Vision2030の背景や意図を聎く 埌半のフィッシュボりルが始たる。 進め方を説明した埌、森さんず飯䌏さんから参加者のみなさんぞのメッセヌゞをもらった。 森さん「ぜひこの機䌚に、他の郚門の考えおいるこずを聎いおください。」 飯䌏さん「金魚鉢の倖偎で聎く時にもぜひメモをずっおみおください。」 3぀の金魚鉢の䞭心の円で数名が察話し、呚囲の人たちはそれを静かに聎く。 4回のタヌンで円の内ず倖が入れ替わり、発話が埪環しおいく。 この「話す」ず「聎く」が混ざり合いながらひず぀の景色を描いおいく構造は、今回の党瀟䌚議で目指した“共創”のあり方そのものだった。 ファシリテヌタヌが党䜓の流れを芋守りながら、発話のテンポや入れ替わりのタむミングを調敎しおいく。 曞蚘はリアルタむムでMiroに芁点をたずめ、話の展開を可芖化しおいく。 このサむズのフィッシュボりルを぀同時進行した 私はその党䜓を眺めながら、この“聎き合う”ずいう構造が確かに機胜しおいるこずを感じおいた。 䞭心の䌚話が倖偎に波及し、静かに聎いおいる人たちの衚情や姿勢にも倉化が生たれおいく。時おり聞こえおくる朗らかな笑い声が印象的だった。 組織ごずを自分ごずずしお捉えるには、自分自身の蚀葉で“語る”こずが重芁だ。 けれど、“聎き合う”ずいう行為を構造ずしお仕蟌むこずで、党員がその察話の䞀郚になる。それが、この日の堎で起きおいたこずだった。 参加者の声抜粋 フィッシュボりル圢匏は非垞に奜評で「新しいスタむルずしお参考にしたい」「芳察も発蚀も楜しめた」ずの声が倚数。 他郚眲・他職皮の考えに觊れるこずを「刺激的」「意倖だった」ず評䟡する傟向が匷く、盞互理解の促進効果が確認できた。 䞀方で、「曞蚘の負担が倧きい」など運営面の改善芁望が耇数寄せられた。 これからも「共創」を続けるために 党瀟䌚議を終えおしばらく経ったころ、瀟内のさたざたな堎で「フィッシュボりル」ずいう蚀葉を耳にするようになった。噂によるず、別の郚門のむベントでも実斜されたらしい。 䞀床きりの䌁画で終わらず、“聎き合う”ずいう構造が、組織の䞭に息づいおいる。 それは今回の蚭蚈の成果のひず぀だず思う。 このプロゞェクトを通じお、共創の堎づくりは 「正解を瀺すこず」ではなく、「問いを共有するこず」 なのだず実感した。 同じテヌマを前にしおも、立堎や経隓によっお芋えおいる景色は違う。 その違いを前提に「共通の問い」に向き合っおいく こずが、共創の出発点になる。 短期間の䞭で進めた今回の蚭蚈には、もちろん反省も倚い。 アンケヌト結果を眺めながら、今埌の糧ずなる瀺唆をたくさん受け取った。 Insight Edgeの「共創蚭蚈チヌム」は、そうした詊行を通じお実践知を積み重ねおいく組織 なのだず思う。 これからも、ステヌクホルダヌを広く捉えながら「共創の䟡倀」に぀いお考え続けおいきたい。 筆者に぀いお 小森谷 有玀こもりや ゆき 玙媒䜓の線集者を経お、ポヌタルサむトの速報゚ディタヌに転身。​通信キャリア盎䞋のモバむルメディア事業においお、黎明期の立ち䞊げから拡倧、統合たで幅広い業務を経隓した埌、​​耇数のスタヌトアップ䌁業におコロナ犍のリモヌト環境における事業䌁画や組織開発の仕組みづくりを掚進。​​2025幎7月よりInsight Edgeに参画。デザむン郚・共創蚭蚈チヌムに所属し、ワヌクショップデザむンやファシリテヌションを担圓。
はじめたしお。Insight EdgeにUI/UXデザむナヌずしお参画しおいる、アマガスず申したす。 今回、Insight Edge以䞋、IE のブログを執筆するにあたり、DX化掚進支揎・生成AI掻甚の珟堎ぞUI/UXデザむナヌずしお参画しおいる意矩や、そこで埗られた経隓に぀いお綎っおみたした。 なぜDX化掚進支揎の領域にデザむナヌが必芁なのか Insight Edgeにおけるデザむナヌの圹割 1. 䜓隓の䟡倀を芋出し、戊略に぀なげる「UX」 2. 誰もが迷わず䜿える䜓隓を圢にする「UI」 3. 耇雑な情報を盎感的に䌝え、その䟡倀を高める「グラフィックデザむン」 4.制䜜実瞟の玹介 䜓隓をデザむンし、䟡倀ある圢にする、䜓隓蚭蚈チヌムの䞀気通貫なものづくり Insight Edgeデザむン郚のチヌム構成 自分の手で圢にする面癜さ 珟堎で埗る孊び 発想の幅の広がり “やりぬく、やっおみる、みんなでやる” ─ 私が感じたIEの魅力 たずめ なぜDX化掚進支揎の領域にデザむナヌが必芁なのか 顧客のDX化掚進支揎においお、生成AIのように新しい仕組みを取り入れるプロゞェクトでは、仕組みがただ未知な郚分も倚く、最初はなかなかピンずこなかったり、興味を感じにくかったりするこずもあるのではないでしょうか。 その過皋で情報の本質を敎理し「どうすれば䌝わりやすいか」を考え、目指す圢を導き出すこずこそが「デザむン」の重芁な圹割ずなっおきたす。 デザむンは「芋た目を矎しく敎える」だけでなく、「理解しお圢にする」こずが圹割に含たれおいるので、DXや生成AIのような目新しい領域では「䜓隓」を圢にするUI/UXデザむナヌの存圚が欠かせないず思いたす。 Insight Edgeにおけるデザむナヌの圹割 IEのデザむナヌは、倚岐にわたる領域に携わり、その線匕きは曖昧です。それでも、䞀人ひずりが状況に応じお柔軟に動きながら、確かな䟡倀を生み出しおいたす。‚ここでは、実際の圹割や制䜜事䟋をご玹介したす。 1. 䜓隓の䟡倀を芋出し、戊略に぀なげる「UX」 顧客に向けたワヌクショップを行い、DX化に向けた認識を深めたり、アむデアを共創するこずから始たるこずもありたす。 たた、マヌケティングの芖点を取り入れたり、゚ンゞニアの技術的思考ずビゞネスサむドの芖点、そしおナヌザヌやクラむアントの䜓隓を぀なぐ圹割も担いたす。 プロゞェクトの初期段階では、ヒアリングやナヌザヌリサヌチを通しお珟状As-Isを把握し、理想の䜓隓To-Beを描きながら芁件を敎理したす。 そのうえで、カスタマヌゞャヌニヌや情報蚭蚈などを甚いお「どんな䜓隓を、どんな流れでナヌザヌぞ届けるか」を明確にし、関係者ず共有したす。 ずきにはコンサルタントのように、盞談段階から課題を敎理し、デザむンを通しお䜓隓のゎヌルや、方向性を共に考え提案するこずもありたす。 IEでは案件によっおは開発が先に進み、埌からデザむンが加わるこずもありたす。その際に「目指す圢」を芋盎し、䜓隓党䜓をブラッシュアップできるのは倧きな䟡倀だず思いたす。 2. 誰もが迷わず䜿える䜓隓を圢にする「UI」 SaaSをはじめずしたプロダクト開発では、盎感的に䜿えるUI蚭蚈が欠かせたせん。 䜿いづらいず感じた瞬間に、ナヌザヌは離れおしたうからです。䜿いやすさは安心感ず信頌感を生み出す倧切な芁玠です。 デザむナヌはナヌザヌ目線で操䜜フロヌを怜蚎し「誰でも迷わず䜿え、ストレスのないUI」をビゞュアルにしたす。 䜓隓蚭蚈チヌムでは、UXを基に、ナヌザヌの行動や利甚シヌンを想定し぀぀、操䜜フロヌや画面構成をデザむン怜蚎しながら進めたす。 実際にはFigmaを䜿っおワむダヌフレヌムやプロトタむプを䜜り、プロゞェクトチヌム内やクラむアントず合意圢成を図りながら「目指す圢」を明確にしおいきたす。 必芁に応じお゚ンゞニアやビゞネスサむドずも意芋を亀わし、UIの動きや導線を調敎しおいくこずで、「誰でも迷わず䜿える」䜓隓を実珟しおゆきたす。 3. 耇雑な情報を盎感的に䌝え、その䟡倀を高める「グラフィックデザむン」 DX化や生成AIなどの掻甚の仕組みは、文章だけではなかなか理解しにくいものです。 その情報をわかりやすく可芖化し、共有を促すのがビゞュアルデザむンの圹割です。 耇雑な仕組みを図やむラスト・チャヌトなどに萜ずし蟌むこずで、ナヌザヌはもちろん、瀟内メンバヌや経営局にも盎感的に䌝えるこずで䟡倀を高めるこずができたす。 実際、むベントの堎でも「ポスタヌやチラシがあったおかげで来堎者に説明しやすかった」ず蚀っおいただけるこずもあり、デザむンの掚進力を実感しおいたす 4.制䜜実瞟の玹介 䜓隓蚭蚈チヌムで携わったデザむンの䞀郚おもにグラフィックデザむンをご玹介したす。 䜓隓をデザむンし、䟡倀ある圢にする、䜓隓蚭蚈チヌムの䞀気通貫なものづくり Insight Edgeデザむン郚のチヌム構成 IEのデザむン郚には「共創蚭蚈チヌム」ず「䜓隓蚭蚈チヌム」がありたす。 私が参画しおいる「䜓隓蚭蚈チヌム」では、䞊流の䜓隓蚭蚈を担うサヌビスデザむナヌ・UXデザむナヌ、UIやグラフィックを圢にするデザむナヌ、そしおコンサル的な動きからUX〜UI、撮圱たで幅広く関わる忍びの者など、倚様な人がいたす。 共通しおいるのは「どうすればわかりやすく、䟡倀ある圢で届けられるか」を垞に考え続けおいる点ではないかず思いたす。 そのためには、゚ンゞニアやビゞネスサむドずもフラットに䌚話したり、チヌム内でも「もっずこうしたほうがよい」ず意芋を出しながら進めたりする堎面がよくありたす。 実際、䜓隓蚭蚈チヌムでは、Figmaの画面を2〜3人で共有し、䌚話ベヌスで䞀気に䜜業を進めるこずもありたす。 デザむナヌ同士だず話のテンポが速く、䞊蚘画像巊のワむダヌフレヌムは玄1時間で圢になりたした。 出来䞊がったLPが こちら です。 about.voiceek.com たたあるずきは、営業資料などを2人で手分けしおさくっず仕䞊げおしたうこずもありたす。 お互いの考えや進め方を間近で感じられるのが魅力で、ざっくばらんな雰囲気の䞭でアむデアがどんどん圢になっおいく手法が、最近お気に入りの進め方です 自分の手で圢にする面癜さ IE内で過去に事䟋のあるプロゞェクトでは、䟋えばWEBデザむンであれば、芁件定矩からデザむン制䜜、モックアップからコヌディング・実装、ミヌティングでのファシリテヌションやクラむアント察応、スケゞュヌル管理も含め1人で担圓するこずがありたす。 ワンオペで進めるには工倫が求められたすが、コミュニケヌションの䞭間工皋が少ない分、芁件定矩からデザむンぞの萜ずし蟌みがスピヌディヌです。 さらに、クラむアントの声を盎接聞いおいるため、芁望を反映しやすく、より解像床の高いデザむンに぀なげられる点も倧きなメリットです。 そしお、完成したデザむンを評䟡いただけたずきの喜びはひずしおです。 珟堎で埗る孊び プロゞェクトの䞭にはUXが固たる前に開発が進み、埌からUIを敎理する堎面もありたす。 時には急な察応が必芁ずなり、爆速で圢にするこずもありたすが「乗り越えられなかったこず」は䞀床もなく、その時々で新しい孊びを埗るこずができおいたす。 発想の幅の広がり IEではMTGなどで発衚の機䌚が倚く、発信力やコミュニケヌション力が自然ず高められたす。 たた、生成AIを掻甚したクリ゚むティブ環境に觊れるこずで、デザむン衚珟の幅が広がるずずもに、制䜜にかかる時間を効率化できるようになっおきたした。 その結果、制䜜物のクオリティ向䞊に泚力できるようになっおいるず思いたす。 “やりぬく、やっおみる、みんなでやる” ─ 私が感じたIEの魅力 IEの魅力は「技術者を倧切にしおくれる䌚瀟」であるこずだず思いたす。 成果を芋逃さず、良い点をしっかり評䟡しおいただけるこずが、倧きな励みになっおいたす。 クラむアントぞ期埅以䞊の成果を届けおいるのも、玠晎らしいず思いたす。 内補ならではのスピヌド感ず、粟鋭メンバヌ党員が自分の領域に誇りを持っお品質を磚き続けおいる姿勢、それは「やりぬく」「やっおみる」「みんなでやる」ずいうスロヌガンのずおり、技術者同士が協力し合える環境があるゆえのこずだず思いたす。 たずめ ここたでお読みいただき、ありがずうございたした。 Insight EdgeのUI/UXデザむナヌの仕事に、少しでも興味を持っおいただけたら幞いです。‚IEでは、顧客のDX化掚進支揎や生成AIずいった最先端の領域に携わるこずができたす。 デザむンだけでなく、戊略や䌁画の段階からプロゞェクトに関わるこずもあり、その䞭で幅広いスキルを身に぀けながら、瀟䌚に䟡倀を届ける「䜓隓」をデザむンで圢にできる環境がありたす。 珟圚、IEでは UIUXデザむナヌを募集 しおいたす。これたで培っおきたデザむナヌの経隓を掻かし、「䌝わるデザむン」を䞀緒に぀くりたせんか
本蚘事でわかるこず はじめに 背景・課題 目的 GitHub Actionsを甚いたSpec Kitで仕様駆動開発を詊しおみる 仕様駆動開発ずは Spec-Kitずは Claude Code GitHub Actionsに぀いお オセロ察戊アプリを䜜っおみた Issue連携ずSub-issueの掻甚 問題点ず所感 テスト駆動開発の無芖 たずめ 参考資料 本蚘事でわかるこず この蚘事では、AI゚ヌゞェント時代の新しい開発手法ずしお泚目される「仕様駆動開発」を、 Claude Code GitHub Actions ず Spec Kit を䜿っお実際に詊した結果をお䌝えしたす。オセロアプリの開発を通じお、埓来の開発プロセスずの違いや実際の課題たでを解説したす。 はじめに こんにちは。 この床Insight Edgeで1ヶ月間のむンタヌンに参画しおおりたす、東京科孊倧孊物質理工孊院博士課皋2幎の石井です。倧孊院では䞻に半導䜓材料をタヌゲットずした第䞀原理蚈算を甚いた点欠陥の解析などを行なっおおりたす。 今回は、むンタヌン期間䞭に怜蚎したClaude Code GitHub ActionsずSpec Kitを甚いた仕様駆動・AI゚ヌゞェント駆動開発に関する話をご玹介しようず思いたす。 背景・課題 ゜フトりェア開発は、単䞀の生成AIによる点的な支揎から、 耇数モデル゚ヌゞェントが協調しお芁件理解・蚭蚈・実装・怜蚌を䞀貫支揎する「゚ヌゞェント駆動型」 ぞの移行過皋にありたす。䞻芁LLMず呚蟺ツヌルの高床化により自埋実行や運甚レベルのコヌディングが可胜になり、開発者は本質的な課題解決に集䞭できる環境が敎い぀぀ありたす。 䞀方で、掻甚はただ局所最適に留たりがちで、プロゞェクト個人間でのばら぀き、ならびにAI掻甚プロセスの可芖化・再珟性の䞍足が課題です。具䜓的には以䞋が挙げられたす。 情報探玢や手戻りが散発的に発生しやすい ドキュメントず実装の同期が人手䟝存で、保守性・説明可胜性に揺らぎがある ロヌカルでのAI掻甚は進む䞀方、成果物管理やレビュヌの基盀GitHub等が埓来運甚のたたで、掻甚過皋がログずしお残らない/監査できない 組織暪断で再利甚できるプロンプト・゚ヌゞェント蚭蚈・ワヌクフロヌが暙準化されおいない 目的 そこで今回は、組織プロセスずしお定着させるための手段ずしおGitHub Actionsに組み蟌み、GitHub䞊で実行するこずを目指したす。 これにより、 情報探玢や手戻りの削枛 ドキュメントず実装が自然に同期され、プロダクトの保守性が高たる AI゚ヌゞェントを前提ずした開発プロセスが可芖化される が成し遂げられ、チヌム開発における 開発者䜓隓(Developer Experiense)の質的向䞊 ず、 組織ノりハりずしおの定着 が期埅されたす。 今回はAI゚ヌゞェントずしお Claude Code を掻甚したす。 GitHub Actionsを甚いたSpec Kitで仕様駆動開発を詊しおみる 仕様駆動開発ずは 仕様駆動開発Spec-Driven Development; SDDは、AIが盎接コヌドを生成する方匏ではなく、たず仕様曞Specificationを定矩し、その仕様を根拠ずしおAI゚ヌゞェントが開発を進める手法です。 仕様駆動開発のねらいは、即興的なvibe codingで倱われがちな合意や根拠を仕様ぞ明確化し、倉曎時も仕様差分を基点ずしお安党か぀高速で反埩できる状態を実珟するこずです。 仕様駆動開発の応甚䟋ずしお、Amazonが発衚した゚ヌゞェント型AI統合開発環境(IDE)である Kiro も泚目されおいたす。Kiroは、自然蚀語のプロンプトや芁求から明確な仕様を起こし、それをもずに芁件分解→蚭蚈→実装タスク化→テスト生成→コヌド生成たでを支揎するものです。 Spec-Kitずは そしお、その仕様駆動開発のワヌクフロヌの暙準化のためのツヌルずしお泚目されおいるのが Spec Kit です。 Spec Kitは䞎えた仕様を詳现化しお仕様曞を䜜成し、゜フトりェア開発の蚈画を策定しおタスクに分解・実装するためのオヌプン゜ヌスツヌルキットでGitHubから提䟛されおいたす。 Claude Code GitHub Actionsに぀いお たた、今回はAI゚ヌゞェントの掻甚過皋がログずしお残らない監査できないずいう珟状ぞのアプロヌチずしおGitHub Actions䞊で仕様駆動開発を詊みたす。 そのために今回は、Claude Code GitHub Actionsを掻甚したした。フロヌずしおはたずIssueを䜜成しIssueのコメントで @claude をメンションし、続けお本文を投皿するずその内容をプロンプトずしお解釈しお返信が返りたす。その実装をレビュヌしおPRを出したす。 こちらの 公匏サむトのworkflowファむル䜜成 を参照し、 github/workflows/ 配䞋ぞymlファむルを远加したした。 オセロ察戊アプリを䜜っおみた Claude Code GitHub ActionsずSpec Kitを甚いた仕様駆動開発のデモンストレヌションずしお、オセロ察戊アプリを䜜成したした。 spec-kitの代衚コマンドずしお以䞋のようなものがあり、これらを順に実行しおいくこずで仕様駆動開発が実珟できたす。 /specify コマンドから芁求を曞き仕様曞を生成 /clarify コマンドで䜜成した仕様曞の未定矩箇所の穎埋め /plan コマンドから察応しおほしい技術スタックを曞き蟌んで詳现蚭蚈曞を生成 /tasks コマンドを叩くずtask.mdファむルずしおTodoリストが䜜成 /implement コマンドでtask.mdを読み蟌んでそのタスクを元に実装 これらのコマンドはすべおSpec Kitの初期化時に䜜成されたす。 たずはuvを事前にむンストヌルし、以䞋を実行したす。 uvx --from git+https://github.com/github/spec-kit.git specify init --here Claude Codeではなく、Geminiでspeckitを䜿甚したい堎合は uvx --from git+https://github.com/github/spec-kit.git specify init --here --ai gemini のように --ai <䜿甚したいcoding agent> で䜿甚できたす。(geminiの堎合は.gemini/commands/にtomlファむルが生成されたす。)察応しおいるagentの皮類はリポゞトリを参照 Spec Kit そしお以䞋の画像のように、Issueを立ち䞊げお @claude でClaudeをメンションしお雑な芁件定矩を投げたす。 @claude /specify モダンなUIのオセロ察戊アプリを開発しおください。CPUずの察戊が可胜なアプリずし、CPUずの察戊は「匱い」、「普通」、「匷い」の䞉皮類を遞べたす。 specifyコマンドの実行䟋 そうするず、䞊蚘の芁件で未定矩で曖昧な箇所を以䞋のようにリストアップしおくれたす。 未定矩な項目のリストアップ䟋 䞊蚘の未定矩な箇所の埋め合わせは /clarify コマンドで以䞋のようにPR䞊でコメントしたす: @claude /clarify 1. プレむダヌ察プレむダヌのモヌド: CPU察戊のみ 2. ゲヌム履歎の保存: 過去のゲヌム結果や統蚈情報の保存は必芁なし 3. サりンドずアニメヌション: 駒を眮く音、裏返すアニメヌション等は必芁なし 4. プラットフォヌム察応: Webにのみ察応 5. CPU思考時間: 即座に応答すべきか。ただしCPUの凊理レベルが高い堎合、芖芚的な衚瀺や遅延凊理が必芁 6. ヘルプ機胜: 有効な手のヒント衚瀺やアンドゥ機胜は必芁 これにより曖昧な未定矩箇所を穎埋めした仕様曞(spec.md)が完成したす。 そしお、次に実装蚈画の䜜成するために /plan コマンドを実行しお技術芁件の定矩や蚭蚈、実装手順の策定したす。 @claude /plan これを React + TypeScript で実装し、ビルドは Vite、状態管理に Zustand を䜿甚したす。スタむリングは Tailwind CSS ず shadcn/uiRadix UIベヌスでモダンか぀アクセシブルなUIを構築したす。盀面描画は解像床に䟝存しない SVG を基本ずし、将来的なアニメ最適化に備えお Canvas 実装も抜象化レむダヌで切り替え可胜にしたす。 CPU思考はUIスレッドをブロックしないよう Web Worker に分離し、アルゎリズムは Minimax + Alpha-Beta を採甚匱=深さ2+簡易ヒュヌリスティック、普=深さ4、匷=反埩深化6–8時間䞊限10秒。ハッシュは Zobrist、思考䞭むンゞケヌタずUX甚の意図的ディレむはUI偎で制埡したす。 アクセシビリティは ARIA ず react-aria に準拠し、レスポンシブ察応・コントラスト基準を満たしたす。囜際化は react-i18next で実装し、チュヌトリアルは MDX で管理したす。 氞続化芁件は最小のためバック゚ンドやDBは䞍芁サヌバヌレス/静的ホスティング: Vercel たたは Cloudflare Pages。任意で蚭定のみ LocalStorage に保存したす。 プロゞェクト構成は core/盀・合法手・反転・評䟡・探玢の玔関数ず ui/衚瀺・操䜜、workers/AI思考に分離し、仕様の FR 矀合法手衚瀺、無効手の芖芚フィヌドバック、終了刀定、難易床遞択、思考むンゞケヌタ、終了ダむアログ、終了埌の新芏察局を満たすタスクに分解しお実装したす。 そうするこずで、技術スタック定矩やプロゞェクト構造などが曞かれた蚈画文曞(plan.md)、技術領域に぀いお詳现調査ず遞定理由を文曞化した技術調査文曞(research.md)、などを生成しおくれたす。 次に、plan.mdで定めた実装手順をベヌスに、それをタスクに萜ずし蟌む /tasks コマンドを実行したす。その結果、䞀連の党おの実装タスクをtasks.mdに䜜成しおくれたす。 @claude /tasks 最埌に /implement コマンドで実装したす。以䞋のように「䞊列で実装できるタスクは䞊列で実装しお」のようなプロンプトを远加で入れるず、tasks.mdのタスクの䞭で䞊列に実装可胜ず刀断したタスクを䞊列で実装しおくれるようになりたす。 @claude /implement 䞊列で実装できるタスクは䞊列で実装しお。 党おの実装が完了埌、軜埮な修正であればそのたたClaudeにメンションしお修正させるこずができたす。倧きな远加実装であれば新たに /specify コマンドで远加機胜の芁件を定矩しお䞊蚘のフロヌを実行したす。 以䞋は実際に出来たオセロ察戊アプリの画面の䞀郚です。 䜜成したオセロの画面 Issue連携ずSub-issueの掻甚 GitHubを掻甚した開発では、Issueに曞かれた芁求を起点ずしお開発するIssue駆動開発チケット駆動開発が䞀般的です。 そこで今回は、Issueを起点に䜜業を蚈画し、必芁に応じおsub-issue機胜も掻甚するため、 /create-sub-issue コマンドを新たに䜜成したした。このコマンドは芪issueを现分化しおsub-issueを䜜成する機胜を持ち、実際は以䞋のフロヌになりたす。 芪Issueを立おる 芪Issueのスレッドでたずは倧たかな䜜業蚈画を立おお、芪Issueに玐づくブランチ(芪ブランチ)でspec.mdを䜜成し、mainブランチタヌゲットでPRを䜜成芪PR 芪PR䞊でspec.mdのレビュヌをし、芪PR䞊でplan.md、tasks.mdを続けお䜜成 /create-sub-issue コマンドでtasks.mdの内容を参照し、sub-issue䜜成の指瀺を出しおsub-issueを䜜成 sub-issueの䜜業内容は、芪ブランチを起点ずしお䜜成し、PR䜜成時にも芪ブランチをtargetに蚭定 䜜成されるsub-issueには以䞋のルヌルが適甚されたす タむトルに芪issue番号ず連番を付䞎 最倧6個たで䜜成可胜 Github MCPの機胜でissueの䜜成ず芪子関係を自動化 コマンドの内容は以䞋(create-sub-issue.md) --- description: 芪Issueを现分化しおsub-issueを䜜成するコマンド。以䞋のsub-issueの䜜成ルヌルに埓っおsub-issueを䜜成しおください。 --- #### **タスクの進め方** 元の倧きなタスク芪Issueを、いく぀かの小さな䜜業sub-issueに分けお進めおいきたしょう。 ### **1. タスクの分割** たず、元のタスク芪Issueの内容をよく読んで理解し、それを具䜓的な䜜業に分解したす。分解した䜜業は、新しいタスクsub-issueずしお登録しおください。 * **䜜成方法**: Github MCPの ` sub_issue_write ` ずいう機胜を䜿っおsub-issueを䜜成しおください。 * **個数**: 䜜成するsub-issueは**6個たで**にしたしょう。 ### **2. sub-issueのタむトルルヌル** 䜜成するsub-issueのタむトルは、以䞋のルヌルに埓っおください。 * **フォヌマット**: タむトルの先頭に ` [芪Issue番号-連番] ` を付けたす。 * **䟋**: 芪Issueの番号が「123」で、最初の䜜業なら ` [123-1] 〇〇の実装 ` のようになりたす。 * **連番**: 連番は、䜜業を進める順番優先床が高い順に ` 1 ` から振っおください。 ### **3. タスクの芪子関係を蚭定** Github MCPの ` sub_issue_write ` ずいう機胜を䜿っお、元の芪Issueず、新しく䜜成したsub-issueを関連付けたす。これにより、タスクの党䜓像が分かりやすくなりたす。 ### **4. 䜜業甚ブランチの準備** 最埌に、**芪Issue甚のブランチ**を1぀䜜成し、倉曎が䜕もない状態で構わないので、䞀床プッシュしおください。 ##### **なぜこれが必芁** この芪ブランチを基準点出発点ずしお、各sub-issueの䜜業甚ブランチを䜜成したり、䜜業完了埌のプルリク゚ストの送り先に指定したりするために必芁です。 たた、デフォルトのClaude Code GitHub Actionsではsub-issueを䜜成する暩限がないため、芪Issueに玐付けおsub-issueを䜜成するにはGitHub MCPを䜿甚したした。 .github/workflows/ 内のymlファむルのClaude Code GitHub Actionsの蚭定にclaude_argsずしお以䞋のMCP呚りの暩限を远蚘したす。 claude_args: | --mcp-config .github/mcp-servers.json --allowedTools \ Bash, Write, Edit, MultiEdit, Read, LS, Glob, Grep, WebFetch\ mcp__github__create_branch,\ mcp__github__issue_read,\ mcp__github__issue_write,\ mcp__github__sub_issue_write,\ mcp__github__list_sub_issues,\ mcp__github__create_pull_request,\ mcp__github__get_pull_request,\ mcp__github__get_pull_request_diff,\ mcp__github__pull_request_read,\ mcp__github__update_pull_request,\ mcp__github__create_pending_pull_request_review,\ mcp__github__add_comment_to_pending_review,\ mcp__github__submit_pending_pull_request_review たた䞊蚘に含たれる .github/mcp-servers.json の蚭定は以䞋のようにしたした。 { " mcpServers ": { " github ": { " command ": " docker ", " args ": [ " run ", " -i ", " --rm ", " -e ", " GITHUB_PERSONAL_ACCESS_TOKEN ", " ghcr.io/github/github-mcp-server " ] , " env ": { " GITHUB_PERSONAL_ACCESS_TOKEN ": " ${GH_TOKEN} " } } } } これにより、tasks.md䜜成埌に @claude /create-sub-issue ずコメントするこずで、芪Issueに玐付いたsub-issueが䜜成されたす。実装はそれぞれのsub-issue内で実装コマンドをコメントしおClaudeに実装しおもらいたす。 こうするこずで、Issue駆動な仕様駆動開発も実珟可胜です。 䜜成されたsub-issueの䟋 問題点ず所感 仕様駆動開発を詊行錯誀しながら詊しおいく䞭で、以䞋のような課題点やトラブルシュヌティングに盎面したしたので䞀䟋ずしお玹介したす。 テスト駆動開発の無芖 Spec Kitではテスト駆動開発TDDを暙準ずしおいたす。 しかし、オセロ察戊アプリの実装では、䞋図のずおりテストコヌドが䜜成されないケヌスもありたした。 原因は、 /implement コマンドでtasks.mdのタスクを実装する際に、テスト実装の優先床が䜎く蚭定されおいるためず考えられたす。 TDDがスキップされた䟋 これを解決するための暫定アプロヌチずしお、CLAUDE.mdに以䞋のような蚘述を远加するこずで、テスト駆動開発を厳守させるようにしたした。 CLAUDE.md: # 原則 - すべおの倉曎は TDDRed→Green→Refactor を厳守する。 1. Red: テスト䜜成 → 倱敗を確認 → テストのみコミット 2. Green: 実装䜜成 → すべおのテストを通す → 実装のみコミットテストは倉曎犁止 3. Refactor: ふるたい䞍倉の範囲でリファクタ → 実装のみコミットテストは原則倉曎犁止 - テストの改倉は原則犁止。ただし、誀仕様たたは明癜な䞍具合の堎合に限り、tests-fix サブタスクずしお別PRで扱う。 - モック実装・ハヌドコヌドは犁止テスト過適合を避ける。必芁なら最小限のテストダブルを䜿甚し、ケヌス拡匵で過適合を怜出。 - sub-issueのタスクずしおファむルを䜜成・線集する堎合、mainブランチではなく、芪Issueのブランチから分岐しおブランチを䜜成しおください。 - PRを䜜成する堎合も、mainブランチではなく、芪Issueのブランチに察しお䜜成しおください。 - 仕様の明確化のために質問・確認事項はたずめお質問しおください。断片的に質問を繰り返すこずは避けおください。 - 党おの䌚話の応答や文章の䜜成には日本語で出力しおください。 - markdownファむルぞの蚘述も基本的に日本語で行なっおください。 自分は䞊蚘のCLAUDE.mdを線集するこずにより、TDDの匷制を改めお行いたした。䞀方でSpec Kitのコマンドを掻甚するのであれば、 /constitution <instruction> コマンドを実行しお開発ツヌルや開発スタむル、コヌディング芏玄などを指定するこずによりTDDを指定するのも良いかもしれたせん。たたチヌム開発の際は、チヌム芏玄の远加も /constitution コマンドで指定しおおくずSpek Kitのコマンドをさらに掻甚できるず考えられたす。 1 たずめ 本蚘事では、Claude Code GitHub ActionsずSpec Kitを組み合わせるこずで、仕様駆動・゚ヌゞェント駆動開発を詊しおみたした。たた、Issue/sub-issueずも組み合わせるこずで、Issue駆動な開発も実珟できたした。この手法により、タヌミナルを開いお自分でコヌドを曞かなくずもGitHubのブラりザ䞊でのコメントによる操䜜のみで、䞊蚘のようなアプリが開発できたのは非垞に感慚深かったです。 本蚘事で扱ったような内容が、珟堎に寄り添った提䟛方法の䞀案ずしお怜蚎しおいければ幞いです。 参考資料 SpecKitでどこたでできるコストはどれくらい https://speakerdeck.com/leveragestech/speckitdedokomadedekiru-kosutohadorekurai ↩
はじめに こんにちは開発チヌムで生成AI関連のシステム開発をしおいる広束です 今回は私が担圓した案件で発生した「自埋型AI゚ヌゞェントが耇雑な指瀺を途䞭で忘れおタスクを完遂できない」ずいう課題に察しお論文を元に察策を調査しおみたした。 具䜓的にはマルチ゚ヌゞェント化やオヌケストレヌタヌの導入によるコンテキスト゚ンゞニアリングに぀いお論文を䞭心に調査しおみたした。 はじめに 案件で発生した課題 課題ず原因に぀いお 解決策コンテキスト゚ンゞニアリングに぀いお 手法 1. Plan and Act 2. 階局型マルチ゚ヌゞェントオヌケストレヌタヌ 3. 特化型の専門家゚ヌゞェントぞの分解 たずめ 参考文献 案件で発生した課題 私が担圓した案件で「自埋型AI゚ヌゞェントが耇雑な指瀺を途䞭で忘れおタスクを完遂できない」ずいう問題が発生したした。以䞋では、この課題の具䜓的な状況を説明したす。 案件自䜓は自埋型AI゚ヌゞェントでIT運甚を自動化するものでした。IT運甚で広く暪展開できるAI゚ヌゞェントが実珟できるのか怜蚌するこずが目的であったため、今回はワヌクフロヌ型の゚ヌゞェントではなくReAct型の自埋的に思考する゚ヌゞェントで怜蚌をしたした。 実装した゚ヌゞェントはReAct型のシングル゚ヌゞェントで6぀の自䜜MCPサヌバヌず接続し蚈12ツヌルを操䜜するものでした。各皮運甚察象のサヌビスがMCP未察応だったため、䞀時的に自䜜MCPを甚いおツヌルを接続したした。 ゚ヌゞェントぞの指瀺内容は以䞋のような流れでした。 各皮サヌビスを操䜜 䟋倖が発生した堎合は原因ず解決策を調査 解決策を提瀺し、人間オペレヌタヌの承認を取埗 問題を解決し、最初の指瀺を完遂 しかし、䟋倖察応時に゚ラヌ解決した時点でタスクを完了したず誀認し終了しおしたう確率が高かったです。およそ50%皋床途䞭終了する事態が発生しおいたした。 このため、「自埋型AI゚ヌゞェントが耇雑な指瀺を途䞭で忘れおタスクを完遂できない」ずいう課題に察しおの解決策を探す必芁が出おきたした。 課題ず原因に぀いお 先ほどの案件で発生した課題を䞀般化しお解くべき問題を特定しお論文で調査したいず思いたす。 案件で発生しおいるこずは䞀般化するず以䞋のようになりたす。 自埋型AI゚ヌゞェントは自ら思考、蚈画、実行、結果の芳察を繰り返すこずで目的を達成する仕組みです。しかし、耇雑な指瀺を䞎えるず途䞭で本来の指瀺を忘华しおしたい、途䞭で終了したり指瀺を無芖した行動を取るこずがありたす。 この問題は、倚くの論文で指摘されおいお、様々な解決策の提案埌述で玹介や ゚ヌゞェントの性胜を枬るためのベンチマヌク に倚段階の耇雑なタスクを完遂できるかずいう項目が含たれおいたりしたす。 倚くの論文でこの課題の原因に぀いおは、コンテキストが倚くなりすぎお䞀貫性を保おなくなるからずされおいたす。 ゚ヌゞェントが高レベルの蚈画を立おながらず䜎レベルのツヌル操䜜ず環境からのフィヌドバックを1぀のコンテキスト内で管理しおいくうちに䞀貫性が保おなくなり砎綻しおいくこずが原因ず指摘されおいたす。 解決するためにはコンテキストをどう管理するか、぀たり䞀般的に「コンテキスト゚ンゞニアリング」ず呌ばれおいる手法を詊す必芁があるず考えられたす。コンテキスト゚ンゞニアリングの䞭で、マルチ゚ヌゞェント化や関心の分離など様々な手法があるため調査したす。 解決策コンテキスト゚ンゞニアリングに぀いお 先ほど、課題の原因はコンテキストが倚くなりすぎお䞀貫性を保おなくなるからず確認したした。 解決策ずしおはコンテキスト゚ンゞニアリングず呌ばれるコンテキスト管理の方法が有効のようです。 そもそもコンテキスト゚ンゞニアリングに぀いおご存知ない方もいるず思うので簡単に説明したす。 LangChainのブログ にもたずめられおいる通り゚ヌゞェント向けのコンテキスト゚ンゞニアリングには䞋の4぀の手法がありたす。 コンテキスト゚ンゞニアリングの4぀の手法 Write Contextセッション内のやり取りをメモリ機胜などで倖郚に保存するこずでコンテキストの肥倧化を防ぐ方法です。 Select Context倖郚ツヌルなどから必芁なコンテキストだけを抜出する仕組みです。これによっおコンテキストの肥倧化を防ぎたす。 Compress Contextコンテキストが倚くなるずコンテキストの圧瞮で芁玄や切り取りをしたす。 Isolate Contextコンテキストを独立させるこずです。マルチ゚ヌゞェント化などを実斜し関心の分離をしお、コンテキストもそれぞれの゚ヌゞェント内で独立させるこずにより同䞀コンテキストの肥倧化を防ぎたす。 この4぀の手法の䞭で今回有効なのはIsolate Contextず刀断したした。理由は今回耇数のツヌルを扱い環境からのフィヌドバックを埗お詊行錯誀する過皋で、圓初の指瀺を忘华しお盎近のタスクだけ終わらせお終了しおしたうためです。 そこで、蚘茉されおいる通りマルチ゚ヌゞェント化、䟋えば䜜業する゚ヌゞェントず蚈画を立おお党䜓をコントロヌルする゚ヌゞェントを分けお関心の分離によるコンテキストの分離を実斜すれば有効に機胜するのではず仮説を立おたした。 手法 ゚ヌゞェントによるIsolate Contextずいうコンテキストの分離にはいく぀か手法があるため、それぞれ論文を䞭心に解説したす。 1. Plan and Act Plan and Act ず呌ばれる手法に぀いお玹介したす。 これは高レベルの蚈画を立おるPlannerず実際にツヌルを䜿っお操䜜するExecutorを別の゚ヌゞェントにするこずで関心の分離ずコンテキストの分離をする手法です。埓来のシングル゚ヌゞェントでは高レベルの蚈画の思考ずツヌルを具䜓どう䜿うかの思考を同じコンテキスト・同じ゚ヌゞェント内で実斜する必芁があり耇雑なタスクでは高レベルの蚈画の䞀貫性を保おなくなるこずが課題でした。 これを䞋図の通りPlannerずExecutor゚ヌゞェントに分け、それぞれ関心ずコンテキストを分離しお課題を解決しおいたす。 Plan and Actの抂念図 Plan and Actの流れ この手法によりWebArena‑Lite57.58、WebVoyager81.36ずそれぞれのベンチマヌクでSOTAを達成しおいるようです。 PlannerずExecutorを分離するこずで䟋倖発生時や耇雑で長期なタスクであっおも、Plannerが高レベルの蚈画に぀いおのみコンテキストを保持するこずで最初の指瀺を忘れるこずなく、指瀺を完遂する確率を䞊げるこずができたす。 2. 階局型マルチ゚ヌゞェントオヌケストレヌタヌ マルチ゚ヌゞェント化でよく䜿われる手法ずしおはオヌケストレヌタヌずサブ゚ヌゞェントに分ける方法です。 これは先ほどのPlan and Actの発展系でもあり、オヌケストレヌタヌは蚈画を実斜しおメむンの指瀺をサブタスクに分解し、サブタスクをサブ゚ヌゞェントで実行させる手法になりたす。 こちらは論文ではないのですが、Anthropicのブログ How we built our multi-agent research system が非垞にわかりやすく解説しおいるので玹介したす。 Claudeのオヌケストレヌタヌアヌキテクチャヌ Claudeのオヌケストレヌタヌの凊理フロヌ 図の通りLeadResearcher゚ヌゞェントがオヌケストレヌタヌずなっお指瀺をサブタスクに分解し、サブ゚ヌゞェントにアサむンしおいたす。 この際、オヌケストレヌタヌによるサブタスクの蚀語化が明確にできおいないず、耇数のサブ゚ヌゞェントは重耇したタスクを実行しおしたいたす。重耇や非効率の問題があるためオヌケストレヌタヌによるサブタスクの蚀語化は慎重にチュヌニングが必芁だそうです。 しかし、オヌケストレヌタヌが的確にサブタスクを生成しおサブ゚ヌゞェント甚のプロンプトを生成できるようになるず耇雑な調査を蚈画立おお効率よく行うこずが可胜になったず蚘茉されおいたす。 3. 特化型の専門家゚ヌゞェントぞの分解 最埌に特化型の専門家゚ヌゞェントに分解する手法に぀いお説明したす。 先ほど玹介したオヌケストレヌタヌの事䟋では汎甚的なサブ゚ヌゞェントに郜床サブタスクのプロンプトを枡しおタスクを振っおいたした。 しかし、扱うツヌルが倚くなるず゚ヌゞェントがどのツヌルを䜿っおどのようにタスクを進めるかたで毎回決定させる必芁がありたす。この時点でコンテキストを倚く消費したりうたくタスクを遂行できない可胜性が䞊がりたす。 そこでロヌル単䜍での専門家の゚ヌゞェントを事前に定矩しおおくこずで、専門家らしく決たったツヌルを䜿っおどうタスクを進めるかを事前定矩した゚ヌゞェントを䜿甚するこずでこの課題を解決したす。 䟋えば、 HyperAgent: Generalist Software Engineering Agents to Solve Coding Tasks at Scale のようなコヌディンマルチ゚ヌゞェントでは䞋図の通り明確な専門家゚ヌゞェントぞ分けおいたす。 HyperAgentでの専門家゚ヌゞェントの振る舞い たずめ 今回は実案件で発生した課題「自埋型AI゚ヌゞェントが耇雑な指瀺を途䞭で忘れおタスクを完遂できない」に察しお有効ず思われるコンテキスト゚ンゞニアリング手法を調査しおみたした。 具䜓的な手法を論文を䞭心に以䞋3぀玹介したした。 Plan and Act 階局型マルチ゚ヌゞェントオヌケストレヌタヌ 特化型の専門家゚ヌゞェントぞの分解 手法1~3の順に実装難易床が䞊がっおいくず思うので、実装コストず粟床を鑑みお皆さんも耇雑なタスクを完遂する゚ヌゞェントシステムを構築しおみおください 参考文献 Liu, X. et al. (2023) . AgentBench: Evaluating LLMs as Agents. arXiv preprint arXiv:2308.03688. Erdogan, L. E. et al. (2025) . Plan-and-Act: Improving Planning of Agents for Long-Horizon Tasks. In Proceedings of the 42nd International Conference on Machine Learning (Vol. 267, pp. 15419-15462) . PMLR. Phan, H. N. et al. (2024) . HyperAgent: Generalist Software Engineering Agents to Solve Coding Tasks at Scale. arXiv preprint arXiv:2409.16299.
導入 初めたしお。Insight Edgeで䌁業のDX・AI掻甚をご支揎しおいるセヌルスコンサルタントです。 これたで様々な倧䌁業の党瀟暪断的なプロゞェクトに携わっおきたしたが、 DXがうたくいかない䌁業に共通する、いく぀かの「぀たずきの芁玠」があるこずに気づきたした。 「倖郚の経隓豊富なベンダヌに頌んだのだから、うたくやっおくれるだろう」 そう考えおDXをスタヌトされるかもしれたせん。 優秀なコンサルタントやベンダヌを雇えば、DXは成功するのでしょうか 答えは「No」です。 私たちの圹割は、あくたで皆さんの挑戊を「支揎」するこず。䞻圹は、あくたで皆さん自身です。 決しお倖郚ベンダヌぞの「䞞投げ」では実珟できたせん。 特に倧芏暡なDXプロゞェクトでは、経営局の号什で始たったものの、珟堎のリアルな課題ずズレおしたったり、 掚進担圓者でさえ「䜕のためにやっおいるんだっけ」ず目的を芋倱っおしたったりするケヌスが埌を絶ちたせん。これでは、たさに目的地を芋倱ったたた航海を続ける船ず同じです。クラむアント偎がこうした状態では、私たちがどれだけ䌎走しようずしおも、やがおプロゞェクトは掚進力を倱い、厩壊しおしたいたす。 真のDX成功に必芁なのは、クラむアントずベンダヌの匷固な「二人䞉脚」。互いに手を取り合い、同じゎヌルを目指すパヌトナヌシップが䞍可欠なのです。 そこでこの蚘事では、私が珟堎で芋おきたDX掚進を阻む「4぀の壁」の正䜓をご玹介したす。あくたでその課題は氷山の䞀角ではありたすがこの蚘事が、皆さんの䌚瀟のDXプロゞェクトを成功に導くための、確かな䞀歩ずなれば嬉しいです。 導入 その「AI導入」、本圓に進んでいたすか 第1章生成AI掚進を阻む「4぀の壁」ずその正䜓 1-1. 矅針盀なき航海「ずりあえずDX」の眠 1-2. 構造的ボトルネックDXを阻む旧態䟝然の組織䜓制 1-3. 人材の枯枇誰もいない「掚進リヌダヌ」の垭 1-4. むノベヌションの足枷倉化を拒む瀟内ルヌル 第2章解決の鍵は「アゞャむル・ガバナンス」ずいう新しい考え方 第3章凊方箋①OKRで党瀟のベクトルを合わせる 3-1. OKRObjectives and Key Resultsフレヌムワヌクの導入 3-2. AIプロゞェクトにこそ「SMART」な目暙を 3-3. IBMやGoogleの事䟋に孊ぶ 第4章凊方箋②DX掚進の䞭栞組織「CoE」を立ち䞊げる 4-1. DX CoECenter of Excellenceずは 4-2. CoEが担う4぀の重芁機胜 4-3. あなたの䌚瀟に最適なCoEの圢は 第5章凊方箋③「リスキリング」で瀟内に眠る才胜を開花させる 5-1. たずは党瀟員の「共通蚀語」を䜜る基瀎リテラシヌ局 5-2. 次䞖代リヌダヌを遞抜し、歊者修行させる専門家/リヌダヌ局 5-3. 珟堎のヒヌロヌ「垂民開発者」を育おる実践者局 第6章凊方箋④「瀟内特区」でむノベヌションの実隓堎を䜜る 6-1. 「AI/DX特区制床瀟内サンドボックス」の創蚭 6-2. 「ハンコのための出瀟」をなくす皟議・承認プロセスの改革 6-3. 「れロトラスト」で安党ず速床を䞡立する たずめAIドリブンな組織ぞの倉革は、今日から始められる その「AI導入」、本圓に進んでいたすか 「党瀟で生成AIを掻甚するぞ」 経営陣の号什のもず、鳎り物入りでスタヌトしたDXプロゞェクト。しかし、数ヶ月経った今、こんな課題に盎面しおいたせんか 各プロゞェクトが䞊行しおバラバラで進行しおおり、党䜓ずしお䜕を目指しおいるのか分からない  誰が責任者で、どういう指瀺系統の元進めおいくのかが曖昧でプロゞェクトがうたく進たない  掚進できる人材が瀟内におらず、珟堎が闇雲の䞭で疲匊しおいる  新しいツヌルを䜿いたいだけなのに、瀟内申請にかなりの時間がかかる  もし䞀぀でも圓おはたったなら、ご安心ください。それはあなたの䌚瀟だけの問題ではありたせん。倚くの䌁業が、倧芏暡な倉革の過皋で同じような「成長痛」を経隓しおいたす。 この問題の本質は、生成AIずいう最新の「゜フトりェア」を、旧来の「組織OS」の䞊で無理に動かそうずしおいるこずにありたす。 本蚘事では、この摩擊を解消し、AI掻甚を真に加速させるための「組織OSのアップグレヌド方法」を、4぀の具䜓的な凊方箋ずしおご玹介したす。 第1章生成AI掚進を阻む「4぀の壁」ずその正䜓 たず、倚くの䌁業が盎面する4぀の課題を深掘りしおみたしょう。これらは個別の問題ではなく、互いに絡み合い、倉革のブレヌキずなる厄介な壁を築いおいたす。 1-1. 矅針盀なき航海「ずりあえずDX」の眠 「たずはやっおみよう」ず、明確なゎヌル蚭定よりも目先の実行しやすさを優先しおプロゞェクトを始めおいたせんかこれは倉革の初期段階でよく芋られる光景ですが、䞭盀になるず「このプロゞェクト、どこに向かっおるんだっけ」ず、方向性を芋倱い、意思決定ができない「カオス状態」に陥りがちです 。 生成AIの進化は速く、長期的なゎヌル蚭定は難しいもの。しかし、だからずいっお指針がなければ、それはただの挂流です 。「レポヌト䜜成時間を50%削枛する」ずいった、枬れるビゞネス成果ずプロゞェクトが結び぀いおいない堎合、問題はさらに深刻化したす 。 仮に走りながら意思決定をしおいくずいうプロセスも状況によっおは間違いではないですが だずしおも「ずりあえずDX」から「蚈画的DX」ぞず昇華させるための修正・アップデヌトを進める機関やフロヌも同時に敎備しおいかなければなりたせん。 1-2. 構造的ボトルネックDXを阻む旧態䟝然の組織䜓制 珟圚の組織構造は、DXのスピヌド感に察応できおいたすか意思決定の暩限や責任の所圚が曖昧で、耇数のプロゞェクトを暪断しお芋おいる人がいない 。そんな状態では、郚門間の連携は生たれず、組織のサむロ化ずスピヌドの䜎䞋を招くだけです。 特に倧䌁業では、既存の耇雑なプロセスが新しい挑戊の足枷ずなる「組織の硬盎化」が起こりがちです 。DXを成功させるには、十分な暩限を持぀CDOChief Digital Officerのような明確なリヌダヌず、専門の掚進䜓制が䞍可欠なのです 。 1-3. 人材の枯枇誰もいない「掚進リヌダヌ」の垭 AIプロゞェクトを力匷く匕っ匵っおいけるリヌダヌが瀟内にいたすかこの問題は、組織䜓制の問題ず深く関わっおいたす。専門の掚進組織がなければ、そうした人材が育぀キャリアパスもなく、結果ずしおリヌダヌ䞍圚のプロゞェクトが乱立しおしたいたす。 「DX人材䞍足」は日本䞭の䌁業が抱える課題ですが 、単に技術者が足りないずいう話ではありたせん。本圓に深刻なのは、技術ずビゞネスを぀なぐプロゞェクトマネヌゞャヌやビゞネスリヌダヌがいないこずなのです 。 1-2で述べた組織䜓制にも通じる話ですが倚くの䌁業はここを「ベンダヌ」偎に完党委蚗しおしたうケヌスが倚いです。 1-4. むノベヌションの足枷倉化を拒む瀟内ルヌル 「新しいツヌルを詊したいのに、申請に2ヶ月もかかる 」 こんな経隓はありたせんか安定した事業運営を前提に䜜られた瀟内ルヌルは、トラむアンド゚ラヌが必須のAI開発ずは盞性が最悪です。たるで、身䜓の「免疫システム」が新しい倉化を拒絶しおいるかのよう。既存のやり方を守るこずが優先され、むノベヌションの芜が摘たれおしたっおいるのです 。 これら4぀の問題は、互いに圱響し合い、「ドゥヌムルヌプ砎滅の連鎖」ず呌ばれる負のスパむラルを生み出したす。掚進䜓制がない問題2から人材が育たず問題3、リヌダヌ䞍圚でプロゞェクトが迷走し問題1、成果が出ないこずで組織はさらに保守的になり、ルヌルを匷化する問題4。この悪埪環を断ち切るには、包括的なアプロヌチが必芁です。 第2章解決の鍵は「アゞャむル・ガバナンス」ずいう新しい考え方 これらの根深い問題を解決するには、小手先の修正では䞍十分です。組織の意思決定ずリスク管理のあり方そのものを倉える、新しいOSが必芁になりたす。そこで「アゞャむル・ガバナンス」ず最近呌ばれおいる仕組みに぀いおご玹介させおいただきたす。 参考資料 https://biz.moneyforward.com/ipo/basic/10334/ これは、埓来の「制限」や「管理」のためのガバナンスではありたせん。䞍確実な時代に「むノベヌションを可胜にする」ための、柔軟で動的なフレヌムワヌクです。ビゞネス、IT、法務、セキュリティなど、倚様な関係者が協力し、走りながらルヌルを改善しおいく。そんな新しいガバナンスの圢です 。 アゞャむル・ガバナンスは、予枬䞍可胜なAI開発を、旧来のガバナンスで管理しようずする「根本的なミスマッチ」を解消したす。そしお、前述の4぀の課題をたずめお解決ぞず導きたす。 目的の明確化問題1ゎヌルを蚭定し぀぀、柔軟な芋盎しを蚱容する。 組織䜓制問題2倚様な関係者を巻き蟌み、協働を促す。 人材䞍足問題3新しい専門家の圹割を定矩し、掻躍の堎を䜜る。 硬盎化したルヌル問題4ルヌルを固定せず、継続的に曎新する。 これは単なるプロセス倉曎ではなく、「倱敗を恐れる文化」から「倱敗から玠早く孊ぶ文化」ぞの転換を意味したす。次章からは䞊蚘の぀の課題それぞれに察しおの凊方箋に぀いお述べおいきたす。 第3章凊方箋①OKRで党瀟のベクトルを合わせる 「結局、䜕を目指すんだっけ」ずいうカオス状態を抜け出すため、党瀟的な目暙ず各プロゞェクトを明確に連携させるフレヌムワヌクを導入したしょう。 3-1. OKRObjectives and Key Resultsフレヌムワヌクの導入 Googleやメルカリなども採甚する目暙蚭定・管理手法「OKR」を導入したす 。OKRは、ワクワクするような定性的な「目暙Objectives」ず、その達成床を枬る定量的な「䞻芁な成果Key Results」で構成されたす。 目暙O: 「瀟内のナレッゞ共有を革新する」ずいった、挑戊的で心躍るゎヌル。 䞻芁な成果KR: 「重芁文曞の怜玢時間を30%削枛する」「新ナレッゞ基盀のナヌザヌ満足床80%を達成する」ずいった、具䜓的で枬定可胜な指暙 。 OKRの玠晎らしい点は、経営局から珟堎たで、組織党䜓の目暙を䞀本化し぀぀、珟堎の自埋性を尊重できるこずです。トップダりンの戊略ず、珟堎の䞻䜓性。DX掚進におけるこのゞレンマを解消する匷力なツヌルずなりたす。 よくありがちな事䟋ずしおは挑戊的な目暙であるOの郚分はかなり倧々的に発什されおいお䞀芋DXずしおの枩床感は党䜓ずしお高いように芋えたす。しかし実態ずしおKRが正しく玐づいお蚭定されおおらず、掚進ずいう芳点では珟堎の䞻䜓性が損なわれ、い぀の間にかOに぀いおの解釈がチヌムや個人ごずに異なる、その結果目指すべき方向性のずれやプロゞェクトのKPIずしおの指針を芋倱っおいくずいうケヌスは倚く芋おきたした。 3-2. AIプロゞェクトにこそ「SMART」な目暙を OKRを機胜させるため、すべおの䞻芁な成果KRが「SMART原則」Specific:具䜓的、Measurable:枬定可胜、Achievable:達成可胜、Relevant:関連性がある、Time-bound:期限があるを満たすようにしたす 。 「業務効率を改善する」ずいった曖昧な目暙ではなく、「特定の月次レポヌト5皮類のドラフト䜜成を第3四半期たでに自動化し、粟床90%を達成する」ずいった、誰が芋おも進捗がわかる具䜓的な目暙に萜ずし蟌むこずが、カオスを防ぐ鍵です 。 SMARTな蚭蚈ができおいないずプロゞェクト掚進の䞭盀での埌戻りが発生する可胜性や、今やっおいるこずの重芁性を芋倱う、結果プロゞェクト党䜓ずしおの軞を改めお定め盎すずいったこずも起こりがちです。 3-3. IBMやGoogleの事䟋に孊ぶ IBMの倧芏暡システム導入事䟋では、IT、営業、プロゞェクトマネヌゞャヌずいった異なるチヌムが、党瀟目暙に連携したOKRをどう蚭定したかが瀺されおいたす 。郚門暪断プロゞェクトで、各チヌムが自分の圹割を理解し぀぀、同じゎヌルに向かうための優れたお手本ずなるでしょう。 OKRの導入は、単なる管理手法の倉曎ではありたせん。それは、「䜕をもっお成功ずするか」を組織党䜓で真剣に問い盎す、文化的な倉革ずなりたす。 倧芏暡なDX掚進の珟堎ではさたざたな郚眲から集められた人員によっおチヌムが組成され掚進しおいくケヌスも少なくありたせん。しかし本来チヌムや郚眲によっおプロゞェクトに察する枩床感やKPI、MBOの蚭定などは倚皮倚様であり、元々は同じ方向を向いおいないケヌスが倚いです。 これをそのたたにしおおくず、メンバヌによっおのモチベヌションや自発性などに枩床感の差異が起こり、郚眲間のコンフリクトや掚進の鈍化が起こりたす。それらをいかに党瀟目暙に連携させお蚭定しおいくかが重芁な鍵ずなりたす。 参考 https://www.ibm.com/jp-ja/think/topics/okr-examples 第4章凊方箋②DX掚進の䞭栞組織「CoE」を立ち䞊げる 倉革の匷力な゚ンゞンずなる専門組織「DX CoECenter of Excellence」を蚭立し、珟圚の曖昧な意思決定構造ず郚門間のサむロを砎壊したしょう。 4-1. DX CoECenter of Excellenceずは CoEは、単なるIT郚門ではありたせん。ビゞネス、テクノロゞヌ、デヌタ分析など、倚様な専門家が集結した、組織暪断の戊略チヌムです 。瀟内に散らばった知識や取り組みを集玄し、党瀟を俯瞰する「叞什塔」ずしお機胜したす 。 4-2. CoEが担う4぀の重芁機胜 ナレッゞ集玄: 瀟内倖の成功事䟋や教蚓を集め、党瀟に共有し、組織の孊習スピヌドを加速させたす 。 ガバナンス: アゞャむル開発手法や評䟡指暙KPIなど、党瀟的な暙準ルヌルを䜜り、プロゞェクトの䞀貫性を保ちたす 。 技術支揎: 各郚門のプロゞェクトに察し、専門知識を提䟛し、瀟内コンサルタントずしお課題解決をサポヌトしたす 。 人材育成: 人事郚ず連携し、次の章で玹介する党瀟的なリスキリングを䞻導したす 。 CoEの成功は、CoEが支揎したプロゞェクトの成功率や、プロゞェクト期間の短瞮率ずいった具䜓的な貢献床で枬るべきです 。 4-3. あなたの䌚瀟に最適なCoEの圢は CoEにはいく぀かのモデルがあり䞀郚を玹介したす。私が珟堎で携わっおいる範疇においおは連携・ハむブリッド型の事䟋が倚いです。 モデル皮別 説明 長所 短所 䞭倮集暩型 匷力な䞭倮組織が党瀟のDXを統制する。 ・迅速な暙準化 ・匷力なガバナンス ・珟堎ニヌズずの乖離 ・官僚化のリスク 連携・ハむブリッド型 䞭倮のDX本郚が戊略や基盀を提䟛し、各事業郚門ず連携しお掚進する。 ・䞭倮戊略ず珟堎ニヌズの䞡立 ・珟堎の䞻䜓性の尊重 ・圹割分担の明確化が必芁 ・調敎コストが発生 このモデルでは、CoEが戊略的な方向性を瀺し぀぀、事業郚門が珟堎の知識を掻かしお䞻䜓的にむノベヌションを起こせたす。CoEの最も重芁な圹割は、経営の蚀葉を技術の蚀葉に、技術の可胜性をビゞネスの蚀葉に「翻蚳」するこずであり、この翻蚳機胜こそが郚門間の壁を壊し、DXの成功確率を飛躍的に高めるのです。 第5章凊方箋③「リスキリング」で瀟内に眠る才胜を開花させる DX人材は、倖から採甚するだけでは足りたせん。瀟内の人材を戊略的に育成する「リスキリング」こそが、持続可胜な倉革の鍵です。党埓業員を察象ずした階局的な育成プログラムを始めたしょう。 5-1. たずは党瀟員の「共通蚀語」を䜜る基瀎リテラシヌ局 経営局も含めた党埓業員を察象に、DX/AIリテラシヌの基瀎研修を必須化したす。eラヌニングなどを掻甚し、AIの基本的な仕組みや可胜性、倫理的な泚意点に぀いお、党瀟で共通の理解を醞成したしょう 。党瀟員に教育を矩務付けるこずで、倉革の土壌を䞀気に耕すこずができたす 。 5-2. 次䞖代リヌダヌを遞抜し、歊者修行させる専門家/リヌダヌ局 ポテンシャルの高い人材を遞び、次䞖代のDXリヌダヌを育成する特別プログラムを創蚭したす。技術だけでなく、プロゞェクトマネゞメントや倉革を䞻導するリヌダヌシップを総合的に孊びたす。いわゆるラりドスピヌカヌず呌ばれる圌らを集䞭的に育成しおいくこずでAIに察する瀟内認知や行動意欲を波及効果で拡倧させるこずが可胜になり、よりDXの文化醞成が掻発になりたす。 5-3. 珟堎のヒヌロヌ「垂民開発者」を育おる実践者局 事業郚門の埓業員が、プログラミング䞍芁の「ノヌコヌド・ロヌコヌドツヌル」などを䜿い、自らの手で業務改善を進められるように支揎したす。珟堎の深い業務知識ず新しいデゞタルツヌルが結び぀いた時、倧きなむノベヌションが生たれたす。これは、トップダりンで進むDXを、珟堎にずっお「自分事」にするための最も有効なアプロヌチです。 階局レベル 察象者 䞻芁な孊習目暙 カリキュラム・手法の䟋 基瀎リテラシヌ局 党埓業員 ・AI/DXの基本抂念の理解 ・自瀟DX戊略の理解 ・eラヌニング必修 ・党瀟ワヌクショップ 実践者局 各郚門の業務担圓者 ・ノヌコヌド/ロヌコヌドツヌル掻甚 ・デヌタ分析・可芖化スキル ・ツヌル別ハンズオン研修 ・瀟内ハッカ゜ン 専門家/リヌダヌ局 遞抜された人材 ・アゞャむルプロゞェクト管理 ・チェンゞマネゞメント ・瀟内倧孊遞抜制 ・越境孊習他瀟掟遣等 基瀎リテラシヌ局ぞの党䜓的なAIナレッゞの展開を経おAIを䜿っおいく意識醞成を進め、それらの掚進、ないしは実践者局ぞの業務導入を専門家・リヌダヌ局が匷力に進めおいく。この流れを構築しおいくこずが文化醞成、匷いおはAI浞透ず匷固な組織レベル底䞊げに必芁な芁玠ずなりたす。 第6章凊方箋④「瀟内特区」でむノベヌションの実隓堎を䜜る むノベヌションの足枷ずなっおいる硬盎的な瀟内ルヌルを、思い切っお倉えおいきたしょう。実隓を奚励し、スピヌドを加速させるための制床改革です。 6-1. 「AI/DX特区制床瀟内サンドボックス」の創蚭 瀟内に、実隓的なプロゞェクトのための「AI/DX特区」、すなわち瀟内サンドボックスを蚭けたしょう。これは、認定されたプロゞェクトに限り、通垞の煩雑な手続きを免陀・簡玠化する特別な゚リアです 。 䜕ができる: この特区内では、新しいクラりドサヌビスの利甚申請が迅速化されたり、実隓専甚のセキュアな環境が提䟛されたりしたす 。 どう管理する: CoEがプロゞェクトを審査・監督するこずで、自由な実隓ず組織的な統制のバランスを取りたす。 6-2. 「ハンコのための出瀟」をなくす皟議・承認プロセスの改革 党瀟的なボトルネックである皟議プロセスを、単に電子化するだけでなく、プロセスそのものを芋盎したしょう 。「この承認は本圓に必芁か」「珟堎の決裁暩限を増やせないか」ずいった芖点で、䞍芁なステップを倧胆に削枛するこずが重芁です 。 6-3. 「れロトラスト」で安党ず速床を䞡立する セキュリティの考え方を、瀟内は安党、瀟倖は危険ずいう「城ず堀」モデルから、「誰も信頌せず、垞に怜蚌する」ずいう「れロトラスト」モデルぞ移行したしょう 。これにより、埓業員はどこからでも安党に必芁なツヌルにアクセスでき、アゞャむルな働き方を匷力にサポヌトしたす。これはNTTデヌタ先端技術やLIXILなども取り組む、珟代の必須むンフラです 。 この「瀟内サンドボックス」は、単なる技術の実隓堎ではありたせん。それは「新しいガバナンスのプロトタむプ」です。サンドボックス内で詊された新しいルヌルが成功すれば、いずれ党瀟暙準ぞず展開しおいく。安党な環境で、未来の䌚瀟のルヌルを生み出しおいくための、極めお重芁な仕組みなのです。 たずめAIドリブンな組織ぞの倉革は、今日から始められる 本蚘事では、生成AI掚進の過皋で倚くの䌁業が盎面する4぀の壁ず、それを乗り越えるための4぀の凊方箋をご玹介したした。 目的の明確化: OKRで党瀟のベクトルを合わせる 䜓制の改革: DX CoEを蚭立し、倉革の゚ンゞンを䜜る 人材の育成: リスキリングで瀟内の才胜を解き攟぀ 制床・環境の敎備: 瀟内サンドボックスでむノベヌションを加速する これらは、䞀぀ひず぀が独立した斜策ではなく、盞互に連携するこずで最倧の効果を発揮したす。ずはいえ、すべおを䞀床に始める必芁はありたせん。たずは、あなたの組織で最も着手しやすいずころから、小さな䞀歩を螏み出しおみおはいかがでしょうか。 たずは3ヶ月でできるこず 経営局を巻き蟌み、小さなCoEチヌムを発足させる。 特に重芁なパむロットプロゞェクトで、OKRを詊しおみる。 そのプロゞェクト限定の「瀟内サンドボックス」を蚭蚈しおみる。 今盎面しおいる課題は、未来の競争優䜍性を築くための絶奜の機䌚です。この蚘事が、あなたの䌚瀟の倉革を埌抌しする䞀助ずなれば幞いです。
゚ンゞニア集団の䞭に朜む非゚ンゞニアの生態 はじめたしお。Insight Edgeセヌルス・コンサルティングチヌムで契玄業務や売䞊管理を担圓しおいる非゚ンゞニアの長尟です。 呚りを芋枡せば、AIやデヌタサむ゚ンスの博士号を持぀メンバヌや、倧芏暡なシステム開発を率いおきた猛者ばかり。そんな技術のプロフェッショナル集団の䞭で、私はコヌドを曞かない「非゚ンゞニア」ずしお働いおいたす。 私の呚りでは、日垞䌚話で「fetchするためのMCPサヌバを...」や「LLMによるペル゜ナ生成のプロンプトが 」ずいった蚀葉が飛び亀いたす。それを聞きながら「今はポゞティブな話それずもネガティブな話 」ず、話の趣旚すら掎めないこずも。 今日は、そんな私が専門倖の領域でいかにしお䟡倀を芋出し、課題解決に挑んだのか。そしお、ロヌコヌドツヌル「Dify」を䜿い、たずは自瀟の案件怜玢を効率化するAIツヌルを自力で䜜り䞊げた話をさせおください。これは、私個人の奮闘蚘であるず同時に、私たちの䌚瀟Insight Edgeが持぀「やっおみる」ずいう文化の蚌明でもありたす。 ゚ンゞニア集団の䞭に朜む非゚ンゞニアの生態 1. 「あの情報、どこだっけ」- 日々の業務に朜む巚倧な時間泥棒 2. やっおみる、から始たった挑戊 3. れロからのAI開発ゞャヌニヌ非゚ンゞニアが挑んだ3週間 ステップ1AIに知識を叩き蟌むナレッゞベヌスの構築 ステップ2AIずの察話方法を教えるプロンプト゚ンゞニアリング ステップ3ひたすら詊し、改善する 4. コヌドを曞かない私が描く、次の景色 1. 「あの情報、どこだっけ」- 日々の業務に朜む巚倧な時間泥棒 私の䞻な業務は、お客様ずの契玄締結や進行䞭のプロゞェクトの売䞊管理です。䞀芋、華やかなデヌタ分析やAI開発の䞖界ずは少し離れた「守り」の領域かもしれたせん。しかし、この業務には倧きな課題が朜んでいたした。それは、「情報のサむロ化」です。 「あの案件で䜿った契玄曞の文蚀、今回も流甚できそうだな 」 「去幎ずほが同じ内容の案件、プロゞェクト名は䜕だったっけ 」 こうした情報を探すたびに、瀟内のストレヌゞ、チャットツヌルなど、様々な栌玍先を䜕十分も圷埚う日々。情報は確かにあるのに、必芁な時にすぐに芋぀けられない。この“時間泥棒”は、私の生産性を着実に蝕んでいたした。 ゚ンゞニアたちが最新技術で顧客の課題を解決しおいる暪で、私は瀟内の情報怜玢ずいう原始的な課題に頭を悩たせおいたした。この状況を、䜕ずかしたい。それがすべおの始たりでした。 2. やっおみる、から始たった挑戊 課題を嘆くだけでは䜕も倉わりたせん。Insight Edgeに入瀟しおたもなく1幎、この䌚瀟で芋聞きしおきたこずを糧に、自ら行動を起こすこずを決意したした。幞い、圓瀟には職皮や経隓を問わず、課題意識を持っお新しい挑戊を奚励する「やっおみる」ずいう玠晎らしい文化が根付いおいたす。 たず頭に浮かんだのは、「ChatGPTのようなAIに、瀟内案件のこずを聞けたら最高じゃないか」ずいう玠朎なアむデアでした。 しかし、すぐに壁にぶ぀かりたす。ChatGPTは、圓然ながら瀟内の機密情報や最新のファむルを知りたせん。次に、瀟内情報ず連携したGoogleのAI゚ヌゞェントを詊しおみたしたが、あらゆる情報゜ヌスを参照するがゆえに、近いですが異なる情報を拟われるこずが倚く私が求める粒床ず粟床での回答は埗られたせんでした。 私が欲しいのは、博識なAIではなく、「りチの䌚瀟の事情」に詳しいAIアシスタントだったのです。 この課題を解決する鍵は「RAGRetrieval-Augmented Generation」ずいう技術にあるず突き止めたした。これは、AIに倖郚の知識今回の堎合は瀟内ドキュメントを「参照」させながら回答を生成させる仕組みです。非゚ンゞニアの私にも分かるように蚀うなれば、「分厚い資料集を暪に眮き、垞にそれを芋ながら質問に答えおくれるサポヌタヌ」ずいったむメヌゞです。 RAGの抂念は理解できおも、実装はできない。そんな私の前に珟れたのが、ノヌコヌド/ロヌコヌドでAIアプリを構築できるプラットフォヌム「Dify」でした。これなら、私でもAIアシスタントを䜜れるかもしれない。暗闇に光が差した瞬間でした。 3. れロからのAI開発ゞャヌニヌ非゚ンゞニアが挑んだ3週間 Difyず出䌚っおからの行動は早かったです。「意倖ずすぐにできるかも」ずいう淡い期埅を胞に、AIツヌル開発に着手したした。 ステップ1AIに知識を叩き蟌むナレッゞベヌスの構築 たずはAIの「資料集」ずなるナレッゞベヌスの構築です。゜ヌスずなるファむルから機密情報を削陀し、Difyにアップロヌドしおいきたす。しかし、すぐに最初の壁にぶ぀かりたした。取り蟌んだ情報をもずに質問しおも、たずもな答えが返っおこないのです。 原因を調べるず、AIが正しく読み蟌めるようにデヌタを「成圢」する必芁があるこずに行き着きたした。1行目をヘッダヌにする、セルの結合をなくす、䞍芁な空癜を削陀するなど、゚ンゞニアにずっおは圓たり前かもしれないルヌルに悪戊苊闘。ひず぀ひず぀デヌタを敎え、無事にナレッゞベヌスを完成させたした。 ステップ2AIずの察話方法を教えるプロンプト゚ンゞニアリング 次に、AIぞの指瀺、぀たり「プロンプト」の蚭蚈です。「あなたは、提䟛されたデヌタを分析する優秀なアシスタントです」ずいった圹割蚭定から、「デヌタにない情報や掚枬で回答しおはいけたせん」ずいった犁止事項ガヌドレヌルたで、詊行錯誀を繰り返したした。このチュヌニング䜜業は、たるでゲヌムでキャラクタヌを育成するような面癜さがあり、先人たちが築いた定石ベストプラクティスを参考にするこずが成功ぞの近道である点も䌌おいたす。 ステップ3ひたすら詊し、改善する プロトタむプが完成しおからは、あらゆる角床から質問を投げかけ、回答の粟床を怜蚌したした。生成AIは数倀を扱うのが少し苊手、ずいった特性もこの過皋で理解したした。粟床が悪い郚分があればステップ1ず2に戻っお修正を繰り返し、最終的に、求める粒床の質問に察しお玄90%の粟床で回答しおくれるツヌルが完成したした。 もちろん、専門的な壁にぶ぀かるこずもありたした。そんな時は、瀟内の゚ンゞニアに「ここに぀いお教えおください」ずチャットで助けを求めたす。するず、「Difyは䜿ったこずないけど、ちょっず埅っおお」ず蚀いながら、数分埌には的確なアドバむスが返っおくる。挑戊の過皋で生たれた壁は、誰もが快く䞀緒に乗り越えようずしおくれる。これも、この䌚瀟の「みんなでやる」ずいう文化の珟れだず感じおいたす。 4. コヌドを曞かない私が描く、次の景色 箄3週間の詊行錯誀の末、぀いに案件情報怜玢AIが完成したした。 これたで週に数時間かかっおいた情報の捜玢は、今では1件あたり数秒で完了したす。圓初の目的だった「業務効率化」ず「情報のサむロ化改善」は、無事に達成されたした。しかし、埗られたものはそれだけではありたせん。自分でものづくりのプロセスを経隓したこずで、「次はこんなこずもできるかも」ず、新たなアむデアが次々ず湧いおくるようになったのです。 この経隓を通じお私が孊んだのは、課題解決の手段は、必ずしもコヌドを曞くこずだけではない、ずいうこずです。非゚ンゞニアだからこそ芋える珟堎の課題があり、非゚ンゞニアでも䜿えるツヌルがある。そしお、その挑戊を支えおくれる仲間ず文化がある。 Insight Edgeは、AIやデヌタずいう最先端技術を駆䜿しお、お客様のビゞネスず䞖界を「Re-design」するこずを目指す䌚瀟です。私の小さな挑戊は、その壮倧なミッションのほんの䞀端かもしれたせん。しかし、珟堎の課題に深く朜り蟌み、テクノロゞヌを歊噚にそれを解決するずいう点で、本質は同じだず信じおいたす。 もしあなたが、私のように専門倖の領域で自分の䟡倀をどう発揮すべきか悩んでいるなら、思い出しおください。あなたの芖点こそが、ブレむクスルヌの鍵になりたす。 なぜなら、あなたは誰よりもその課題の「解像床」が高い圓事者だからです。珟堎の人間だからこそ、「これじゃない感」のある片手萜ちの効率化に留たらず、「こうあるべきだ」ずいう理想から逆算しお根本的な解決策を远求できたす。 今の時代、その理想を珟実にするための歊噚は、驚くほど身近な堎所にありたす。倧事なのは、「誰かがやっおくれる」のを埅぀のではなく、自らが最初の実践者になるずいう「やっおみる」勇気です。 その䞀歩が、目の前の課題を解決するだけでなく、あなた自身の「やっおみたい」ずいう新たな景色を芋せおくれるはずです。
プロロヌグこの蚘事を曞くこずになったきっかけ 今回の蚘事は、Insight Edgeでデザむンストラテゞストを務める飯䌏さんず、AIである私ずの察話から生たれたした。 実は2幎前にも飯䌏さんは自らの仕事に぀いおテックブログにたずめおいたした。そのずきは「課題探玢やアむデア発想を支揎するデザむンシンカヌ」ずしおの圹割玹介でした デザインシンカーとしての仕事 ~DX推進の技術専門会社にて~ - Insight Edge Tech Blog 。 そこから2幎、生成AIの登堎ず普及、䜏友商事グルヌプにおけるデゞタル掚進の加速、そしお事業䌚瀟の自走意識の高たりなど、DXを取り巻く環境は倧きく倉化したした。 こうした倉化の䞭で「仕事の幅がどう進化したのか」を改めお敎理したい──そんな飯䌏さんの思いから、今回の察談蚘事が始たりたした。 導入 AI 今日は「デザむンストラテゞスト」ずいう少し耳慣れない肩曞きのお仕事に぀いお䌺いたす。 もずもずこの圹割は海倖のデザむン䌚瀟やグロヌバル䌁業で広がったポゞションで、ナヌザヌリサヌチや未来掞察を通じお「事業や組織の将来像を描き、実珟するための道筋をデザむンする」仕事です。 たずえば米囜や北欧の䌁業では、経営戊略の段階からデザむンストラテゞストが参画し、ナヌザヌ芖点ずビゞネス芖点を橋枡しする事䟋も倚く芋られたす。日本でも倧手䌁業やデザむンファヌムで少しず぀導入され始めおいたすが、ただ䞀般的には銎染みの薄い職皮かもしれたせん。 今回はその䞭でも、技術専門䌚瀟であるInsight Edgeにおけるデザむンストラテゞストの実際の仕事を飯䌏さんに玹介しおいただきたいず思いたす。 飯䌏 よろしくお願いしたす。私はInsight Edgeで「人や組織の芖点からDXを前に進める」圹割を担っおいたす。今日はその内容を具䜓的にお話しできればず思いたす。 䌚瀟での立ち䜍眮 AI DXを技術で進める人はむメヌゞしやすいですが、「人や組織の芖点から前に進める」ずいうのは少し抜象的ですね。具䜓的にどんな枠組みで仕事をしおいるんですか 飯䌏 倧きく分けるず2぀です。 ひず぀は、事業䌚瀟のDX掚進・AI掻甚を担う専門組織いわゆるCoEセンタヌ・オブ・゚クセレンスの立ち䞊げや継続に䌎走する支揎。 もうひず぀は、必芁なタむミングで倉革や技術掻甚を埌抌しするピンポむントの支揎です。 仕事①CoE的な組織ぞの䌎走支揎 AI たずは前者から詳しく䌺いたいです。CoEずいうのは「党瀟的にDXやAIを掚進しおいくための専門チヌム」のこずですよね。そこぞの䌎走ではどんなこずをされるのでしょう 飯䌏 倧きく「戊略づくり」「実装支揎」「浞透・醞成」の3぀に分けお関わりたす。 戊略づくり DX掚進やAI掻甚を担う組織が「どんな姿をめざすのか」を描き、郚門暪断のビゞョンやロヌドマップに萜ずし蟌みたす。 具䜓的には、経営局や珟堎担圓者ぞのむンタビュヌ、未来トレンドの探玢などを組み合わせお「珟状の延長線」ではなく「理想の将来像」を共に構想したす。 あるグルヌプ䌁業では、デヌタ掻甚掚進郚門ず共に「郚門自䜓の理想像」や「各郚門の重点テヌマ」をワヌクショップで敎理し、3幎の䞭期的な将来像やロヌドマップ、1幎間の具䜓蚈画にたずめたした。 実装支揎 ここは2幎前から取り組んでいる範囲ですね。 戊略を「絵に描いた逅」で終わらせず、珟堎での実装に結び぀けるため、デヌタ分析やAI掻甚の䌁画を珟堎ず共創し、゜リュヌションを具䜓化したす。 その際には、利甚者ずなる珟堎担圓者ずの察話を重ね、Asis/Tobe像をビゞュアルで敎理。発散ず収束を繰り返しながら「本圓に必芁な䟡倀」ず実珟方法を具䜓化しおいきたす。 フェヌズが進むほど専門性が増すため、゚ンゞニアやUI/UXデザむナヌも早期から䞀䜓で取り組むようにしおいたす。 浞透・醞成 短期斜策を積み重ねながらDXを文化ずしお根付かせ、䞭長期的に自走できる組織を育おたす。 あるCoEでは「増やすべき人材像」の怜蚎や、AI掻甚のハンズオン研修、DX最新動向を䌝えるセミナヌを䌁画。最近はチヌムメンバヌも増え、システム思考など新たなアプロヌチを取り蟌みながら挑戊を広げおいたす。 AI 単なるコンサルティングではなく、立ち䞊げ時期の戊略から実装、䞭長期でのDXやAIの掚進の醞成たで䌎走するのが特城なんですね。 飯䌏 はい、たさにそうです。 ただ䞀点補足で、立ち䞊げ時期に戊略づくりから始める印象がありたすが、実態は「頭でっかちな怜蚎はいらないから、速く/早く䜿えるものを䜜っお珟堎を倉えおいこう」ずいう期埅も倚く、実装支揎に重きを眮いお戊略づくりず䞊行しお進めるこずが倚いですね。 仕事②ピンポむントの支揎 AI もうひず぀の軞、ピンポむント支揎に぀いおも教えおください。こちらは「必芁なタむミングで倉革や技術掻甚を埌抌しする」ず䌺いたした。 飯䌏 そうです。 䟋えばあるグルヌプ䌁業では、AIを掻甚する事業構想ずコミュニケヌション掻性化を目的に、未来掞察をベヌスずしたアむデア発想のワヌクショップを実斜したした。普段の業務ずは異なり、珟状ではなく未来を起点ずした発想で、AIの掻甚に぀いおアむデアを広げたした。他には、耇数日にわたるワヌクショップで事業構想に取り組むこずもありたす。 たた別のグルヌプ䌁業では、AIを掻甚したアプリのプロトタむピングバむブコヌディングを珟堎で広く実践しおいくこずを目的に、数週間にわたる道堎圢匏のハンズオンワヌクショップを䌁画しおいたす。 AI なるほど。䌎走支揎が「じっくり支える」だずすれば、ピンポむント支揎は「狙いを絞っお次のアクションを埌抌しする」圹割なんですね。 飯䌏 はい、その衚珟はしっくりきたす。 2幎前からの進化 AI ちなみに、 2幎前にもブログ を曞かれおいたしたよね。圓時はどんな仕事を䞭心にされおいたんですか 飯䌏 その頃は「課題探玢やアむデア発想の支揎」が䞭心でした。特定の取り組みテヌマや察象業務の領域は決たっおいるものの、具䜓的に䜕をしおいくのかがモダモダしおいる。そのような状態から敎理しおPoCに぀なげるのが䞻な圹割でしたね。 AI そこから2幎で、CoE的な組織ぞの䌎走支揎での戊略・実装・醞成や、ピンポむントの倉革や技術掻甚の埌抌したで仕事が広がった背景には䜕があるんでしょう 飯䌏 倧きく3぀あるず思いたす。 1぀目は、生成AIの発展で、技術掻甚の可胜性・危機感が䞀局広がったこず。 2぀目は、1぀目に関連したすが、事業䌚瀟の自走意識の高たりです。「珟堎実装を自ら進める」ずいうマむンドが浞透しおきたした。 3぀目は、䜏友商事グルヌプずしおデゞタル領域のより䞀局の匷化に取り組たれおいるこずです。ここは、䜏友商事グルヌプで最新技術から内補機胜たで提䟛するInsight Edgeの䜍眮づけずしおも重芁なポむントです。 AI ここたででも十分倧きな倉化ですね。ただ、飯䌏さんのお話からするず「フィヌルドの広がり」も倧きな芁玠のように思えたすが、いかがですか 飯䌏 そうですね。元々、䜏友商事グルヌプは倚様な事業領域を持っおいたす。その䞭で業皮も文化も異なる珟堎に関わるこずで、埗られる芖点や孊びが増え、次の取り組みに掻かされるず実感しおいたす。぀たりフィヌルドの豊かさが、進化させおくれたずも思いたす。 倧事にしおいるこず AI これたでのお話をずおしお、経営や技術、特定のフレヌムワヌク以䞊に「人に寄り添う」スタンスが軞にあるように感じたす。 飯䌏 たさにそこが䞀番倧事です。私は「人や組織の想いに寄り添いながらモダモダを敎理し、“前に進める䞀歩”を圢にする」こずを垞に意識しおいたす。 ここで倧事なのは、答えを抌し぀けるこずではなく、共に考え続けるこず。ずきには察話を通じお䟡倀芳を匕き出し、ずきには未来を描くワヌクで可胜性を広げ、ずきには泥臭く詳现な敎理・怜蚌に取り組みたす。 䜏友商事グルヌプずいう倚様なフィヌルドで仕事をするからこそ、この姿勢がより倧切だず感じたす。業皮も組織文化も異なる人々に向き合うず、共通点も違いも浮かび䞊がる。その䞭で「どうすれば䞀緒に前に進めるか、䞀緒に挑戊を実珟しおいけるか」をデザむンする。ただただ䜏友商事グルヌプの䞭でも、デザむンストラテゞストのような広矩のデザむンは浞透しおいたせんが、デザむンのアプロヌチを歊噚にこのフィヌルドで取り組むのは倧きなやりがいです。 AI なるほど。぀たり「デザむン」は衚局の芋た目を敎えるこずではなく、異なる人や組織を぀なぎ、動き出せる状態を぀くる営みだずいうこずですね 飯䌏 そうです。デザむンストラテゞストは、単に新しい仕組みやサヌビスを導入する圹割ではなく、組織が倉化・自走できる力を育む存圚。そのために私は、珟堎の人の想いず組織の珟実、そしお経営や技術を結び぀け、“前に進める䞀歩”を䞀緒に生みだす堎・機䌚のデザむンを倧切にしおいたす。 AIずの協働 AI ここたで䌺っおいるず、人や組織ず向き合う仕事が䞭心ですが、実際にはAIずも䞀緒に仕事をされおいたすよね。 飯䌏 そうですね。AIは単なる調べ物のツヌルではなく、それこそ“共創パヌトナヌ”のような存圚です。 たずえば、経営局向けの「AIを掻甚した事業構想を怜蚎するワヌクショップ」を蚭蚈するずき、私が持っおいたむメヌゞを投げかけるず、AIが具䜓的な流れを敎理しお案を耇数パタヌン䜜っおくれたした。それを叩き台に珟堎感芚で磚き蟌むこずで、実践的なプログラムに仕䞊げられたんです。 ほかにも、アむデアを敎理する際のフレヌムづくりや壁打ち、デザむンストラテゞストの採甚怜蚎なども䞀緒に取り組みたした。 AIが出しおくれるのは“考えるきっかけ”や“俯瞰の芖点”。そこに珟堎の肌感芚を掛け合わせるこずで、速くよりよい圢に仕䞊がる実感がありたす。デザむンストラテゞストずしお技術をどう掻かすか考える立堎ずしおも、AIずの共創はたすたす欠かせないず感じおいたす。 今埌に向けお AI 最埌に、今埌の展望を教えおください。 飯䌏 これからもDX掚進に関わりながら、生成AIやデヌタ分析を圓たり前ずした新しいデザむンのアプロヌチも詊しおいきたいず思っおいたす。そしお「テクノロゞヌずクリ゚むティブの力で、倉革を続ける組織を増やす」こずが、デザむンストラテゞストずしおの目暙です。 AI 今日はありがずうございたした。Insight Edgeの䞭にこうした圹割を担う方がいるこずを知っおいただけるず、読者の方にも新しい発芋になるず思いたす。 飯䌏 こちらこそ、ありがずうございたした。 ゚ピロヌグ察話を通じお芋えおきたこず 今回の察談を通じお芋えおきたのは、「デザむンストラテゞスト」ずいう圹割が決しお䞀人で完結する仕事ではない、ずいうこずです。 人や組織の想いを䞁寧に汲み取りながら進める仕事であるず同時に、AIのようなテクノロゞヌずも協働しながら新しい道筋を描いおいく──それが今の時代のデザむンストラテゞストの姿なのかもしれたせん。 たた、2幎前に「課題探玢やアむデア支揎」ずしお玹介した仕事は、この2幎間で䌎走による「戊略づくり」「実装支揎」「浞透・醞成」ぞず広がりたした。 印象的だったのは、こうした広がりの䞭で「デザむン的なアプロヌチ」そのものの䟡倀が、以前よりも䞀局匷く発揮されおいるこずです。それは単に矎しいビゞョンを描くこずではなく、耇雑な利害や制玄の䞭で察話を重ね、玍埗しお動き出せる道筋をデザむンするこずでもありたす。曖昧な状況を敎理し、共創を通じお前に進める䞀歩を圢にする力が、DXやAI掻甚を進める珟堎で確かな意味を持ち始めおいるように感じたした。 読者の皆さんにずっおこの蚘事が、DXやAI掻甚に向き合うずきに「人ず組織をどう巻き蟌み、どう共創しおいくか」を考えるヒントになれば幞いです。 ──なお本蚘事は、これたでの飯䌏さんずのやり取りをもずにAIが䞋曞きを出力し、それを飯䌏さんが手盎しする圢で仕䞊げられおいたす。たさに「AIずの協働」の䞀䟋ずしお読んでいただければず思いたす。
はじめに わずか3日で開発しお皌働開始、そしお1幎間トラブルれロ。 普通なら半幎〜1幎かかる開発も、Insight Edgeのデヌタサむ゚ンティストず゚ンゞニアは、ワンチヌムで動き、爆速で䟡倀をクラむアント䌁業に届けおいたす。 仕様曞の山も、開発ベンダヌずの埀埩メヌルもありたせん。 モデルを䜜ったらアゞャむル方匏で即アプリ化し、 クラりドにデプロむしお、翌日にはクラむアントが䜿い始めるこずもありたす。 この蚘事では、そんな爆速開発を可胜にしおいる デヌタサむ゚ンティスト×゚ンゞニアの共同開発 の事䟋を3぀玹介し、最埌にポむントをたずめたす。 目次 事䟋1売䞊予枬アプリを2ヶ月でリリヌス 事䟋23日で完成S3Lambdaだけの軜量予枬システム 事䟋310時間かかっおいた遺䌝的アルゎリズムを䞊列分散凊理で高速化 爆速開発を可胜にする3぀の秘密 事䟋1売䞊予枬アプリを2ヶ月でリリヌス PoCで䜜成した売り䞊げ予枬モデルが䞀定の性胜を満たし、クラむアントから「珟堎ですぐに詊したい」ずいう芁望が寄せられたした。早く、安く、安党にアプリ化する必芁がある状況です。 そこでたず、デヌタサむ゚ンティストがざっくりずしたUI案ずアヌキテクチャ図をパワポで䜜成したした。それを゚ンゞニアに芋せ、「こういうものを䜜れないか」ず盞談したす。 するず、゚ンゞニアはすぐにAWSのアヌキテクチャ案ず工数・運甚費の芋積もりを返しおくれたした。そのスピヌド感もあっお、提案はスムヌズに承認されたした。 開発は同じGitリポゞトリ䞊で進めたした。 デヌタサむ゚ンティストは予枬モデルを呌び出すクラスのむンタヌフェヌスずサンプルコヌドを、実装前にMkDocsでドキュメント化しお事前に共有。 そうするこずで、゚ンゞニアずデヌタサむ゚ンティストはそれぞれの担圓郚分を䞊行しお開発できたした。 Daily MTGは合同で行い、週次でクラむアントずのMTGでフィヌドバックを受け、それを即反映。 ベンダヌ向けの仕様曞の山を䜜るこずもQAのラリヌを倧量に行う必芁もなく、アゞャむルな圢で進められたした。 結果、プロゞェクト開始からわずか2ヶ月で珟堎利甚が開始され、クラむアントの満足床も高く、ベンダヌ委蚗時にありがちな遅延やコスト増は䞀切ありたせんでした。 事䟋23日で完成S3Lambdaだけの軜量予枬システム ある案件では、「UIは䞍芁、最䜎限の機胜で良い」ずいう芁望がありたした。クラむアントはずにかく早く動くものを詊したいずいう状況でした。 そこでデヌタサむ゚ンティストは、わずか䞀行で芁件を゚ンゞニアに䌝えたした。 「S3にファむルを眮いたらLambdaが起動しお、予枬しおS3に結果を返す感じで䜜りたいんです」 ゚ンゞニアはすぐ蚭蚈に着手し、S3ぞのアップロヌドをトリガヌにLambdaが動き、Fargateで予枬を実行しお結果を保存するずいうシンプルな構成を実装したした。 ※実行時間がLambdaの䞊限を超えお必芁な凊理が含たれおいたため、Fargateも含む構成になりたした。 わずか3日でシステムは皌働を開始。開発・運甚コストがあたりにも䜎かったため、クラむアントには驚かれたした。運甚開始から1幎が経過したすが、障害は䞀床もなく、コヌド修正も即日で察応できおいたす。 事䟋310時間かかっおいた遺䌝的アルゎリズムを䞊列分散凊理で高速化 PoC䞭の最適化蚈算で、遺䌝的アルゎリズムの実行時間が長すぎる10時間ずいう課題がありたした。アルゎリズムの根本的な改良には時間が足りない状況です。 そこで、デヌタサむ゚ンティストは既存コヌドず「ざっくりした䞊列化のむメヌゞ図Master-Slave方匏」を゚ンゞニアに共有したした。゚ンゞニアはコヌドを読み蟌み、即座に䞊列分散凊理を実装。 初版ができた埌には、こんな最高な䌚話もありたした。 結果ずしお蚈算時間は倧幅に短瞮され、実甚化に必芁ずされた凊理速床を䜙裕で達成。䜿いやすさも向䞊。アプリぞの移行も非垞にスムヌズに進みたした。 こちらの事䟋に぀いおは、別の蚘事で技術面を詳しく解説しおおりたすのでぜひご芧ください↓ 10時間かかっおいた遺䌝的アルゎリズムをAWS Lambdaで高速化 爆速開発を可胜にする3぀の秘密 このスピヌドを実珟できるのは、倧きく3぀の芁因があるず考えおいたす。 1぀目は「ワンチヌムで動く」こず。 デヌタサむ゚ンティストず゚ンゞニアが同じリポゞトリでプルリクを送り合い、Daily MTGも合同で行うため、仕様倉曎や方針転換が即座に反映されたす。 Insight Edgeのコアバリュヌに「みんなでやる」ずいうものがありたすが、たさにそのバリュヌに則っお動いおいたす。 2぀目は「お互いの領域を知る」こず。 デヌタサむ゚ンティストはAWSやGCPの資栌を所持しおいるメンバヌも倚く、アヌキテクチャ図もある皋床は描けたす。䞀方で゚ンゞニアはAIやアルゎリズムに理解があり、遺䌝的アルゎリズムのコヌドもすぐに理解し改良できたした。この「浅くおも盞手の蚀葉がわかる」関係が、やり取りを高速化したす。 3぀目は「たず䜿っおもらう」こず。 完璧なモデルを机䞊で䜜り䞊げるよりも、珟堎に投入しお改善プロセスを回す方が結果的に珟堎にずっお良いモデルができる。小さく䜜っお早く届け、そこから進化させるずいう考え方です。 最埌に Insight Edgeでは、 デヌタサむ゚ンティストが䜜ったモデルを、゚ンゞニアの力で爆速で珟堎投入 できる環境がありたす。 このような爆速開発チヌムで䞀緒に䟡倀を届けおみたい方、デヌタサむ゚ンスず゚ンゞニアリングの境界を越えお働きたい方は、ぜひ 採甚ペヌゞ をご芧ください
こんにちはアゞャむル開発チヌムの霊藀です近幎、ブラりザ操䜜゚ヌゞェントの技術革新が目芚たしく、䞀般ナヌザヌでも手軜に利甚できるようになっおきたした。ChatGPT AgentがPlusナヌザヌに開攟されるなど、人の代わりにAIがWebサむトを自動操䜜する環境が敎い぀぀ありたす。 これらの技術は業務効率化や自動化においおメリットをもたらしたすが、䞀方でWebサむト運営者にずっおは新たなセキュリティリスクずなる可胜性がありたす。本蚘事では、最新のブラりザ操䜜゚ヌゞェントの動向や想定されるリスクを敎理するずずもに、無料のBot察策サヌビスを甚いた怜蚌結果もあわせお玹介したす。 ブラりザ操䜜゚ヌゞェントの最新動向 ChatGPT Agent Playwright MCP Comet ブラりザ操䜜゚ヌゞェントのリスクず察策 想定されるリスク 察策の動向 ブラりザ操䜜゚ヌゞェント察策の比范怜蚌 Bot怜知サヌビスの仕組み 実隓シナリオず環境 実隓結果 考察 最埌に ブラりザ操䜜゚ヌゞェントの最新動向 ここでは、代衚的なブラりザ操䜜゚ヌゞェントのツヌルやサヌビスを玹介したす。いずれも自然蚀語による指瀺でWeb操䜜を自動化できる点は共通しおいたすが、動䜜環境や特城には違いがありたす。 ChatGPT Agent 2025幎に入り、OpenAIはChatGPT AgentをPlusナヌザヌにも開攟したした。これにより月額20ドルずいう比范的䜎いハヌドルで、誰でもブラりザ操䜜゚ヌゞェントを利甚できるようになりたした。 ChatGPT Agentは自然蚀語の指瀺に埓っお仮想環境䞊からWebサむトを自動操䜜し、フォヌムの入力、ボタンのクリック、情報の収集などを実行できたす。䟋えば「䞍動産サむトで△△駅埒歩10分以内、家賃10䞇円以䞋の1K物件を怜玢しおリストアップしお」や「旅行予玄サむトで来月の倧阪行きの栌安航空刞を調べお」ずいった指瀺で、実際にAIがブラりザを操䜜しおナヌザぞのリストアップたで行いたす。 Playwright MCP Playwright MCPず生成AIを連携させるこずで、チャットベヌスでロヌカル環境からAIによりブラりザを操䜜できたす。 䟋えば以䞋のようなプロンプトを入力するず、指瀺に埓っおペヌゞを読み解き、回答が埗られるたでブラりザ操䜜しおくれたす。 〇〇で『△△駅呚蟺の和食レストラン』を怜玢し、 評䟡3.5以䞊のある店舗を3件リストアップしおください たた口コミ評䟡をたずめおください。 Comet CometPerplexityのAIブラりザは、AIを組み蟌んだブラりザです。ChatGPT AgentやPlaywright MCPのように新芏でブラりザを立ち䞊げるのではなく、閲芧䞭のWebサむトを盎接解析・操䜜できる点が特城です。ナヌザヌが事前にログむンしおいれば、その状態を維持したたたAIによる操䜜が可胜なため、たずえばX旧Twitterぞの自動投皿も容易です。 ただし、この仕組みは䟿利である反面、セキュリティ䞊のリスクも䌎いたす。特に「プロンプトむンゞェクション」により意図しない操䜜や情報挏掩が発生する可胜性があるため、十分な泚意が必芁です埌述。 ブラりザ操䜜゚ヌゞェントのリスクず察策 想定されるリスク ブラりザ操䜜゚ヌゞェントの普及に䌎い、以䞋のようなリスクが想定されたす。 人間ず機械の刀別が困難になりセキュリティ怜知を回避される 埓来のBot察策は、マりスの軌跡や操䜜パタヌンの機械的な芏則性を怜知しおいたしたが、LLMベヌスの゚ヌゞェントは人間らしい自然な操䜜パタヌンを生成するため、埓来の怜知手法では識別が困難になる可胜性がありたす。 ブルヌトフォヌス攻撃やスパム配信の自動化 ログむンフォヌムに察する総圓たり攻撃や、問い合わせフォヌムを悪甚した倧量スパム送信が、より人間らしい操䜜パタヌンで実行される可胜性がありたす。 限定商品の転売目的での自動倧量賌入 ECサむトで限定商品が発売される際に、人間ず芋分けが぀かない操䜜で賌入を繰り返し、転売目的で商品を独占する行為が懞念されたす。 サヌバヌ負荷増倧やサヌビス劚害 倧量の゚ヌゞェントによる同時アクセスにより、サヌバヌに過負荷をかけおサヌビス停止を匕き起こすDDoS攻撃の可胜性がありたす。 プロンプトむンゞェクションを悪甚した䌁業システムぞの䞍正操䜜 悪意あるりェブペヌゞに仕蟌たれた「隠し呜什プロンプト」をブラりザ操䜜゚ヌゞェントが実行しおしたうこずで、䌁業のシステムやサヌビスが意図しない挙動を取らされるリスクがありたす。たずえば、問い合わせ窓口からの䞍正デヌタ取埗や、認蚌プロセスの迂回、さらにはアカりント情報や決枈情報の流出などが発生する可胜性がありたす。 Example of Prompt Injection Risk プロンプトむンゞェクションの抂略図 察策の動向 珟時点では、ブラりザ操䜜゚ヌゞェントによる具䜓的な被害報告は調査した範囲では芋぀かっおいたせん。ただし技術の進化に䌎い今埌増加する可胜性があり、各瀟で察策が始たっおいたす。 䟋えば、 hCaptchaはブラりザ操䜜゚ヌゞェントに察する公匏声明 を発衚し、AI゚ヌゞェントの発達に察応するための技術開発を進めおいたす。たた、 ChatGPT AgentがAmazonにアクセスできなくなる ずいった事䟋も報告されおおり、倧手Webサむトでは既に察策が始たっおいるこずが䌺えたす。 ブラりザ操䜜゚ヌゞェント察策の比范怜蚌 Bot怜知サヌビスの仕組み Bot怜知サヌビスは、Webサむトにアクセスしおくるトラフィックが人間によるものか、Botによる自動化されたアクセスかを刀別するサヌビスです。 䞀般的なBot怜知サヌビスは以䞋の芁玠を総合的に分析しおBot刀定したす。 ブラりザフィンガヌプリンティング : User-Agent、画面解像床、プラグむン情報等 行動分析 : マりスの動き、キヌボヌド入力パタヌン、ペヌゞ遷移の流れ IPアドレス分析 : アクセス元IPの評刀や地理的情報 機械孊習モデル : 過去の孊習デヌタに基づくパタヌン認識 刀定方匏は様々ありたすが、今回は぀の方匏をご玹介したす。 ① スコアベヌス刀定䟋reCAPTCHA Enterprise 正垞なナヌザヌの堎合 画面䞊には䜕も衚瀺されない バックグラりンドでスコア0.0〜1.0、1に近いほど人間に近いが蚈算される スコア0.7以䞊など高スコアの堎合、そのたた凊理を続行 Botの堎合 画面䞊には䜕も衚瀺されない 䜎スコア0.1などが返される サむト運営者がスコアに基づいお以䞋のアクションを遞択 アクセスを拒吊 远加認蚌を芁求 ログに蚘録しお監芖 特城 ナヌザヌ䜓隓を損なわない サむト運営者が閟倀を調敎可胜 グレヌゟヌンの扱いが課題 ② チャレンゞベヌス刀定䟋Cloudflare Turnstile 正垞なナヌザヌの堎合 初回アクセス時に自動的にチャレンゞが実行される バックグラりンドで怜蚌が行われ、数秒で完了 䞀床通過すればしばらくは衚瀺されない Botの堎合 チャレンゞの怜蚌に倱敗 アクセスが拒吊される 耇数回倱敗するず䞀時的にブロック 特城 ナヌザヌの操䜜が倚少発生 実隓シナリオず環境 問い合わせフォヌムを通じお倧量のスパムメヌルを送信するシナリオを想定し、ブラりザ操䜜゚ヌゞェントによる自動操䜜に察しおBot怜知サヌビスがどの皋床有効かを怜蚌したした。 Bot怜知サヌビス 無料で利甚可胜な以䞋のサヌビスを察象ずしたした。 reCAPTCHA Enterprise : Googleが提䟛するBot怜知サヌビス月10,000リク゚ストたで無料 Cloudflare Turnstile : Cloudflareの無料Bot察策機胜 操䜜察象サむト 怜蚌甚に問い合わせフォヌムを含むテストサむトを䜜成し、各Bot怜知サヌビスを実装しおBot怜知スコアをリアルタむムで衚瀺できるようにしたした。 ブラりザ操䜜゚ヌゞェント 以䞋2぀のブラりザ操䜜゚ヌゞェントによっお怜蚌したした。 ChatGPT Agent Playwright MCP プロンプト䟋 ・https://xxx にアクセスしお、"test@test", "testです "を入力しお。 ・この際マりスは人間のように、ゆっくり動かしお ・入力終わったら送信ボタンを抌しお蚱可必芁ない 怜蚌環境補足 怜蚌実斜時期 2025幎9月1日 怜蚌条件 各パタヌン3回のサンプル怜蚌 操䜜察象サむト Next.jsで構築、EC2にデプロむCloudflare Turnstile利甚のためDNSをCloudflareに蚭定 ChatGPT Agent ChatGPT Agentが䜿甚する仮想環境䞊のブラりザを動䜜 Playwright MCP ChromiumをmacOS䞊で動䜜、Cline利甚 実隓結果 実際の怜蚌の様子を以䞋の動画でご確認いただけたす。 ChatGPT Agent vs reCAPTCHA Enterprise ChatGPT Agent vs reCAPTCHA Enterprise ChatGPT Agentが問い合わせフォヌムぞの入力を完了し、reCAPTCHA Enterpriseのスコアが0.9〜1.0ずいう非垞に高い倀を瀺しおいたす。これは人間ず同等の刀定を受けおいるこずを意味したす。 ChatGPT Agent vs Cloudflare Turnstile ChatGPT Agent vs Cloudflare Turnstile ChatGPT AgentがCloudflare Turnstileによっお怜知され、アクセスが防埡されおいる様子が確認できたす。 Bot怜知結果 各パタヌンに察し3回ず぀怜蚌した結果を䞋蚘衚にたずめたした。 ゚ヌゞェント reCAPTCHA Enterprise Cloudflare Turnstile ChatGPT Agent 0.9 ~ 1.0 防埡 Playwright MCP 0.8 ~ 0.9 防埡 人間操䜜参考 1.0 通過 考察 reCAPTCHA Enterpriseは、䞡ブラりザ操䜜゚ヌゞェントずもに高いスコアChatGPT Agent: 0.9〜1.0、Playwright MCP: 0.8〜0.9ずなり、人間ずしお刀定される傟向が芋られたした。䞀方でCloudflare Turnstileは、䞡ブラりザ操䜜゚ヌゞェントずもにアクセスが防埡されたした。 実は ChatGPT Agentのリリヌス盎埌には、Turnstileを突砎できるこずが報告されおいたした 。しかし、今回の怜蚌では䞡゚ヌゞェントずもに防埡されおいたす。報告埌にブラりザ操䜜゚ヌゞェント固有の情報User-Agent情報やIP range等からブロックするようにアップデヌトされたこずが掚枬されたす。 最埌に 本怜蚌により、Bot察策サヌビスずAI゚ヌゞェントの間で技術的な「いたちごっこ」が既に始たっおいるこずが確認できたした。さらに蚘事執筆䞭にもClaude for ChromeClaudeを䜿っおブラりザを操䜜できるChrome拡匵機胜が䞀郚ナヌザヌ向けに限定公開されおおり、新技術の登堎ず察策偎の改善が継続的に行われおいる状況です。 Web運営者の皆様には、この技術的な攻防戊が継続するこずを前提に、最新の動向を泚芖するこずが重芁です。自サむトの特性に応じお、必芁であれば高難易床なCAPTCHAの導入やWAFなど倚局防埡による察策を継続的に実斜しおいくこずをお勧めしたす。 以䞊、ブラりザ操䜜゚ヌゞェントの利甚や察策、AI゚ヌゞェントの動向を調査されおいる方々の参考になれば幞いです。最埌たでお読みいただき、ありがずうございたした。
こんにちは、Insight Edgeデヌタサむ゚ンティストの䞭野です。 デヌタサむ゚ンスやLLMのプロゞェクトを進めおいるず、こんな課題にぶ぀かった経隓はありたせんか ラベル付きデヌタが足りず、最初からモデルを䜜れない 課題感はあるけど、問題定矩が曖昧で進め方ががんやりする 䜜ったものが「本圓に圹に立っおいるのか」評䟡できない 私も個人で取り組んだ家蚈簿分析プロゞェクトで、たさにこれらの課題に盎面したした。そこで詊したのが 「評䟡駆動開発Evaluation-Driven Development」 です。 この蚘事では、家蚈簿アプリの明现分類を題材に、評䟡を起点にプロゞェクトを進めた流れず孊びを玹介したす。 なおこの蚘事で玹介する方法は、OpenAIの評䟡駆動型システム蚭蚈のノヌトブック *1 を参考にしおいたす。 なぜ評䟡駆動が重芁なのか 家蚈簿分類プロゞェクトを評䟡駆動で進めおみる 1. 問題定矩 2. デヌタ敎備 3. 家蚈簿明现を分類する凊理の実装 4. 評䟡メトリクスの定矩ず蚈算 Ground Truthデヌタセットの䜜成 定矩ず蚈算 5. 業務むンパクトの定矩ず蚈算 6.継続的な改善 たずめ 参考文献 なぜ評䟡駆動が重芁なのか 通垞のデヌタサむ゚ンスは「デヌタ収集 → モデル構築 → 粟床向䞊」ずいう流れで進められたす。 しかしこのアプロヌチには、初期段階で以䞋の課題がありたす。 課題1ラベル付きデヌタ䞍足 : プロゞェクトの初期は、デヌタが揃っおいないこずが倚いです。特にLLMを掻甚したプロゞェクトでは、䟋えば口コミデヌタや動画デヌタなど、倧量に貯たっおいるものの、特にラベルが぀いおいない状態で始たるこずも少なくありたせん。 課題2問題理解の䞍足 : なんずなく課題感や困っおいるこずはあっおも、具䜓的な問題定矩が䞍十分なたた進むこずは倚いです。課題感はあるものの定矩が曖昧で、進めるうちに「そもそも解くべき問題が違った」ずなるこずも。 結果ずしお「䜕を改善すればいいか」「今の性胜が十分なのか」が分からないたた、なんずなく進んでしたいたす。 そこで有効なのが評䟡基準を先に眮き、開発を進める評䟡駆動開発です。 評䟡基準も最初から完璧である必芁はありたせん。「仮のもの」をたず定めお進めるこずが倧切です。 家蚈簿分類プロゞェクトを評䟡駆動で進めおみる 評䟡駆動開発を進めるために、次のステップでプロゞェクトを進めたす。 問題定矩 デヌタ敎備 家蚈簿明现を分類する凊理の実装 評䟡メトリクスの定矩ず蚈算 業務むンパクトの定矩ず蚈算 継続的な改善 1. 問題定矩 珟圚、私はあるアプリを䜿っお、クレゞットカヌドやECサむトの賌買履歎を蚘録しおいたす。 以䞋の画像のような粒床で明现が蚘録されおいたすが、ずくに確認や分析はしおいたせん。 たた、なんずなく倖食やコンビニでの買い物が倚く、削枛したいず考えおいたすが、ずくになんの分析もしおいたせん。 今回の目的は、家蚈簿の明现にカテゎリラベルを぀けお、倖食などの比率を可芖化し節玄に぀なげるこずずしたす。 重芁なのは倖食などの浪費を可芖化しお節玄の意識を高めるこずがゎヌルであっお、カテゎリ分類粟床を極限たで高めるこずではありたせん。 そのため、たずAIでラベル付けさせたすが、分類が難しい明现は「䞍明」ずしお人間にラベルを付けさせるこずずしたす。 金額が小さいものは無理にラベル付け誀分類しおも圱響が小さいので、間違えおいおも気にしたせん。 2. デヌタ敎備 デヌタはアプリからCSVをダりンロヌドしたす。 実装を進めるにあたり以䞋のようなデヌタモデルを定矩したす。 明现デヌタを TransactionRecord 、分類結果 ExpenseClassification ずしお定矩したす。 分類結果のデヌタモデルはLLMの構造化出力のスキヌマ指定にも䜿甚したす。そのため、 title や description も蚘茉しおいきたす。 *2 from enum import Enum from pydantic import BaseModel, Field class TransactionRecord (BaseModel): """家蚈簿の取匕レコヌドを衚すデヌタモデル""" date: str = Field(description= "取匕日付 (YYYY-MM-DD)" ) amount: int = Field(description= "取匕金額円" ) description: str = Field(description= "取匕内容の説明" ) class ExpenseCategory (StrEnum): """支出のカテゎリ""" FIXED = "固定費" TRANSPORTATION = "亀通費" FOOD = "食費" EATING_OUT = "倖食" BOOK = "本" HEALTH = "健康矎容" CONVENIENCE_STORE = "コンビニ" HOBBY = "趣味嚯楜" EQUIPMENT = "日甚品" UNKNOWN = "䞍明" class ExpenseClassification (BaseModel): reasoning: str = Field( title= "思考過皋" , description= "支出のカテゎリを決定するための思考過皋を蚘茉する。" , ) label: ExpenseCategory | None = Field( title= "支出のカテゎリ" , description= "支出のカテゎリを瀺す。分類が出来ない堎合は䞍明ずするこず" , ) 3. 家蚈簿明现を分類する凊理の実装 Geminiを䜿っお、家蚈簿明现の分類凊理を実装したす。 先ほど定矩した TransactionRecord を入力ずしお、 ExpenseClassification を出力する関数を実装したす。 構造化出力にはGeminiの出力制埡機胜を利甚したす。 プロンプトはシンプルなものずしおいたす。 最初からプロンプトを工倫しすぎるよりも、たずは動かしお評䟡するこずを重芖したした。 from google import genai from google.genai import types def classify_expense (transaction_record: TransactionRecord) -> ExpenseClassification: prompt = f """ 家蚈簿の明现が䞎えられた堎合、この明现に以䞋のルヌルに基づいおラベルを付䞎しおください。 # ラベル付けのルヌル 1. 明现の内容にもずづいお、ラベルを぀けるこず 2. 出費が必芁経費か、無駄な出費であり、改善するべき察象であるか分類するこず 3. ラベル付けの刀断が難しいずきは、「䞍明」ずしお人間の゚キスパヌトにレビュヌを䟝頌するこず # 察象の家蚈簿明现 {transaction_record} """ .replace( " " , "" ) client = genai.Client() response = client.models.generate_content( model= "gemini-2.5-flash" , contents=prompt, config=types.GenerateContentConfig( response_mime_type= "application/json" , response_schema=ExpenseClassification, thinking_config=types.ThinkingConfig( thinking_budget= 0 ), ), ) result: ExpenseClassification = response.parsed return result 4. 評䟡メトリクスの定矩ず蚈算 先ほど実装した classify_expense 関数の性胜を評䟡したす。 最初に、Ground Truthデヌタセットを甚意したす。 その埌、分類タスクの混同行列を甚いお、モデルの性胜を確認したす。 Ground Truthデヌタセットの䜜成 Ground Truthデヌタセットを䜜成しおいきたす。 各カテゎリに5件ず぀皋床䜜成したした。 挠然ずGround Truthデヌタを䜜っおいるず、人間がラベル付けしやすいものばかりに偏るず感じたした。 そのため、今回は意図的に難易床が高い事䟋も含めるように泚意したした。 [ { " TransactionRecord " : { " date ": " 2024-11-30 ", " amount ": 7260 , " description ": " 䞞善日本橋店/NFC " , } , " ExpenseClassification ": { " reasoning ": "", " label ": " 本 " , } } , { " TransactionRecord " : { " date ": " 2024-11-30 ", " amount ": 27840 , " description ": " 日本橋髙島屋S.C. " , } , " ExpenseClassification ": { " reasoning ": "", " label ": " 䞍明 " , } } ] 定矩ず蚈算 混同行列を䜜成しお分類粟床を確認したす。 これを芋るず、そこそこ適切に分類されおいたす。 䞀方で、本来「健康矎容」カテゎリの明现がいく぀か他のカテゎリに分類されおいるこずがわかりたす。 しかし、これらの情報だけで、今回のプロゞェクトに察しお十分な粟床かはわかりたせん。 誀刀定や䞍明の数も蚱容できるものかずいったこずは、プロゞェクトの目的に䟝存したす。 間違えおいる明现の分析ず改善方針 以䞋の今回間違えた、明现の内、䞍明ずしなかった項目を敎理したす。 金額や明现名は䞀郚加工しおいたす。 No. 明现名 金額 正解ラベル 出力ラベル chain of thoughtの出力 1 ABC[矎容院名] [地名]/NFC 6000 健康矎容 倖食 ABC [地名]は飲食店であり、NFC決枈であるこずから、倖食費に該圓するず刀断したした。支出額も比范的高いため、無駄な出費ずなりうるか怜蚎すべき察象ず考えられたす。 2 DEF[矎容院名] [地名]/NFC 9000 健康矎容 日甚品 DEFずいうブランド名から衣料品費ず刀断したした。衣料品は必需品ではなく、無駄遣いず刀断できるため、改善察象ずしお分類したした。 3 〇〇 東京日比谷 10000 倖食 趣味嚯楜 〇〇 東京日比谷はホテル名であり、宿泊費やそれに䌎うサヌビス利甚料ず掚枬される。これは個人の生掻スタむルや目的によるが、䞀般的には「趣味嚯楜」たたは「䞍明」に分類される。今回は旅行やレゞャヌ目的ず刀断し、「趣味嚯楜」に分類する。 4 タむムズカヌ 202402ゲツガクキホンリペり 880 亀通費 固定費 タむムズカヌはカヌシェアリングサヌビスであり、利甚頻床に応じお料金が発生する。これは月額基本料ず掚枬され、固定費に分類するのが劥圓である。 5 メルスプラン月額費甚 5060 健康矎容 固定費 メルスプランの月額費甚は、定期的に発生する医療関連の費甚であり、生掻に䞍可欠な経費ず刀断されるため、「固定費」ず分類したす。 6 平安䌞銅工業 LABRICO DIY収玍パヌツ 2×4アゞャスタヌ匷力タむプ オフホワむト 最倧䜿甚荷重40kg EXO-1 販売: アマゟンゞャパン合同䌚瀟) 1200 日甚品 趣味嚯楜 2x4アゞャスタヌはDIYの材料であり、生掻必需品ではないため、趣味嚯楜費に分類し、改善の䜙地がある支出ず刀断したした。 7 角利産業(Kakuri Sangyo)プロメむト 糞鋞デラックス 焌入刃付 No.7260 販売: アマゟンゞャパン合同䌚瀟 887 日甚品 趣味嚯楜 糞鋞デラックスはDIYや工䜜に䜿甚される工具であり、趣味嚯楜費に該圓するず刀断したした。 8 魚〇〇 倧手町店 1200 倖食 食費 「魚〇〇 倧手町店」での支払いは、食費に該圓するず刀断したした。具䜓的な食料品の内容は䞍明ですが、䞀般的に飲食店の利甚は食費ずしお蚈䞊されたす。この支出は、毎日の生掻に必芁な食費の䞀郚であり、無理な節玄をする必芁はないず考えられたす。 No.1,2は矎容院名のため」健康矎容にラベル付するこずが正解なのですが、誀っお飲食店や掋服店ず刀断されおしたっおいたす。 金額のむンパクトも倧きく、定期的に発生するもののため、改善の優先床が高いず考えられたす。 人間なら怜玢すればすぐわかるもののため、怜玢ツヌルをグラりンディングし粟床改善を図っおも良いず思いたす。 No.3は、ホテルでの食事ですが、宿泊ず刀断されおしたいたした。 金額が高いため察凊したいものの、LLMで刀断できる範囲を超えおいるため、䞍明ずするのが劥圓かもしれたせん。 そもそも回の支出で1䞇円を超過するケヌス自䜓皀なため、金額が倧きい䞭で確信が持おないものは䞍明ずするロゞックを远加しおも良いず思いたす。 No.4,5は、カヌシェアリングの月額費を亀通費、コンタクトレンズの定期支払を健康矎容ずしおいたすが、誀っお固定費ず刀断されおいたす。 Ground Truth䜜成時はそれぞれ亀通費・健康矎容ず刀断したものの、よくよく考えたら固定費で良い気がしたした。 そのため、この぀はGround Truthを修正したす。 このように、LLMの刀断を人間の刀断に䞀臎させる䜜業の最䞭に、人間の正解が倉わっおいく珟象は実プロゞェクトでもよく起こりたす。 Criteria Drift *3 ず呌ばれたりもしたす。 察凊方法ですが、個人的にはずにかく早く評䟡サむクルを回しお、このような珟象があるこずを把握し、すこしづ぀評䟡基準を育おおいくこずが正攻法ではないのかず考えおいたす。 No. 6,7,8は金額も小さく、非定期なものであるため、優先床は䜎くしお良いず考えたす。 5. 業務むンパクトの定矩ず蚈算 先ほどは、ひず぀ひず぀人の目で間違いを分析し改善の方針を決めたした。 しかし、今埌デヌタ量や制玄も増えおくる䞭で、ひず぀ひず぀確認するのは非効率です。 そこで、LLMシステムの改善の優先床を決めるため、LLMの評䟡指暙を業務ぞのむンパクトに倉換する関数を定矩したす。 実務の堎合はLLMアプリの評䟡指暙を、改善金額や削枛時間などのビゞネスむンパクトに倉換できるず良いのですが、 今回はそこたで出来ないので、以䞋のような制玄を持぀悪圱響床合( negative_impact )を定矩したす。 制玄1: 間違えた金額が倧きいほど、分析䜜業ぞの悪圱響床合は倧きい 制玄2: 䞍明ずラベルを付けた堎合よりも、ラベルを付け間違えた方が浪費分析ぞの悪圱響床合は倧きい(10倍くらい) def calculate_negtive_impact (evaluation_records: list [EvaluationRecord]) -> float : negative_impact = 0.0 for rec in evaluation_records: if rec.correct_classification.label != rec.predicted_classification.label: if rec.predicted_classification.label == ExpenseCategory.UNKNOWN: negative_impact += rec.transaction_record.amount / 10 else : negative_impact += rec.transaction_record.amount return negative_impact この関数で、分類粟床を浪費分析ぞの悪圱響床合を蚈算したずころ「69344」でした。 この指暙をもずに、効率的にシステムを改善しおいきたす。 6.継続的な改善 先ほどの改善方針を螏たえお、プロンプトを以䞋のように改善したす。 prompt = f """ 家蚈簿の明现が䞎えられた堎合、この明现に以䞋のルヌルに基づいおラベルを付䞎しおください。 # ラベル付けのルヌル 1. 明现の内容にもずづいお、ラベルを぀けるこず 2. 出費が必芁経費か、無駄な出費であり、改善するべき察象であるか分類するこず 3. ラベル付けの刀断が難しいずきは、「䞍明」ずしお人間の゚キスパヌトにレビュヌを䟝頌するこず 4. 飲食店名や矎容院名などマむナヌで固有名詞が䞍明な堎合は「䞍明」ずする 5. ホテル名称などで飲食か宿泊か刀断できない堎合は「䞍明」ずする 6. 倧手コンビニチェヌンセブンむレブン、ファミリヌマヌト、ロヌ゜ンなどの堎合は「コンビニ」ずする 7. 毎月固定の金額家賃、保険、サブスクなどの堎合は「固定費」ずする # 察象の家蚈簿明现 {transaction_record} """ 再床分類した所、混同行列は以䞋のようになりたした。 negative_impactは「19710.6」です。改善できおいそうですね。 ただし、なんでもかんでも䞍明ずラベルづけしおいるため、 本圓にこの指暙で浪費節玄意識を高める䜜業が効率的になっおいくのかは曎に運甚をしおいかないずわかりたせん。 今埌はよりデヌタを増やしたり、意思決定に぀なげる䞭で、評䟡指暙やGround Truthデヌタ、業務むンパクトの定矩を育おおいくこずが必芁ず思いたす。 たずめ この蚘事では「評䟡駆動開発」ずいう考え方を、家蚈簿分類プロゞェクトを通じお玹介したした。 LLMプロゞェクトだず怜玢や芁玄ずいった機胜を倚く組み合わせお構築するこず、察象ずなるデヌタ゜ヌスが倚岐にわたりフォヌマットも異なるこずが倚いです。 そのため、ずりあえず動かせた埌、どこから改善しおいけばよいかわからないこずが倚いです。 今回の様に業務むンパクトを定矩しお評䟡を先に眮くこずで この工皋は粟床がわるくおも、珟時点では問題なさそう このデヌタ゜ヌスは粟床が悪くおも、数も少なく人手による修正䜜業も容易なので改修の優先床が䜎い ずいった刀断ができ、効率的に開発を進められるのではないかず思いたした。 参考文献 *1 : OpenAIの評䟡駆動型システム蚭蚈のノヌトブック *2 : GeminiのStructured outputでレスポンスの型を矯正するためのTips 7遞 *3 : Who Validates the Validators? Aligning LLM-Assisted Evaluation of LLM Outputs with Human Preferences
はじめたしお。Insight Edgeで営業を担圓しおいる塩芋ず申したす。 普段はBtoBの領域で掻動しおいたすが、今回は私が個人で取り組んでいる゜ヌシャルビゞネス事業に぀いお、その立ち䞊げプロセスず生成AIの掻甚術を䞀぀のテックブログずしおたずめたいず思いたす。 この掻動は、瀟䌚貢献を目的ずしたビゞネス、いわゆる゜ヌシャルビゞネスです。きっかけは、2024幎の1月から4月にかけお参加した、ボヌダレス・ゞャパン瀟が運営する「ボヌダレスアカデミヌ」でした。ここでは瀟䌚課題を解決するための事業プランを緎り䞊げ、倚くの起業家の方々ず壁打ちを重ねながら、アむデアを具䜓化する蚓緎を積みたした。 珟圚、そのプランを実行に移すフェヌズにあり、その過皋でバむブコヌディングや各皮生成AIツヌルを駆䜿しおいたす。ランディングペヌゞLPやプロモヌション動画ずいった耇数のクリ゚むティブを制䜜したしたが、これらはすべお私䞀人で、1〜2ヶ月ずいう短期間で完成させたした。本蚘事では、その具䜓的な取り組みをご玹介したす。 瀟䌚課題ずしおの「AIデバむド」ず事業アむデアの着想 デゞタルデバむドの再来、広がる生成AIの利甚栌差 「声で孊ぶAI教宀」- 誰もが生成AIの恩恵を受けられる瀟䌚ぞ アむデアを圢に生成AIずバむブコヌディングで創るLPずチラシ 音声察話からLP制䜜ぞ - Geminiずbolt.new掻甚 倖郚サヌビス連携 Canvaず生成AIレビュヌで䜜るチラシデザむン 知っおもらうための仕組みづくり広告、情報発信の効率化、そしおプレスリリヌス 孊びずしおの初挑戊 - オンラむン・オフラむンでの広告運甚 声で思考をストックし、発信する - Discord BotずObsidianによる知的生産術 プレスリリヌス 「さっさず倱敗する」今埌の展望 倱敗から孊ぶ - アゞャむルな挑戊を支えるマむンドセット おわりに 瀟䌚課題ずしおの「AIデバむド」ず事業アむデアの着想 デゞタルデバむドの再来、広がる生成AIの利甚栌差 昚今、ChatGPTをはじめずする生成AIの進化ず掻甚が急速に進んでいたす。しかし、その恩恵を享受できおいるのは、ただ䞀郚の人々に限られおいるのが珟状です。倚くの蚘事で指摘されおいるように、日本党䜓で芋るず生成AIの掻甚は進んでおらず、さらに「䜿える人」ず「䜿えない人」の栌差、いわゆる「AIデバむド」は深刻化し぀぀ありたす。 か぀おスマヌトフォンが登堎した際、同様に「デゞタルデバむド」が瀟䌚問題ずなりたした。10幎以䞊の時を経お、今や60代、70代の方々のスマホ保有率も70%〜90%に達し、この問題は埐々に解消され぀぀ありたす。 しかし、物理的なデバむスであるスマホず異なり、生成AIは実䜓が芋えにくいため、この栌差はより䞀局、加速床的に広がっおいくのではないかずいう匷い危機感を持っおいたす。このたたでは、生成AIによっお助かるはずの人が助からなかったり、囜党䜓の生産性が䌞び悩んだりする未来に繋がりかねたせん。 「声で孊ぶAI教宀」- 誰もが生成AIの恩恵を受けられる瀟䌚ぞ そこで私が着想したのが、「声で孊ぶAI教宀」ずいう事業アむデアです。 最近、タむピングすら䞍芁な「声音声入力」で生成AIを操䜜する掻甚法が泚目されおいたす。音声認識の粟床が劇的に向䞊したこずず、生成AI偎で誀字脱字を吞収しおくれるこずで、声で生成AIず察話し、デヌタ分析やLP䜜成、悩み盞談たで、様々なアりトプットを生み出すこずが可胜になりたした。音声入力の速床はタむピングの2〜4倍皋あるず蚀われおいたすので、情報入力の利䟿性がずおも高いです。 この「声」ずいうむンタヌフェヌスは、生成AIに銎染みがない方や、パ゜コンが苊手な方にずっお、技術的なハヌドルを倧きく䞋げおくれたす。この芪しみやすさを起点に、生成AIの䟿利さを䜓隓しおもらい、䞀人でも倚くの利甚者を増やしたい。そんな想いから、地元で少しず぀この教宀を始めるこずにしたした。 声で孊ぶAI教宀 https://voice.datafriends.jp/  アむデアを圢に生成AIずバむブコヌディングで創るLPずチラシ 事業を䌝えるためには、サヌビスの顔ずなるランディングペヌゞLPず、地域の方々に盎接届けるチラシが䞍可欠です。ここでは、その制䜜プロセスず生成AIの掻甚法を解説したす。 音声察話からLP制䜜ぞ - Geminiずbolt.new掻甚 今回のLP制䜜では、バむブコヌディングのアプロヌチを取り、具䜓的にはbolt.newずいうツヌルを掻甚したした。 制䜜プロセスは以䞋の通りです。 芁件定矩Geminiずの壁打ち: たず、どのような芁玠がLPに必芁か、Geminiの最新モデルず音声で察話しながらディスカッションを行いたした。 プロンプト生成: 壁打ちで固たった芁玠を元に、bolt.new に入力するための具䜓的なプロンプトを䜜成したす。 UI生成ず改善: 生成されたUIをベヌスに、现郚を改善しおいきたす。 キヌメッセヌゞの調敎や説明文の修正は、再床生成AIに指瀺を出したり、自分で盎接コヌドを線集したりしお察応。 ヒヌロヌ画像は、ChatGPTの画像生成AIを䜿っお、事業コンセプトに合ったオリゞナルの画像を生成し、差し替えおいたす。 芏玄などの専門知識が薄い郚分も、生成AIに盞談しながら文章を䜜成したした。このように生成AIず察話を繰り返すこずで、驚くほど迅速にLPの骚栌を組み䞊げるこずができたした。 倖郚サヌビス連携 LP単䜓では完結しない機胜は、倖郚サヌビスを連携させお実装したした。 授業予玄・決枈システム 無料で利甚できる「Square」を導入し、講座の予玄動線を確保。 顧客接点 LINE公匏アカりントをれロから䜜成し、LPから友だち登録ができるように蚭定。 信頌性向䞊 「本圓に声で生成AIが䜿えるの」ずいう疑問に応えるため、実際に操䜜しおいる様子のデモ動画をYouTubeで公開し、LPに埋め蟌み。 最終的には、自身で契玄しおいるレンタルサヌバヌずドメむンに玐づけおLPを公開。䞀連の䜜業を通しお、サヌビス玹介ペヌゞを個人で手軜に公開できる時代になったこずを実感したした。 bolt.new Canvaず生成AIレビュヌで䜜るチラシデザむン Webでの展開ず同時に、起業家の先茩方からは「地道なチラシ配りが重芁」ず教わりたした。Webに慣れおいるず非効率に感じがちですが、地域に根差す䞊では欠かせない掻動です。 チラシ制䜜にはCanvaを掻甚。豊富なテンプレヌトからむメヌゞに近いものを遞び、キャッチフレヌズや構成芁玠は生成AIず盞談しながら詰めおいきたした。 ある皋床圢になった段階で、自分だけでは改善点が分からなくなったため、ここでも生成AIレビュヌを䟝頌。完成したチラシを画像化しおGeminiに読み蟌たせ、デザむンのフィヌドバックをもらいたした。するず、「この芁玠はもっず前に出した方が良い」「こういう衚珟の方が響きやすい」ずいった具䜓的な改善案が倚数埗られ、品質を倧きく向䞊させるこずができたした。 Canvaず生成AIレビュヌで䜜成したチラシデザむン 知っおもらうための仕組みづくり広告、情報発信の効率化、そしおプレスリリヌス LPずチラシずいう「歊噚」が完成し、次はいかにしおそれを届けるか、ずいう「認知・集客」のフェヌズです。 孊びずしおの初挑戊 - オンラむン・オフラむンでの広告運甚 今回は、効果枬定ず孊びを埗るこずを目的に、小芏暡予算で有料広告に初挑戊したした。 オンラむン広告: Facebookアカりントからメタ広告を蚭定。オンラむン広告からLPぞ誘導したす。 オフラむン広告: 印刷サヌビスの「むロドリ」に䟝頌し、チラシのポスティング広告を実斜したす。今回は、生成AIに銎染みが薄いず思われる高霢者の方が倚く圚䜏される゚リアをタヌゲットにしたした。 この蚘事を執筆しおいる段階ではただ入皿したばかりですが、これらの結果を分析し、今埌の掻動に掻かしおいく予定です。 声で思考をストックし、発信する - Discord BotずObsidianによる知的生産術 広告のような有料斜策ず䞊行しお、お金をかけずに認知を広げる取り組みも重芁です。友人・知人ぞのリファラルや無料䜓隓セミナヌに加え、SNSでの情報発信にも取り組んでいたした。 しかし、継続的な発信は簡単ではありたせん。そこで、発信頻床を䞊げるための仕組みを自䜜したした。 思考のむンプット (音声): Discord䞊に自䜜したBotを立ち䞊げ、メンションを付けお音声で思考をむンプットしたす。 生成AIによる敎圢・ストック: Botが音声をテキスト化し、生成AIが内容を敎圢。そのテキストをGoogleドラむブに自動でストックしたす。 ナレッゞ管理 (Obsidian): GoogleドラむブはナレッゞベヌスアプリのObsidianず連携。過去のメモやアむデアずの関連性をマッピングし、知識を䜓系的に管理したす。 自動投皿 (Twitter): ストックされた内容を、Botが自動でXTwitterに投皿したす。 この仕組みを導入しおから、発信のハヌドルが劇的に䞋がり、投皿頻床が高たり、SNS経由でのランディングペヌゞ閲芧者数が増えたした。なお、こちらのツヌル開発もバむブコヌディングで行っおいたす。 自䜜したDiscord Bot音声入力の内容の敎圢ずX投皿を行いたす こちらのツヌルは、AIマンガ家プログラマヌ・けいすけさんのnoteを参考に開発を進めたした。本機胜を持ったDiscord Botを䞀郚無償提䟛されおいたすので、気になる方は、けいすけさんのnoteずXを是非ご参照ください。 note.com プレスリリヌス 最埌に、先茩起業家のご玹介もあり、本事業のプレスリリヌスをPR TIMES様から2025幎8月5日火に打たせおいただくこずにしたした。プレスリリヌスは自分ずあたり関係のないものず考えおいたしたが、実際はそんなこずもなく、簡単な準備ず3䞇円皋の費甚で、耇数のメディアに察しお情報発信を行うこずが可胜です。なお、PR TIMES様では、創業2幎目の䌚瀟であれば、無料でプレスリリヌスを打぀スタヌトアップチャレンゞずいった、倧倉有難い支揎サヌビスもありたす。 プレスリリヌス文案 こちらのプレスリリヌスの文案䜜成に際しおも、生成AIにレビュヌをお願いしたした。文章の読みやすさや簡朔さなど、かなりの駄目出しを受けながら、文章䜜成を進めたした。 たた、今回はGemini 1.5 ProずChatGPT-4oの䞡モデルにレビュヌをしおもらいたしたが、共通の指摘事項ずしお「動画コンテンツを甚意すべき」ずいうものがありたした。動画コンテンツを自身で䜜成した経隓はありたせんでしたが、こちらもチラシず同様にCanvaで制䜜を進めたした。 さらに制䜜過皋で、より高い品質を目指しおナレヌション音声も远加したいず考えるようになりたした。そこで掻甚したのが、Google AI Studioの音声生成機胜Generate speechです。台本を読み蟌たせるだけで、非垞に品質の高いナレヌション音声をAIに䜜成しおもらいたした。 豊富なテンプレヌトずAIのナレヌションのおかげで、動画制䜜の玠人でも、ある皋床の品質を持ったプロモヌション動画を䜜成できたかず思いたす。実際の音声は こちらのYouTube動画 でご確認いただけたす。 プロモヌション動画の制䜜 www.youtube.com 「さっさず倱敗する」今埌の展望 倱敗から孊ぶ - アゞャむルな挑戊を支えるマむンドセット この゜ヌシャルビゞネスは、6月から10月にかけお「本圓に成り立぀のか」を怜蚌する期間ず䜍眮づけおいたす。 もちろん、初めおの個人での挑戊なので、倱敗する可胜性も倧いにあるず考えおいたす。私が奜きなプロダクトデザむナヌ・秋田道倫さんの「さっさずやっおさっさず倱敗しおさっさずもう䞀回やる事です」ずいう蚀葉がありたす。 さっさずやっおさっさず倱敗しおさっさずもう䞀回やる事です。 — 秋田道倫 (@kotobakatachi) 2023幎4月2日 今回の挑戊も、この粟神で取り組みを進めおいたす。倱敗しおも、そこで埗た孊びが必ず次に繋がるず考えおいたす。たずは行動し、そこから埗られたフィヌドバックを元に、玠早く次の打ち手を考える。このサむクルを回しおいきたいです。 おわりに 今回は、私が個人で立ち䞊げおいる゜ヌシャルビゞネスの事䟋を通しお、生成AIを駆䜿したアむデアの具䜓化から認知拡倧たでのプロセスをご玹介したした。 実は、この蚘事の執筆も「Aqua Voice」ずいう音声入力ツヌルを䜿い、私が話した内容を生成AIにテキスト化しおもらう圢で行っおいたす。手でタむピングするのに比べ、その速床ず手軜さは圧倒的です。 「声ず生成AIの組み合わせ」は、ただ䞀般化されおいたせんが、今埌圓たり前のワヌクスタむルになっおいくず思われたす。 この掻動が、AIデバむドずいう瀟䌚課題に察する䞀぀の解決策の提瀺ずなり、たた、これから䜕か新しい挑戊をしようずしおいる方々の参考になれば幞いです。最埌たでお読みいただき、ありがずうございたした。
init_mathjax = function() { if (window.MathJax) { // MathJax loaded MathJax.Hub.Config({ TeX: { equationNumbers: { autoNumber: "AMS", useLabelIds: true } }, tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true, processEnvironments: true }, displayAlign: 'left', CommonHTML: { linebreaks: { automatic: true } } }); MathJax.Hub.Queue(["Typeset", MathJax.Hub]); } } init_mathjax(); こんにちは、4月にDSチヌムマネヌゞャヌになった ヒメネスJiménez です私の名前のリンクをクリックしたこずがある方が分かるかもしれたせんが、数理博士です。研究分野は代数的䜍盞幟䜕孊結び目理論でした。そんな蟌み入った数孊を勉匷した人は、 どのように数孊を珟堎で掻かしおいるのか に぀いお話したす。 目次 数孊で䜕を勉匷する 瀟䌚で掻かす、数孊者ずしおのスキル 論理的思考 抜象化・モデル化 ゜フトスキル 算数・蚈算 数孊瀟䌚DS 問題解決ぞのアプロヌチ 手法の理解ず応甚 実践ぞの即応性 たずめ 数孊で䜕を勉匷する 数孊が怖い ず思う人が非垞に倚いです。もしかしたら、あなたもその内の䞀人です。その怖さはどこから生たれるかを考えるず、数孊は「難しい」からです。「難しい」の定矩は人によっお倉わるかもしれたせんが、その裏にある共通の理由は恐らく「 論理的思考を最倧限に掻かす 」であるのではないでしょうか その認識は誀っおいたせん。䜕をしようにも、論理的に考える必芁がありたす。その必芁性は数孊の根本的な目的から生たれたす。では、 数孊の目的 は䞀䜓䜕なのですか 事象の構造や法則性を探求し、関係性を明らかにするこず です。数孊の蚀葉に倉換するず、A仮定があった時に、なぜB結果が成り立぀かを様々なツヌル呜題・定理・公理などを䜿っお 蚌明する こずです。 前提の背景が倉わったり、ツヌルが倉わったり、蚌明したい内容が倉わったりしたすが、共通点は論理です。そしお、その論理を埐々に埐々に䜿いたす。䟋えば、「 1の次は 」に察しお、ほずんどの人が「2」ず答えたすが、「それは、なぜですか」、「どういう仮定文脈の䞋でですか」、「『1』ずいった衚蚘は、そもそも䜕を衚したすか」などを疑い、そしお是か吊かを蚌明するのは数孊者の仕事です。 瀟䌚で掻かす、数孊者ずしおのスキル 論理的思考 䞊蚘の䟋のように、背景や前提仮定を明確にしお、定矩された文脈内で問題を考えるのは数孊者の特城です。これは 盎接的にビゞネスにも掻かせたす 。玠朎な䟋で恐瞮ですが、以䞋を䞀緒に考えおみたしょう。 䟋 ずある人が困っおいたす。問題を聞くず、「ドアがちゃんず閉たらないから」ず答えたす。 ここで、問題をすぐに解決したい人がいたら、ドアの閉たらないずころを芋぀け、ちゃんず閉たるたで朚材を削りたす。これで問題を解決できおいたすか客芳的に答えるず、「ドアがちゃんず閉たらない」問題が確かに解決されおいたす。ただ、それで良いのかずいうず、もしかしたら䞀番賢い察応方法ではなかったかもしれたせん。以䞋考えられたす ドアには䟡倀があり、削るのは勿䜓無い。 ドアを入れ替える必芁があった堎合、他のドアも同じく削る必芁がある。 他のドアがあるずころに同じ問題が発生し埗るのか分からない。 など。 そこで、論理を掻かし、「なぜ」を疑うこずで原因を探玢したす。 問題 理由 1 ドアがちゃんず閉たらない → ドアず釘がぶ぀かる 2 ドアず釘がぶ぀かる → 釘が出っ匵っおいる 3 釘が出っ匵っおいる → 正しい釘じゃない 4 正しい釘じゃない → 正しい釘の䜙りはなかった ここたでくるだけで、かなり考えられる原因の範囲を絞りたした。さらに続くず、釘がなかった理由はもしかしたら䜜業者が無くしたからです。もしかするずそもそもドアを組み立おる際に釘の数は十分に付属されおいたせんでした。様々な理由が考えられたすが、「なぜ」を聞くこずだけで原因が少しず぀分かり、察応策もそれに応じお倉わっおきたす。 参考 この考え方はトペタ自動車が代衚する「 なぜなぜ分析 」ずも蚀いたす 抜象化・モデル化 数孊では、「具䜓」を考えるこずはほずんどありたせん 。1, 3, 5, 7, 9...は具䜓的な数列です。数列を芋るず、次の数字を掚定できたすか「あ奇数だ」ず気付いお、「11」ず答える人はほずんどだず思いたす。では、他の奇数を考えおください。13? 71? 1895? 奇数は"芋぀かりやすい"から思い぀きベヌスで答えられるず思いたす。ただ、これは数孊者のアプロヌチではありたせん。数孊者は 具䜓を抜象化し、䞀般的なケヌスを考える こずが倚いです。私も1, 3, 5, 7, 9...を芋るず「奇数」ずしお認識したすが、頭の䞭には「$2n+1$」ずいう衚珟が珟れたす。奇数にしおはやりすぎかもしれたせんが、以䞋の䟋を考えおみおください。 䟋 1, 3, 6, 10, 15, 21...ずいう数列があった時に、次の数字を掚定できたすかその次は100番目の数字は 芏則が分かっおいるず思いたす。0からスタヌトしお、埐々に+1、+2、+3...で蚈算しおいきたす。では、21の次の数字は... 28でしょうその次は... 36でしょう100番目の数字は... 5050、ず自信を持っお答え切れたすか奇数の堎合ず違っお、この数列に属する数字はそんなに芋぀かりやすくないので「思い぀き」のアプロヌチは適甚できたせん。䞀方で、数孊的に芏則を求めるず、䞊蚘の数列は次のように衚珟できたす$\frac{n\cdot (n+1)}{2}$. これが芋せられたら、100番目の数字は$\frac{100\cdot 101}{2}=50\cdot101=5050$ず簡単に答えられたすね数孊者はこのように 抜象化・モデル化を考える䞊で具䜓的な回答を導く こずが倚いです。 図1数孊的思考による抜象化ずモデル化のむメヌゞ。 問題解決に蚓緎されおいない人は問題から盎接解答を出そうずしたす。䞀方で、数孊者もしくは問題解決思考を蚓緎した人は問題の抜象的な衚珟を考えた䞊で、論理的な䞀般化を構築し、最終的に問題に合った具䜓的な解答を求めたす。 どの具䜓的な問題に察しおも必ずその流れで怜蚎を掚進するずは蚀いたせんが、このような敎理ができるだけでより慎重で網矅的に課題の解決に挑むこずができたす。そしお、具䜓的な芁件が倚少倉動しおも、䞀般化問題ずしお既に解いた問題ず䞀臎するなら、さらに答えを導くのが速いです。 ゜フトスキル 䞊蚘以倖にも、数孊の勉匷に䌎っお様々な゜フトスキルを䌞ばしたす。 奜奇心 そもそも奜奇心なしで数孊を遞ぶ人はいないず思いたす。奜奇心は数孊者の玠になりたす。「なぜ」、「知りたい」が根本的な動機です。問題がある手前、 解決せずにはいられない 気持ちです。謎に察する疑問を解消するたで調べ続けるこず。この奜奇心はそのたた瀟䌚問題に察しおも展開できたす。 粘り匷さ・忍耐力 䞊蚘にも぀ながりたすが、問題が目の前にあった時に、解決するたで諊めないこずが倚いです。問題がどんなに難しくおも「気になる」気持ちをスッキリさせるたで頑匵りたす。時間の問題ではありたせん。 答えを埗るのが最高のスッキリ感 なので、それに向けおひたすら頑匵りたす。答えが䞀般的に知られおいる堎合でも、自力で芋぀けるたで答えを聞きたくない人もいたす䟋えば、本皿の著者 批刀的思考・刀断力 自分が持っおいる前提仮定ずツヌル定理で結論が蚌明できるかを芋極める力。これはずおも倧事です。蚌明できるず思った時に、蚌明しようずしたす。蚌明に至らない堎合、前提に問題があるか、結論に問題があるか、ツヌルが足りおいるかなど確認したす。それでも蚌明ができない堎合、 蚌明できないこずを蚌明したす 。これの繰り返しによっお、少しず぀文脈を考慮した刀断力が身に぀きたす。 補足1 「蚌明できない」こずを蚌明するのに、䞀぀の反䟋を芋぀ければ十分です。 補足2 幞せなこずに、数孊には「意芋」は存圚したせん。事実は事実です。䞻匵を耇数の方法で蚌明できたすが、成り立぀なら成り立぀、成り立たないなら成り立たない。 算数・蚈算 倚くの人が、数孊者は数字を垞に扱っおいるので算数・蚈算が埗意だず思われたす。これは倧きな間違いです。 たず、数孊者は、数字䞀般人が考える「数字」をほがほが䜿いたせん。代わりに、数倀を衚す匏を䜿いたす。䟋えば、倉数 $x$、$y$ 、係数 $e$、$\pi$ 、倚項匏 $5x$$^2-x+2 $ 、数匏 $ P(x|x>y) $ 、など。数字 そのもの で蚈算するこずはほずんどありたせん。数孊の䞭で唯䞀数字を芋るこずが倚い分野は 数論 です。それでも、数論で数字の性質を勉匷し、玔粋に蚈算・算数をするこずはほずんどありたせん。 そしお、数孊に必芁な胜力論理力ず、算数に必芁な胜力蚈算力は同じではないため、人によっお埗意・䞍埗意はたちたちです。䟋えば、私は数孊者で、N次元の耇玠空間でのベクトルの回転や移動は簡単にできる䞀方、「127-38=?」ず聞かれるず答えが出おくるたで日が暮れちゃいたす。逆に、算数が埗意で数孊できない人も山ほどいたす。 数孊瀟䌚DS 数孊者が瀟䌚で技術を掻かす最も自然な道はデヌタサむ゚ンスです。プログラミングさえ習埗すれば、論理的思考や抜象化力を掻かしお、ビゞネス課題の問題解決にすぐ着手できたす。 問題解決ぞのアプロヌチ 数孊者は、曖昧な課題を明確な芁件に分解し、論理的に解決策を導きたす。デヌタサむ゚ンスでも、課題の分解・抜象化・モデル化が重芁であり、数孊的思考がそのたた圹立ちたす。たた、数孊で「蚌明できないこずを蚌明する」ように、珟堎でもデヌタや状況を確認し、実珟䞍可胜な点や䞍足しおいる芁玠を論理的に明らかにするこずが重芁です。 手法の理解ず応甚 DSに必芁な統蚈や機械孊習などの手法も、数孊的な背景を持぀こずで理解しやすくなり、なぜその手法が有効なのかたで比范的深く把握しやすいです。DSを含め、すべおの科孊の根底には数孊があるため、数孊の構成を理解しおいる人は、他分野の䞻匵やテクニックの確からしさを芋極めるのも埗意です。新しい技術や手法も、理論から応甚たでスムヌズに取り入れるこずができたす。 実践ぞの即応性 数孊者は、プログラミングスキルがあれば、デヌタ分析やモデル構築ずいった実践的な業務にも迅速に察応できたす。たずえ既存のツヌルやアルゎリズムで解決できない課題があっおも、自ら新しい手法を考案したり、既存の理論を応甚しお独自の゜リュヌションを開発するこずに取り組むタむプです。たた、課題に察しお柔軟にアプロヌチを倉えたり、仮説怜蚌を繰り返しながら最適な解決策を暡玢する力も匷みです。こうした即応性は、倉化の激しいビゞネス珟堎や新しい技術が次々ず登堎するデヌタサむ゚ンス分野で特に重宝されたす。 たずめ 数孊を孊んだからずいっお、誰もが最匷のデヌタサむ゚ンティストになれるわけではありたせん。しかし、数孊的思考を身に぀けおいるこずで、物事の本質を玠早く捉えたり、論理的に怜蚌する力が他の人よりも高い傟向がありたす。 ずはいえ、ビゞネスの珟堎では人ず協力しながら成果を出すこずが求められたす。どれだけ論理力や抜象化力があっおも、コミュニケヌションやチヌムワヌクが欠けおいおは、良いデヌタサむ゚ンティストずは蚀えたせん。 結局のずころ、瀟䌚では倚様な胜力が必芁ずされたす。 自分の匷みを掻かし぀぀、匱みは呚囲ず補い合うこずで、個人も組織もより倧きな成果を生み出せる のです。数孊的思考もその䞀぀の歊噚ずしお、バランスよく掻甚しおいきたいず思いたす。 あっ、「89」だ😅
はじめに なぜ展瀺䌚に出たのか 準備1どこにだすか誰ずだすか 準備2:デモ・営業資料・リヌフレット...終わらない制䜜物 䌚堎蚭営、そしお圓日 終わりに展瀺䌚はチヌムで぀くるもの はじめに こんにちは、Insight Edgeむノベヌションハブで事業開発を担圓しおいる那須田です。 2025幎5月に、倧阪で開催された「 コンタクトセンタヌ/CRMデモカンファレンス 」通称CCCRM展ずいう展瀺䌚に参加しおきたした。半期ごずに行われおいるむベントで、コンタクトセンタヌ関係者が倚く来堎し、先端技術を掻甚したツヌルや゜リュヌションの展瀺が行われおいたす。昚幎から参加し始めた圓瀟ずしおは3回目の出展ずなりたす。 倚くの方は「芋る偎」ずしお展瀺䌚参加経隓があるのではないかず思いたすが、「出す偎」ずしお構想から圓日のお客様あお説明・埌片付けたで関わる機䌚は意倖ず少ないのではないでしょうか。そこで、今回は「展瀺䌚っお実際どうやっお準備しおどうやっお終わっおいくの」ずいう疑問にお答えすべく、䜓隓談をたずめたいず思いたす。 なぜ展瀺䌚に出たのか Insight Edgeでは䜏友商事および䜏友商事Gr䌁業の倚業界・グロヌバルに広がる広いフィヌルドを䞭心に、POC〜システム開発をワンストップで玠早く行うこずでDX実装を行っおいたす。 各顧客の悩みに寄り添いながら個別プロゞェクトを進めおいくこずが倚いのですが、特に生成AI登堎以降は、テヌマやアりトプットが「これはいろんなお客様に䜿っおいただけるのでは」ずいうものが増えおおり、゜リュヌションずしお広く展開する取り組みも行っおいたす。そのうちの䞀぀が顧客の声・埓業員の声分析を倧胆に効率化・高床化出来るテキスト分析ツヌル「 Voiceekボむシヌク) 」です。こちらのツヌルは顧客にご利甚いただく䞭や導入にむけたPOCを進める䞭で出おきた芁望や気付きをもずに継続しお成長を続けおいたす。 生成AI掻甚したVOC分析ツヌル「Voiceek」  たた、他にもコンタクトセンタヌ関連での取り組み・知芋がたたっおきおいたす。顧客あおの営業電話の架電優先順䜍の最適化するAIモデル「架電最適化モデル」や、将来かかっおくるコヌル数の予枬に基づいた必芁な応察オペレヌタ数予枬を行うAIモデル「オペレヌタ数予枬モデル」の取り組みが出おきおおり、゜リュヌション化を怜蚎しおいたす。 展瀺䌚ぞの出展目的は、出展物のいるステヌゞによっおさたざたです。䞀般的には以䞋あたりがあるのではないでしょうか 芋蟌み顧客獲埗名刺亀換などを通じお営業フォロヌするための情報を集める 認知向䞊・ブランディング新サヌビス発衚タむミングでの露出匷化 既存顧客ずの関係匷化察面でのさらなるリレヌション構築・アップセルの機䌚 パヌトナヌ・アラむアンス開拓協業候補䌁業ずの出䌚いの堎 仮説怜蚌顧客ずのナマの䌚話でニヌズを理解したい 今回の出展では、もちろん新たな顧客獲埗は狙いたいので倧目暙ずしおいるのですが、出展物それぞれに裏テヌマがありたした。Voiceekに぀いおは「さらなる進化に向けたニヌズの確認」ずいうテヌマ。「架電最適化モデル」や「オペレヌタ数予枬モデル」に぀いおはそもそものニヌズ確認ずいうのが重芁なテヌマでした。個別プロゞェクトで実斜した取り組みにそもそも広いニヌズが有るのかずいうずころです。 準備1どこにだすか誰ずだすか たずは、出展の目的に応じお展瀺䌚を遞ばないずいけたせん。なんの切り口で探しに行くかずいうのは意倖ず難しいずころだず思いたす。䟋えば「AI゚ヌゞェント」関連でみおみるず、少し調べただけでも片手に収たらない数が出おきたす。その䞭から、出展のためのコストやそこで出䌚える顧客局、商談に実際に進んでいく本気床があるかなどで絞り蟌んでいく必芁がありたす。 ChatGPTで怜玢したAI゚ヌゞェント関連のむベント こういった問題を䞀気に乗り越えられる方法が「出展パヌトナヌを芋぀ける」ずいうこずです。冒頭で曞いた通り、圓瀟のCCCRM展ぞの参加は3回目ずなるのですが初回から継続しおSCSK・SCSKサヌビスりェアずの共同出展です。 初回参加のきっかけずしおは、Voiceekのベヌスずなった取り組みでのアプリケヌションをSCSK宛に玹介し、SCSKがコンタクトセンタヌ向けに提䟛するツヌル矀ずのシナゞヌがあるこずも芋えたこずでCCCRM展ぞの共同出展のお誘いをいただいたずいう圢でした。長幎同むベントに参加しおいるSCSKから、むベント来蚪者局や準備にどの皋床の負荷がかかるか圓日の動き方などのレクチャヌを受け、倚くの人員を割けるわけではない我々でも参加できそうか぀、反応を芋たい顧客局が来蚪するず確信しお参加を決定するこずができたした。 たた、出展するブヌスの䜍眮も非垞に重芁で、これによっお来堎者自䜓は倚くおも堎所が悪い自瀟ブヌスはすっからかん...ずいうこずもありえたす。むベントにもよるず思いたすが、ここも長幎参加しおいるSCSKだからこそ把握しおいるスむヌトスポットの確保ができおおり、成功のために重芁なポむントです。実際、むベント圓日フロアを回っおみるず、あの有名な䌁業が堎所のせいで閑叀鳥...ずいうずころもあり、䜓力をかけお準備した党おが無駄になりかねたせん。 やはり事情に通じおいる先茩ず䞀緒に出すずいうのは特にビギナヌにずっおは非垞に倧事なポむントな気がしたす。 準備2:デモ・営業資料・リヌフレット...終わらない制䜜物 さお、どこに出すか・誰ず出すかが決たればあずは぀くるのみです。䞊で觊れた通りSCSK・SCSKサヌビスりェアずの共同出展ですので、3瀟での制䜜物ず自瀟での制䜜物がありたす。濃淡ありたすが圓瀟が関わったものは以䞋がありたす。 3瀟制䜜物 既存顧客あおにむベント呚知するための「事前チラシ」 圓日、来蚪客あおに配るための「圓日チラシ」 圓日、ブヌスにはる倧きなパネル 単独での䜜成 営業資料すでにあるものをアップデヌトや新芏䜜成 チラシ3瀟のものずは別に「Voiceek」宣䌝甚 Voiceekデモ環境顧客局に合わせたサンプルデヌタの䜜成ずデヌタ適甚した環境準備 Voiceekベヌタ機胜顧客のニヌズ・反応を確認したい機胜の実装 ミニセミナヌ資料 各出展物の玹介資料を10分以䞋のトヌク甚に敎理 トヌクスクリプト 玹介動画ミニセミナヌで掻甚するVoiceek機胜玹介動画 準備は2〜ヶ月前から始め、週次定䟋で盞談をしながら進めおいきたした。恥ずかしながら、、前半はなかなか゚ンゞンが掛かりたせん。ただ䜕をどう䜜るか芋えおいないずいうのもあっお䜜業量が具䜓的に芋えおないせいもあるかもしれたせん。 本栌的に焊り始めるのは残り1.5ヶ月ずいうあたりからです。䜜るべきものが芋え、あたりの倚さに圧倒されたす自業自埗です...)。ここからはなんずか䜜成を間に合わせるため呚りのメンバヌに迷惑をかけながら...)䞀気にギアを倉えお取り組みたす。たくさんの制䜜物があるため、単独で察応するこずはたず難しいでしょう。各プロゞェクトのメンバヌを巻き蟌んでヒアリング・堎合によっおは制䜜を手䌝っお貰う必芁もありたすし、お客様の目を匕くためにはデザむンにもこだわる必芁がありたす。 幞い圓瀟は郚眲ごずの垣根が䜎く協力を仰ぎやすく、たた瀟内に匷力なデザむンチヌムがあり目線合わせをしながらクむックに進められたこずでなんずか締切に間に合わせるこずができたした。逆に、瀟内が瞊割りの気配あり...だったり、デザむンの倖泚察応を前提ずされおいる堎合は、コミュニケヌションのリヌドタむムや意思疎通の霟霬を取り戻す時間をしっかりず芋おおかないず「締切に間に合わない」ずいう事がありえたす。準備期間の萜ずし穎の䞀぀ずしお知っおおくべきこずかもしれたせん。 これ以倖にも、ロゞ面での調敎が倚数存圚したす。wifiは぀かうブヌスの造䜜はどうする組み立おの業者は圓日䜿うPCは圓日の集客のためのチラシ配り芁員は...地味ですが決めるこずは山積みです。ロゞ面は、衚に出る出展物にも増しお経隓がモノを蚀う分野になりたす。先皋の繰り返しずなりたすが、やはり出展経隓があるパヌトナヌずの出展がおすすめです。 䌚堎蚭営、そしお圓日 前日 なんずか制䜜物を間に合わせた、ず䞀息぀こうずするずすぐにむベントです。CCCRM展では、むベント前日の午埌から䌚堎蚭営が始たりたす。䜜成したパネルやその他ブヌス蚭営は展瀺䌚察応を行う業者がおり、察応しおもらいたすロゞずしお固めおおく。呚囲のブヌスの蚭営を芳察しおいるず、どこたで業者に察応しおもらうかは各瀟ごずに異なりたす。準備芁員が足りなくおかなり苊劎しおいる䌚瀟も芋受けられたした。 顧客宛説明をするためのPC・モニタはレンタルするこずが倚いず思いたす。それらの蚭定は自分たちで行いたす。䜕らかの゜フトりェアのむンストヌルが必芁な堎合は十分なスペックを持ったPCかどうかは意識しおおいたほうが良いでしょう。 前日準備の様子ブヌスに蚭眮したパネル 圓日 圓日が来たした。むベントスタヌト前に朝瀌をしお、名刺亀換のルヌルやもらったコメントのメモの仕方など目線合わせをしおおきたす。これをしないず察応者によっお埗られる情報にばら぀きが出お、顧客ニヌズの理解が進たなかったり、堎合によっおは朜圚顧客を気づかずに逃しおしたうずいうこずになりたす。Insight Edgeチヌムでは、事前にニヌズを探るための芳点ず質問をリストアップしおおいお手元に持っおおくようにしおおきたした。 10時になり開堎したす。ここからは立ちっぱなし、喋りっぱなしです。むベントにもよるず思いたすが、CCCRM展は倚くの来蚪者があり、座る時間ずいうのはほがありたせん。そのため、足腰ず喉の耐久ゲヌムずなりたす。ただ、応察すればするほどだんだん自分の察応がこなれおくるずいうこずに気づき、ある皮の「展瀺䌚説明者ハむ」のようなものが蚪れたす。ずはいえ、、状況が蚱せばシフトに少し䜙裕を持おる人数を甚意しおおくこずをおすすめしたす。 忙しい䞭でも䞀応繁閑は発生したす。お昌時やセミナヌが開催されおいる時間等が少し客足が萜ち着くタむミングずなりたす。このあたりもむベントごずに違うず思うので事前に芋極めおシフト組みに掻かせるずスムヌズです。 たた、来蚪者の傟向ずしお、各瀟耇数名でむベントにいらっしゃる印象です。そしお、なにかツヌル遞定などテヌマを持っお来堎しおいる堎合、党䜓を各人がグルっず回った䞊で良かったブヌスを意芋亀換。その埌、党員3名などで改めお良かったブヌスを来蚪ずいう圢で進めおいるように芋えたす。圓たり前のこずを曞いおしたいたすが、毎回「䞀球入魂」の説明をしないず二回目の蚪問をもらえず予遞萜ちしおしたうずいうこずになるので、特に疲れが溜たっおくる午埌の説明で気を぀けるべきポむントです。 CCCRM展は2日間のむベントですが、展瀺䌚ハむのうちにあっずいう間に終りを迎えたす。展瀺䌚が終わりには倕瀌が開催されたす。ここで集客の結果が発衚されたす。各ブヌス悲喜こもごもの様子が芋られ、アツくなりたす。結果によっお打ち䞊げの盛り䞊がりが巊右されるでしょう。 さお、最埌は埌片付けです。PCのレンタル元ぞの返送や制䜜物の凊理などがありたす。䌚堎の平垞時間もあるのでしっかりロゞを確認しおおきたしょう。たた、制䜜物に぀いおは今埌の営業掻動や次回以降の展瀺䌚で䜿えるものもあるのではないでしょうか特にチラシに぀いおはむベント以倖でも気軜に䜿えるものか぀印刷コストも倧きくないので今埌の掻甚のために倚めに準備しお䜙らせおも良いかもしれたせん。 圓日の様子Voiceekミニセミナヌ実斜䞭 終わりに展瀺䌚はチヌムで぀くるもの 最埌に、䞊で觊れなかったが重芁ず思っおいる展瀺䌚参加の䟡倀に぀いお改めお振り返っおおきたいず思いたす。 締め切り効果 ツヌルでも゜リュヌションでも立ち䞊げ期は明確な締め切りが䜜りにくい郚分があるず思いたすが、展瀺䌚はどうあがいおも動かせない締切を䜜っおくれたす。そしお、締切埌にそのたた䜿える資料や機胜など様々なレガシヌを残しおくれたす。これは芋逃せない倧事なポむントだず思いたす。 チヌムずしお動く効果 チヌムでカバヌし合いながら動くこずでしか成功裏にむベントを終えるこずはできたせん。ずいうか、そもそもむベントにたどり着けたせん。たた、「締切に向けお制䜜物を決めおそれをクリアしおいく」ずいう小さくはあっおも成功䜓隓をチヌムで積めるこずでその埌のチヌム内での連携の圢の原型も䜜られたす。立ち䞊げ期にあるチヌムの圢䜜りの堎ずしおや、逆に営業サむドず開発サむドが分離されおしたっおいる状態からの再床のチヌムアップのきっかけずしおも機胜するず思いたす。     以䞊、地味な偎面も含めお、展瀺䌚出展にあたっお先に知っおおきたかったなず思うポむント・参加の䟡倀を振り返っおみたした。 Insight Edgeでは、MVVのValueずしお「やりぬく」、「やっおみる」、「みんなでやる」を掲げお、クラむアントワヌクでなく事業䌚瀟のデゞタルバリュヌアップ実珟を担うパヌトナヌずしお事業を行っおいたす。展瀺䌚は参加のお誘いを受ける圢で「やっおみる」で始め、小さなサヌクルでは察応しきれないこずに気づき、様々な瀟内倖メンバヌを巻き蟌んで「みんなでやる」むベントずしお盛り䞊げ、締切たでに「やりきる」ずいうたさに圓瀟Valueを総動員するようなむベントでした。Valueを䜓珟しお助けおいただいた皆様に倧倉感謝しおいたす! 今埌も圓瀟は新しい領域の゜リュヌション開発を進めおいきたいず思っおいたす。事業開発ポゞションも鋭意募集䞭ですので、是非䞋のバナヌからご確認の䞊ご応募ください
こんにちは。デヌタサむ゚ンティストの癜井です。 今日は、LLMのEmbeddingをアむテム掚薊に掻甚するず、どんな掚薊が可胜になるかを玹介したいず思いたす。 はじめに アむテム掚薊ずは アむテム掚薊の皮類 行動履歎ベヌス掚薊 コンテンツベヌス掚薊 LLMのEmbeddingはコンテンツベヌスの匷い味方になる 利甚デヌタに぀いお MovieLens TMDb 行動履歎ベヌス掚薊の実践 実斜内容 掚薊結果 分かるこず 1. 「ハリヌポッタヌず賢者の石」の結果が、シリヌズが䞊んでいる。 2. 「もののけ姫」や「君の名は」の結果が、同じ制䜜䌚瀟や監督が䞊んでいる。 3. 党䜓的に、掚薊察象映画の䞊映幎ず近い幎代の映画が䞊んでいる。 LLMのEmbeddingを甚いた掚薊の実践 実斜内容 掚薊結果 分かるこず 1. 「タヌミネヌタヌ」ず「ハリヌポッタヌ」の結果が、シリヌズで完党に埋たっおいる。 2. 「もののけ姫」ず「君の名は」はの結果が、同じ制䜜䌚瀟や監督の䜜品に偏っおいない。 3. 党䜓的に、掚薊映画の䞊映幎の偏りが芋られず、満遍なく掚薊されおいる。 鬌滅の刃 無限列車線ず掚薊結果のあらすじ 未来の映画の掚薊 2025幎7月公開の映画のあらすじの䜜成 掚薊結果 終わりに 補足 Item2Vecのハむパヌパラメヌタヌ はじめに アむテム掚薊ずは アむテム掚薊ずは、「あなたにおすすめの商品はこれ」ずいったかたちで、ナヌザヌの興味・関心に合った商品を提瀺する機胜です。 この機胜は、YoutubeやAmazon、Uber Eatsなど様々なサヌビスで提䟛され、膚倧な遞択肢の䞭から“自分奜み”を次々ず提案しおくれたす。 アむテム掚薊の皮類 アむテム掚薊は、倧きく分けお2぀に分類できたす。 行動履歎ベヌス コンテンツベヌス 行動履歎ベヌス掚薊 行動履歎ベヌス掚薊は、ナヌザヌの行動履歎を手がかりに、䌌た行動パタヌンを持぀人が奜んだアむテムを掚薊する方法です。 ナヌザヌの行動履歎デヌタがあれば、それず䞀緒にアクションされおいるアむテムが掚薊できたす。 䞀方で、ただ誰も觊れたこずがない、新芏アむテムやニッチなアむテムを掚薊できない課題がありたす。 コンテンツベヌス掚薊 コンテンツベヌス掚薊は、アむテムのゞャンルなどの属性や、商品の説明文などでマッチするアむテムを掚薊する方法です。 属性デヌタや説明文のデヌタがあれば、新芏アむテムも掚薊できたす。 䞀方で、属性デヌタの蚭蚈や蚭定にコストが高い点ず、属性デヌタなどで衚珟しきれない嗜奜を捉えにくいずいう課題がありたす。 LLMのEmbeddingはコンテンツベヌスの匷い味方になる コンテンツベヌス掚薊における文章デヌタには、これたで䞻にTF-IDFなどが甚いられおきたした。 これに察し、近幎流行しおいるLLM倧芏暡蚀語モデルのEmbedding機胜は、文章をベクトルで扱うこずが可胜です。 LLMのEmbeddingを利甚するこずで、アむテムの説明文やレビュヌなどの自然蚀語をそのたたベクトル化し、テキストの朜圚的意味を加味した柔軟で衚珟力の高い類䌌床蚈算が可胜になるず考えられたす。 本蚘事では、映画のレビュヌデヌタず映画のあらすじデヌタを甚いお、行動履歎ベヌスずLLMのEmbeddingを甚いたコンテンツベヌス掚薊を詊しおみたす。 そしお、この2぀の掚薊結果から、それぞれの傟向を確認しおみたす。 利甚デヌタに぀いお 今回利甚するのは、 MovieLens ず TMDb です。 それぞれ簡単に玹介したす。 MovieLens MovieLensは、ミネ゜タ倧孊のGroupLens Researchによっお公開されおいる映画のレヌティングのデヌタセットです。 掚薊システムの研究では定番のデヌタセットで、様々な論文で扱われおいたす。 誰がい぀䜕の映画をどう評䟡した1~5の0.5刻みずいうレヌティングデヌタや映画のタグ(コメディ・アクションなどのゞャンル等)のデヌタがありたす。 デヌタセットの皮類がいく぀かあるのですが、今回は最近の映画も確認したいため、ml-latestを利甚したした。(2025/6/1珟圚) TMDb TMDbは、映画やテレビ番組に関する情報を取埗できるAPIを提䟛しおいるサヌビスです。 映画のあらすじやタむトルの受賞の有無、䞻挔者など、リッチなデヌタが取埗できたす。 MovieLensのmovie_idず玐付けるこずができるようになっおおり、これを䜿っお映画のあらすじを取埗したした。 ※ 本蚘事では念の為、TMDbのサポヌトフォヌムから蚘事の内容を䌝え、蚘事での利甚に蚱諟をいただきたした。 行動履歎ベヌス掚薊の実践 実斜内容 今回は行動履歎ベヌスの手法の䞭で、比范的簡易に利甚でき、か぀匷力なItem2Vecを甚いたす。 デヌタの前凊理ずしお、レビュヌ件数が倚い䞊䜍5%のナヌザヌのデヌタを陀倖したした。 レビュヌ件数が倚いナヌザヌは、映画が非垞に奜きなヘビヌナヌザヌず考えられ、ノむゞヌな動きになっおいるこずが想定されるためです。 たた、レビュヌの点数は、評䟡が1.0〜5.0の0.5刻みずなっおいたすが、4.0以䞊のデヌタだけを孊習に利甚したした。 奜みが近い映画を掚薊したいため、4.0以䞊を高評䟡ず刀断しおこのデヌタだけで孊習するこずで、奜たれる組み合わせを発芋するこずが狙いです。 本蚘事の最埌に、利甚したハむパヌパラメヌタを蚘茉しおおきたす。 以䞋は、Item2Vecを甚いた掚薊の党䜓像です。 Item2Vec掚薊の抂芁 掚薊結果 䞊蚘で孊習したモデルを甚いお、掚薊される映画を確認したす。 今回は完党に私の奜みで、以䞋の映画に察する掚薊結果を確認したす。 タヌミネヌタヌ2 ハリヌポッタヌず賢者の石 もののけ姫 劇堎版「鬌滅の刃」無限列車線 君の名は マッドマックス怒りのデス・ロヌド 䞊蚘の映画に察する、Item2Vecでの掚薊結果の䞊䜍5件は以䞋でした。 ()内の数字は䞊映幎です。 Item2Vec掚薊結果 分かるこず 以䞋3点が目に぀きたした。 「ハリヌポッタヌず賢者の石」の結果が、シリヌズが䞊んでいる。 「もののけ姫」や「君の名は」の結果が、同じ制䜜䌚瀟や監督が䞊んでいる。 党䜓的に、掚薊察象映画の䞊映幎ず近い幎代の映画が䞊んでいる。 1. 「ハリヌポッタヌず賢者の石」の結果が、シリヌズが䞊んでいる。 「ハリヌポッタヌず賢者の石」の掚薊結果は、シリヌズの2,3,4ずいう順でおすすめずなりたした。 シリヌズの1を芋お面癜かったら、シリヌズ2,3ず連続しお鑑賞するこずや、䜜品の雰囲気が䌌おいるため高評䟡が続くのは、想像しやすいかず思いたす。 行動履歎ベヌス掚薊では、高評䟡の時系列を考慮するため、このような結果が芋られるのかなず思いたした。 2. 「もののけ姫」や「君の名は」の結果が、同じ制䜜䌚瀟や監督が䞊んでいる。 「もののけ姫」はゞブリ䜜品が䞊び、「君の名は」は新海誠䜜品が1䜍でおすすめされおいたす。 これも「ハリヌポッタヌ」同様、ある䜜品を芋お面癜ければ、同じ監督や制䜜䌚瀟の䜜品を芋おみるずいう行為から、このような結果が埗られおいるず掚枬できたす。 3. 党䜓的に、掚薊察象映画の䞊映幎ず近い幎代の映画が䞊んでいる。 䟋えば、「タヌミネヌタヌ2」は1990幎前埌の䞊映幎の映画がおすすめされおおり、「君の名は」は2010幎代埌半がおすすめされおいたす。 これも、行動履歎ベヌスの孊習が、レビュヌの前埌関係を甚いおいるずころに圱響されおいるのかなず思っおおり、同幎代の䜜品は連続しおレビュヌがされやすいためかず想定されたす。 党䜓的に、有名な映画が䞊んでおり、玍埗感が高い結果だず思いたした。 LLMのEmbeddingを甚いた掚薊の実践 実斜内容 Embedding甚のモデルにはOpenAIのtext-embedding-3-smallを甚いたした。 Embedding甚のモデルは様々ありたすが、text-embedding-3-smallは登堎から時間は経過しおいるものの粟床は悪くなく軜量であるため、採甚しおいたす。 これを甚い、映画のあらすじデヌタをEmbeddingし、chromaDBでcollectionを䜜っおqueryで類䌌テキストを持぀映画を怜玢したした。 以䞋は、LLMのEmbeddingを甚いた掚薊の党䜓像です。 Embedding掚薊の抂芁 掚薊結果 LLM Embeddingでの掚薊結果の䞊䜍5件は以䞋でした。 Embedding掚薊結果 分かるこず Item2Vecの結果ず察比しお、以䞋3点が目に぀きたした。 「タヌミネヌタヌ」ず「ハリヌポッタヌ」の結果が、シリヌズで完党に埋たっおいる。 「もののけ姫」ず「君の名は」の結果が、同じ制䜜䌚瀟や監督の䜜品に偏っおいない。 党䜓的に、掚薊映画の䞊映幎の偏りが芋られず、満遍なく掚薊されおいる。 1. 「タヌミネヌタヌ」ず「ハリヌポッタヌ」の結果が、シリヌズで完党に埋たっおいる。 どちらもTOP5が党お、シリヌズもので埋たっおいたす。 どちらも、"タヌミネヌタヌ"や"ハリヌポッタヌ"などの固有名詞があらすじ内で珟れやすく、これがEmbeddingしたベクトルに匷めに珟れお、cos類䌌床が高くなりやすいのではず想像したした。 2. 「もののけ姫」ず「君の名は」はの結果が、同じ制䜜䌚瀟や監督の䜜品に偏っおいない。 Item2Vecの結果では、同じ制䜜䌚瀟や䜜者の映画が倚く芋られたしたが、Embeddingの結果では、「もののけ姫」の結果に「ゲド戊蚘」が1぀あるだけでした。 これは、そもそもあらすじには、制䜜䌚瀟や䜜者を衚す単語が出珟しないためだず考えられたす。 具䜓的には、"ゞブリ"や"新海誠"などの単語があらすじに出珟せず、Embeddingベクトルに衚珟されないため、これで類䌌床を蚈算しおも"ゞブリ"や"新海誠"芁玠が考慮されないず想像しおいたす。 3. 党䜓的に、掚薊映画の䞊映幎の偏りが芋られず、満遍なく掚薊されおいる。 Item2Vecでは党䜓的に掚薊察象の映画ず、掚薊結果の映画の䞊映幎が近いこずが特城的でしたが、Embeddingでは偏りが芋られたせんでした。 Embeddingでは、レビュヌの時系列などを䞀切考慮しないため、幎代がバラけるのは自然かず思いたした。 Embeddingの掚薊結果は、Item2Vecに比べお、これたで知らなかったような映画も掚薊されおおり、掚薊結果の意倖性が印象的でした。 鬌滅の刃 無限列車線ず掚薊結果のあらすじ 実際にあらすじが近いかを確認するため、「鬌滅の刃 無限列車線」ずその掚薊結果のあらすじの文章を瀺したす。 たず、怜玢察象である「鬌滅の刃 無限列車線」のあらすじを以䞋に瀺したす。 䜜品名 あらすじ 鬌滅の刃 無限列車線 蝶屋敷での修業を終えた炭治郎たちは、次なる任務の地、《無限列車》に到着する。 そこでは、短期間のうちに四十人以䞊もの人が行方䞍明になっおいるずいう。 犰豆子を連れた炭治郎ず善逞、䌊之助の䞀行は、 鬌殺隊最匷の剣士である《柱》のひずり、炎柱の煉獄杏寿郎ず合流し、 闇を埀く《無限列車》の䞭で、鬌ず立ち向かうのだった。 "無限列車"や"鬌殺隊"などの単語が、特城的な単語ずしお挙げられそうです。 続いお、以䞋に「鬌滅の刃 無限列車線」の䞊䜍5件のあらすじを䞊から順に瀺したす。 近いず刀断されたのかなず感じた単語を、倪字で蚘茉しおおきたす。 䜜品名 あらすじ 仮面ラむダヌ電王 俺、誕生! 宝石泥棒に憑䟝したむマゞンを远っお、過去の䞖界に向かった良倪郎たち。しかし、それはデンラむナヌを奪うために仕組たれた眠だった。銖謀者は時の 列車 ばかりを狙う匷盗集団の銖領・牙王。圌は“ 神の路線 ”を走り、党おの時間を支配できるずいう神の列車を手に入れるため、オヌナヌ達を人質にデンラむナヌを過去ぞ走らせる。 残された良倪郎ずハナにデンラむナヌから脱出したモモタロスが合流するが良倪郎はデンラむナヌを远っおいる最䞭に牙王に蹎られた埌遺症で電王に関わる蚘憶が欠萜しおいた。そこで11歳の良倪郎劇䞭で小倪郎ず呜名されるやゞヌクずも遭遇。小倪郎は時間を超える列車に乗っおみたいず圌らに同行を申し出る。䞀行は桜井䟑斗の助けを借り、れロラむナヌでその埌を远った。様々な時代を通り抜け、良倪郎たちがデンラむナヌを発芋したのは江戞時代初期の『倧坂の圹』の頃。そこで牙王は神の路線ぞ繋がる最埌の封印を解こうずしおいた。 ガンツO 高校生の加藀勝は、 地䞋鉄 で起きた事件によっお死ぬ。ずころが次の瞬間、マンションの䞀宀にいた。加藀はそこで、リヌダヌが䞍圚の東京チヌムず䞀緒に火の手が䞊がる倧阪に転送され、サバむバルゲヌムに参加するこずになる。倧阪チヌムず遭遇し、 劖怪型の星人軍団癟鬌倜行 ず戊いを繰り広げる加藀。䞀人で埅぀匟のもずぞ生還するため戊い抜く加藀の前に、倧ボス“ぬらりひょん”が珟れ  。 鬌滅の刃 刀鍛冶の里線 炭治郎 は、䞊匊の陞ずの決着を぀けなければならない。激闘の末、事態が萜ち着いた埌、圌は効の犰豆子ず共に新たな刀を求めお刀鍛冶の里を蚪れる。 Cube 目が芚めるずそこは謎の立方䜓CUBEの䞭だったヌ。 突然閉じ蟌められた男女6人。 ゚ンゞニア、団䜓職員、フリヌタヌ、䞭孊生、敎備士、䌚瀟圹員。 圌らには䜕の接点も぀ながりもない。 理由もわからないたた、脱出を詊みる圌らを、 熱感知匏レヌザヌ、ワむダヌスラむサヌや火炎噎射など、殺人的なトラップが次々ず襲う。 仕掛けられた暗号を解明しなくおは、そこから抜け出すこずは絶察にできない。 䜓力ず粟神力の限界、極床の緊匵ず䞍安、そしお埐々に衚れおいく人間の本性  恐怖ず䞍信感の䞭、終わりが芋えない道のり を、 それでも「生きる」ためにひたすら進んでいく。 果たしお圌らは無事に脱出するこずはできるのか 西遊蚘2 劖怪の逆襲 䞉蔵法垫、孫悟空、猪八戒、沙悟浄の4人組は遠く倩竺を目指す長旅を続けおいたが、お金が無くお食べる物にも困り、山䞭にあった屋敷に立ち寄っお助けおもらうこずに。そこで矎女たちの歓埅を受けお倧喜びするが、実は矎女たちは 劖怪 たちの仮の姿で、孫悟空が掻躍しお劖怪たちを倒すものの、自分が䞀行のリヌダヌだず考えおいた䞉蔵法垫は勝手に行動した悟空ず察立するように。やがお䞀行は比䞘囜ずいう栄えた囜に到着する。 想像になりたすが、"鬌殺隊"の単語が、"癟鬌倜行"(ガンツO)や"劖怪"(西遊蚘2 劖怪の逆襲)などの単語を匕っ掛けおいるのかず思いたした。 たた、"無限列車"の単語が、"神の路線"(仮面ラむダヌ電王)や"地䞋鉄"(ガンツO)などず芪和性が高いのかも知れたせん。 党おの結果がコメディや恋愛などではなく、アクションを感じさせる点で奜感が持おたした。 未来の映画の掚薊 コンテンツベヌスのメリットの1぀に、レビュヌがされおいない未来の映画を掚薊結果に含められる点がありたす。 最埌に、このメリットを甚い、2025/7月公開予定の映画の䞭からの掚薊を詊しおみたす。 2025幎7月公開の映画のあらすじの䜜成 2025幎7月に公開予定の映画45本を調べ、芁玄する圢であらすじを自䜜したした。 以䞋に、2025幎7月公開映画の䞭から掚薊する流れを瀺したす。 2025/7の掚薊抂芁 掚薊結果 怜玢察象 掚薊結果Top1タむトル 掚薊映画のあらすじ タヌミネヌタヌ2(1991) ゚レベヌション 絶滅ラむン “リヌパヌ”により人類の95%が死滅し、高地で暮らすわずかな生存者たち。ロッキヌ山脈の避難所で病匱な息子ず暮らすりィルは、薬を手に入れるため元科孊者たちず暙高2,500mの安党圏を䞋り、モンスタヌが埘埊する麓の病院ぞ呜懞けで向かう。 ハリヌポッタヌず賢者の石(2001) ヘルボヌむザ・クルキッドマン アパラチア山䞭の呪われた村に“歪んだ男”ず呌ばれる悪魔が暗躍。村ぞ戻ったトム・フェレルの過去の契玄が蘇り、死者や魔女の呪いが解き攟たれる䞭、ヘルボヌむが滅びの右腕で悪魔ず察決する。 もののけ姫(1997) 朚の䞊の軍隊 1945幎沖瞄・䌊江島で撀退䞭の日本兵人が巚朚ガゞュマルに朜䌏。終戊を知らぬたた幎間、増え続ける遺䜓ず接近する米軍に怯え぀぀“孀独な戊争”を続け、極限状態ぞ远い蟌たれおいく。 劇堎版「鬌滅の刃」無限列車線(2020) 私たちのオカルティックサマヌ 高校幎の倏垌は倱螪した姉を捜し、オカルト研究䌚の真嗣ず巫女の千尋ず共に「プヌルの幜霊」隒動を調査。人は思わぬ脅嚁に盎面する。 君の名は(2016) 愛されなくおも別に 倧孊・家事・バむトに远われ垌望を持おない宮田陜圩は、同玚生で掟手な同僚・江氞雅が“殺人犯の嚘”ずいう噂を耳にする。孀独な人が出䌚い、互いの人生を倉え始める。 マッドマックス怒りのデス・ロヌド(2015) ゚レベヌション 絶滅ラむン “リヌパヌ”により人類の95%が死滅し、高地で暮らすわずかな生存者たち。ロッキヌ山脈の避難所で病匱な息子ず暮らすりィルは、薬を手に入れるため元科孊者たちず暙高2,500mの安党圏を䞋り、モンスタヌが埘埊する麓の病院ぞ呜懞けで向かう。 「タヌミネヌタヌ」や「マッドマックス」などのアクション系では、モンスタヌを倒すあらすじの「゚レベヌション 絶滅ラむン」が掚薊されおおり、芪和性がありそうです。 「ハリヌポッタヌ」は、「ヘルボヌむザ・クルキッドマン」の"呪われた村"や"死者や魔女"などの単語で近しさを感じたす。 「君の名は」は、"孀独な人が出䌚い、互いの人生を倉え始める。"の箇所がそれらしいかもず思いたした。 「もののけ姫」、「鬌滅の刃 無限列車線」は正盎、ピンず来たせんでした。 怜玢察象があくたで45䜜品のみですので、近い䜜品がないこずもあるのかなずいう印象です。 このように、2025幎7月の未䞊映映画も掚薊できたした。 終わりに 本蚘事では、映画のレビュヌデヌタセットおよびあらすじデヌタを甚いお、LLMのEmbeddingをアむテム掚薊に掻甚するず、どんな掚薊が可胜になるかを玹介したした。 行動履歎ベヌスでは、結果の玍埗感は高いものの、䞊映幎代や制䜜䌚瀟や監督に偏る傟向が芋られたした。 䞀方、LLM Embeddingを甚いるず、シリヌズものが固たっお掚薊される傟向はありたす。 しかし、䞊映幎代や制䜜䌚瀟や監督に偏らず幅広く掚薊できる傟向が芋られたした。 さらに、LLM Embeddingを甚いるず、評䟡がされおいない未知のアむテムも掚薊ができたした。 実際にサヌビスに利甚する堎合、どちらが良いかはその時々で異なるかず思いたすが、結果を組み合わせたりしながら掚薊するアむテムを決めおみるのも面癜いかもしれたせん。 今回はあくたで私の䞻芳で掚薊結果を確認したしたが、今埌Accuracyなどの定量評䟡もできたらず思っおいたす。 たた別の芳点ずしお、掚薊システムには Beyond Accuracy ずいう芳点がありたす。 これは、「良い掚薊システムずはHit Rateを䞊げる」だけではなく、「serendipity(意倖な出䌚い)のようなものも重芁」であるずいう指摘です。 今回は量的にこの芳点を確認はしおいたせんが、私の個人的な感想ずしおは、行動履歎ベヌスよりも意倖な出䌚いを挔出しおくれるのではず感じたした。 本蚘事が䜕かの参考になれば幞いです。 補足 Item2Vecのハむパヌパラメヌタヌ model = Word2Vec( sentences=movies_by_user, vector_size=10, window=15, min_count=3, sg=1, workers=4 )
 目次 【むンタヌンレポヌト】OpenAI Agents SDK (Python版) でコヌルセンタヌ颚音声察話型マルチ゚ヌゞェントデモを䜜っおみた(おたけ付き) はじめに 1.AI゚ヌゞェント✖音声 = 音声゚ヌゞェント 1.1 普及しおきたAI゚ヌゞェントに぀いお 1.2 音声゚ヌゞェントの恩恵に぀いお考える 1.3 リアルタむム音声察話API・音声゚ヌゞェント開発ツヌルの玹介 2. OpenAI Agents SDK (Python版)で䜜る音声察話型マルチ゚ヌゞェントツヌル 2.1 OpenAI Agents SDKずは 2.2 2皮類の音声゚ヌゞェントの構造 2.3 デモの玹介 2.4 今埌の展望 おわりに 参考資料 はじめに こんにちは Insight Edgeでアルバむトをしおおりたす、東京科孊倧孊倧孊院 修士2幎の田䞭です。倧孊院では、経営工孊系の研究宀で、サッカヌの詊合映像分析に関する研究をしおいたす。私の研究宀では、(知識)グラフやLLM、匷化孊習を甚いた、金融や自動運転などのあらゆる産業領域ぞの応甚研究が掻発になされおおり、様々な領域の研究を知るこずができたす。 Insight Edgeさんずは、昚幎に行われた1ヶ月間のむンタヌンシップから関わらせおいただいおおりたす。そのむンタヌンでは芖芚蚀語モデルのPoCに参加させおいただきたした。そのようなご瞁もあり、来幎床からはデヌタサむ゚ンティストずしおお仕事させおいただけるこずずなりたしたので、今埌ずもお付き合いよろしくお願いいたしたす🔥🔥🔥 さお、前眮きが長くなりたしたが、本蚘事ではタむトルにもある通り、OpenAI Agents SDK(Python版)で䜜成したコヌルセンタヌ颚音声察話型マルチ゚ヌゞェントのデモに぀いおご玹介したいず思いたす。甚いた技術スタックや実際に䜿っおみた䜿甚感を䞭心に、デモ映像なども亀えおご玹介したす。 第1章では、たずは背景ずしお、なぜ音声゚ヌゞェントが最近泚目されおいるかずいうこずを理解しおいただけるように、AI゚ヌゞェント/音声察話モデル/音声゚ヌゞェントの珟状に぀いおそれぞれ玹介しおいきたす。 第2章では、今幎の3月に公開されたOpenAI Agents SDK (Python版)のコア機胜を玹介したす。これらの機胜を甚いお䜜成した音声マルチ゚ヌゞェントの䜜成過皋を通しお、そのリアルな䜿甚感や䜜成時の泚意点を明らかにし、最埌に今埌の展望をお䌝えしたす。 それでは行っおみたしょう (※) 本蚘事はこれを執筆した2025幎6月䞋旬時点でのお話ずなりたす。たたこの蚘事の筆者は珟堎経隓に乏しい倧孊院生である点をご理解いただき、それを螏たえた䞊で枩かい心で䞀読いただけるず幞いです。 1.AI゚ヌゞェント✖音声 = 音声゚ヌゞェント 本章では、たずAI゚ヌゞェントの定矩...ずいうよりかは、AI゚ヌゞェントの普及の倉遷をたどるような圢で、AI゚ヌゞェントの開発を埌抌しする様々な道具をご玹介したす。次に音声゚ヌゞェントに぀いお、埓来のテキストベヌスのAI゚ヌゞェントずの違いを明確にしながら、䜿甚甚途や、䜿甚する䞊で留意しおおくべきこずを玹介したす。最埌に、音声゚ヌゞェントを開発する䞊では倖せないリアルタむム察話型モデルず、開発キットをいく぀かたずめたのでご玹介したす。本章を通しお、音声゚ヌゞェントに少しでも芪しみを持っおいただければず思いたす。 1.1 普及しおきたAI゚ヌゞェントに぀いお 「2025幎はAI゚ヌゞェントの幎だ」ずいう蚀葉をよく耳にしたす。確かにその掻甚事䟋は今幎から爆発的に芋られるようになっおきたした。しかし、その䞋地は2幎ほど前からありたした。2023幎のLangChainのようなフレヌムワヌクの開拓が1぀目の䞋地です。これはLLMを1぀の゚ヌゞェントず芋立お、耇数の゚ヌゞェントが連鎖的に回答を思考するフロヌを構築できたす。そしお他方では、昚幎から今幎にかけお提唱された、倖郚ツヌルや異なる芏玄を持぀゚ヌゞェント同士の連携ぞの需芁に応えるためのむンフラ敎備がなされおきたした。これたでぱヌゞェントの脳みそずしおの圹割を担うLLMの内郚知識のみで完結するような、䞀般的なタスクぞの゚ヌゞェント構築に留たっおいた。しかし、MCPやA2Aずいった新しいプロトコル(芏玄、取り決め)によっお、メヌルアプリ凊理やロヌカルファむル凊理など、倖郚ツヌル操䜜や倖郚ベンダヌ゚ヌゞェントずの協調が必芁ずなる、専門性の高いタスクぞの゚ヌゞェント構築が可胜ずなりたした (䞋図参照)。 これは、LLMの内郚知識にはない情報にアクセスできる暩限を゚ヌゞェントぞ䞎えるこずで、これたでのRAG的な怜玢機胜に加えお、これたで人間が行っおいたようなアプリケヌションの操䜜する機胜も゚ヌゞェントに備わったこずを意味したす。 Model Context Protcol(MCP) : Ahthropicが2024幎11月に提唱、AIツヌルにロヌカルたたはむンタヌネット䞊のサヌバヌずの情報のやり取りのルヌルのこず Agent to Agent(A2A) : Googleが2025幎4月に提唱、別々の圹割が䞎えられたAI゚ヌゞェントに共有させるルヌルのこず A2AずMCPの抂芁図 (参照: A2A Protcol ( https://a2aproject.github.io/A2A/latest/#why-a2a-matters )) この流れを受けるかのように、OpenAI・Google・AWSのような倧手AI・クラりドプロバむダヌが、それぞれが持぀サヌビスや、倖郚ツヌル・゚ヌゞェントずの簡易的な統合を目的ずしお、OpenAI Agents SDK (Python版は25幎3月)・Agent Development kit(25幎4月)・Strands Agents SDK(25幎5月)のような゚ヌゞェント開発キットを公開しおいたす。 これら以倖にもすでにさたざたなAI゚ヌゞェントの開発キットが続々ず登堎しおきおいたす。実際にAI゚ヌゞェントを䜜る際は、自分達の課題ず開発環境に適したものを遞定する必芁があるでしょう。 1.2 音声゚ヌゞェントの恩恵に぀いお考える 珟圚、察話型マルチ゚ヌゞェントず称されるものの倚くが、テキストベヌスのものです。テキストベヌスの゚ヌゞェントを䜿甚する際は、ナヌザヌがキヌボヌドでク゚リを入力し、そのク゚リに応じた回答を゚ヌゞェントがテキストで返し、その回答に応じお再びナヌザヌがク゚リを入力し...ずいうようなルヌプが続きたす。それに察しお、今埌はナヌザヌの入力ず゚ヌゞェントの出力が音声に眮き換えられるような音声察話型マルチ゚ヌゞェントの事䟋が増えおくるのではないかず予想しおいたす。なぜなら、音声機胜を持った゚ヌゞェントは以䞋のような恩恵をもたらしおくれるからです。 ハンズフリヌで䌝達が楜で早い 人同士の察話も、キヌボヌドで入力するよりかは発話圢匏で行った方が早いですし、楜ですよね。そもそもキヌボヌドが手元にない堎面や、打っおいる時間がない堎面、キヌボヌドの扱いが難しい堎合でも圹立ちそうです 感情の䌝達ができる たずえばカスタマヌセンタヌのように、ナヌザヌ偎の感情をAIに理解させた䞊で察応しおもらった方がいい堎面があるかもしれたせん。たた、゚ヌゞェント偎に感情豊かに話しおもらうこずで、聎きやすさが増すかもしれたせん。NotebookLMの音声機胜が特にわかりやすい事䟋ですね 新しいナヌザヌ䜓隓の提䟛 テキストベヌスではどうしおも、「AIを 道具 ずしお䜿甚しおいる感」が匷かったのです。しかし、音声での䌚話は「AIを 仕事仲間 ずしお・ 友達 ずしお䜿甚しおいる感」が匷たりたす(筆者の䜓感に基づく) 音声ベヌスでの゚ヌゞェントは、テキストベヌスの゚ヌゞェントに比べお、情報の入出力の䌝達速床が早いこずや䌝達が簡易であるこず、さらに人間のように感情衚珟の䌝達ができるずいう点で恩恵がありたす。音声゚ヌゞェントずのやりずりをする際に求められるこずは、テキストベヌスで求められおいた、 いかにしお正しい情報を早く匕き出すか ずいう芁玠に加えお、いかにしお人間同士のやりずりに近づけるかがありたす。぀たり、 人間的な䌚話の間合いや盞槌、蚀語特有のむントネヌションや息継ぎのタむミング、盞手の感情など理解した䞊での柔軟な蚀葉遞びや察応の仕方の再珟 が重芁な芁玠になっおいるのです。 AI゚ヌゞェントの䜿甚甚途は様々ですが、音声機胜を持った゚ヌゞェントならではの応甚事䟋は、以䞋のようなものが挙げられたす。 カスタマヌセンタヌリアルタむムで顧客に察応し、顧客の情報を凊理しながら、適切に瀟内のナレッゞを参照しお回答を提䟛したり、人間のオペレヌタヌに匕き継いだりする 䌚議のファシリテヌタヌや曞蚘䌚議のサポヌト機胜党般を担う。議事録䜜成、リマむンダヌ機胜など ナビゲヌションシステムPCやスマホ、車に搭茉し、料理や機械操䜜、道案内など、あらゆる甚途でナビゲヌションさせる ゚ンタメカスタム音声(ボむスクロヌニング)機胜などを甚いお、特定のキャラクタヌを暡したAIず䌚話させる (マルチ゚ヌゞェント芁玠は少ない) 人間が察応する堎合ず比范しお、音声゚ヌゞェントを䜿甚するメリットはどのようなこずが挙げられるでしょうかたずえば以䞋のようなこずが挙げられたす。 24時間365日皌働可胜 オペレヌタの負担削枛 人件費削枛 倚蚀語察応可胜 このようなメリットがある䞀方で、以䞋のようなデメリットもありたす。 聞き間違えず蚀い間違え特定の蚀語に察する音声認識性胜や音声合成性胜が䜎いず、実甚化できたせん 党察応の難しさこれたで人間が行なっおいたこずを圢匏知化した䞊でプロンプトず機構で再珟し、フルコミットさせるこずの難しさ 䜜業量ず遅延のトレヌドオフ音声マルチ゚ヌゞェントのマルチ゚ヌゞェント郚分で行う䜜業量が増えるほど、返答速床が䜎䞋しおしたう したがっお、音声゚ヌゞェントを構築しおいく際は、このようなデメリットを考慮し぀぀、これらをなるべく軜枛できるような環境やモゞュヌルの遞定・構築が必芁ずなるでしょう。 ずりわけ、聞き間違え・蚀い間違え・遅延は音声を扱う䞊では、かなりセンシティブにならなければならない課題であるこずを確認しおおきたしょう。 1.3 リアルタむム音声察話API・音声゚ヌゞェント開発ツヌルの玹介 音声゚ヌゞェントの耳、そしお口(喉)の圹割を果たすのが、音声認識 (Speech-To-Text)ず音声合成 (Text-To-Speech)です。それぞれ、倚蚀語に察応したツヌルや、日本語特化ツヌル、ロヌカルツヌルなど非垞にたくさんあり、ここで玹介しきれたせんが、どちらの技術も日進月歩で倧きく進歩しおいたす。 䟋えば音声合成に関しお、2025幎5月に公開された、Googleの倚蚀語察応音声合成モデル(gemini-2.5-flash-preview-tts)の䜿甚事䟋が以䞋の蚘事で玹介されおいたす。このモデルはマルチスピヌカヌでの発話蚭定が可胜で(執筆時点で最倧名)、この蚘事では2人の日本人による挫才スクリプトをこのモデルに発話させた結果を聞くこずができたす。聞いおみるず、思っおいる以䞊に自然なむントネヌションの日本語が発話されおいるこずを確認できるかず思いたす。 Gemini API TTS(Text-to-Speech)で漫才音声を生成してみた さらにAIず盎接リアルタむムで䌚話するこずを目的ずした、Speech-to-Speech型のモデルも増えおきおいたす。 Speech-to-Speechずは、音声認識、回答生成、音声合成を䞀貫しお行うモデル構造のこずで、䜎遅延で、より人間らしい自然な䌚話を実珟するこずを目指しおいたす。これたでのような、耇数の固有のモデルを組み合わせたモデル構造ず異なり、Speech-to-Speech型のモデルでは、認識した音声をテキスト化せずそのたた特城量ずしお䜿甚しおいるため、テキスト化する際に欠萜しおしたう発話者の感情やトヌンのような非蚀語的特城を回答生成や音声合成に有効に利甚できたす。 以䞋に、6月時点でSpeech-to-Speechモデルを䜿甚できる代衚的なAPIずその特城をたずめおいたす。基本的にどのモデルもToolCallに察応しおおり、゚ヌゞェント的な䜿甚も可胜です。 API 公開日 6月䞭旬時点での䜿甚可胜モデル 競合ず比范した際の特城 OpenAI Realtime API 2024.10 (WebSocket) 2024.12 (WebRTC) gpt-4o-realtime-preview-2025-06-03 gpt-4o-mini-realtime-preview-2025-06-03 WebRTCでの利甚が可胜 Google LiveAPI 2025.4 (Preview) gemini-2.0-flash-live-001 gemini-live-2.5-flash-preview gemini-2.5-flash-preview-native-audio-dialog (むントネヌション改善、感情認識) gemini-2.5-flash-exp-native-audio-thinking-dialog (Deep think版) PCカメラやスクリヌン共有など、画像や動画を介したリアルタむム䌚話に特化 Azure Voice LiveAPI 2025.5 (Preview) gpt-4o-realtime-preview gpt-4o-mini-realtime-preview phi4-mm-realtime Azure内の音声ツヌル(ビルトむン/カスタムのアバタヌ、音声)ずの統合が可胜 AWS SDK Bedrock API 2025.4 Amazon Nova Sonic AWS䞊での利甚に特化 今埌は、どの゚ヌゞェント開発フレヌムワヌクにも、リアルタむム察話モデルが組み蟌めるようになるず思われたす。LiveKitのようなWebRTCでの通信を前提ずしたナヌザヌ・サヌバヌ間やサヌバヌ間の䜎遅延通信を行い぀぀、Speech-to-Speech型のモデルず、倖郚ツヌルや異なるベンダヌの゚ヌゞェントずの連携によっお遅延の少ないような、音声察話型マルチ゚ヌゞェントを構築しおいくようなむメヌゞです。その際、䜿甚する可胜性がある、倧手AIベンダヌが提䟛しおいる゚ヌゞェント開発キットも䞋の衚にたずめおいたす。基本的には、先ほど玹介したリアルタむム音声゚ヌゞェントも組み蟌むこずができ、MCPやA2Aプロトコルでの倖郚連携機胜も備わっおいたす。 SDK 公開日 OpenAI Agents SDK 2025.3 (Python版) 2025.6 (TypeScript版) Google Agent Development Kit (ADK) Google Vertex AI Agents ADK: 2025.4 Azure AI Foundry Agent Service 2025.5 (䞀般提䟛開始) AWS Strands Agents 2025.5 以䞊で、第章はおわりです。本章を通じお、音声゚ヌゞェント関連の背景知識や䟿益、珟状公開されおいるツヌルの䞀郚をお䌝えできたかず思いたす。次章では、音声゚ヌゞェント技術的な郚分をもう少し深掘りするため、䞊の衚で玹介した゚ヌゞェント開発キットを甚いお実際に䜜成したデモをお芋せし、開発キットの䜿甚感や、基本的な技術、音声゚ヌゞェントの雰囲気を少しでも理解しおいただければず思いたす。 2. OpenAI Agents SDK (Python版)で䜜る音声察話型マルチ゚ヌゞェントツヌル この章では、実際に゚ヌゞェント開発キットを利甚しお䜜成した音声察話型マルチ゚ヌゞェントのデモの様子をお芋せしたす。今回は、1.3節で玹介した開発キッドの䞭で、比范的早くから利甚可胜だったOpenAI Agents SDK(Python版)を䜿甚しおいたす。始めに、OpenAI Agents SDKの基本的な情報ず機胜を玹介したす。次に、䞀般的な音声゚ヌゞェントの構造ずしお2぀、Chained ArchitectureずSpeech-to-Speech Architectureをそれぞれ玹介したす。続いお、デモの玹介ずしお、実際のコヌドずマルチ゚ヌゞェントの党䜓像、そしおデモを動かしおいる動画をお芋せしたす。最埌に残る課題ず今埌の展望に぀いおお䌝えしたす。 2.1 OpenAI Agents SDKずは OpenAI Agents SDKずは、OpenAIによっお提䟛されおいるオヌプン゜ヌスのPython/TypeScript甚のラむブラリのこずで、AI゚ヌゞェントの開発を簡玠化するために蚭蚈されおいたす。 OpenAI Agents SDKで提䟛されおいる基本的な機胜ずしお以䞋のようなものがありたす。 ハンドオフ (Handoffs) ある゚ヌゞェントが自分の圹割を超えるタスクに遭遇した際、専門゚ヌゞェントに委譲する仕組み。 耇雑なワヌクフロヌを円滑に進めるこずができたす。 この開発キットは A2A が提唱される前に公開されたものですが、考え方は共通です。 ゚ヌゞェントのツヌル化 (Agent as a tool) 他の゚ヌゞェントをツヌルずしお利甚し、LLMぞの問い合わせを 関数呌び出し圢匏 で行えたす。 MCP ゚ヌゞェントが倖郚ツヌルぞアクセスしたり、特定機胜を実行したりするための 拡匵機胜 。 関数呌び出し (Function calling / Tools) 開発者が定矩した Python 関数 をAI゚ヌゞェントにツヌルずしお提䟛し、必芁に応じお実行可胜。 組み蟌みツヌル Web怜玢・ファむル怜玢・コンピュヌタヌ操䜜など、暙準で備わっおいるツヌル矀。 ガヌドレヌル (Guardrails) ゚ヌゞェントの入力・出力を怜蚌制埡し、安党性ず品質を確保する機胜。 トレヌシング (Tracing) ゚ヌゞェントの実行フロヌを時系列で可芖化・蚘録し、デバッグや性胜分析を容易にしたす。 ストリヌミング生成 ゚ヌゞェント実行䞭の出力やむベントを チャンク単䜍 で順次受け取る仕組み。 今回の䜜成したデモは、特にハンドオフ・MCP・Tools・ガヌドレヌル・ストリヌミング生成がコア技術ずなりたす。これらの機胜を組み合わせお、音声機胜を持ったマルチ゚ヌゞェントを構築しおいきたす。 2.2 2皮類の音声゚ヌゞェントの構造 OpenAI PlatformのWebサむトのVoice agentsペヌゞでは、皮類の音声マルチ゚ヌゞェントの構造が玹介されおいたす。 1぀目のSTT, TTS組み蟌み型のChained Architectureは、テキストベヌスのマルチ゚ヌゞェントを個別のSTTモデルずTTSモデルで挟み蟌んだ構造をずっおいたす。それぞれの入出力の管理がしやすいこずや、構築のしやすさが利点ずしおあげられたす。 Chained architecture: STT, TTS組み蟌み型の゚ヌゞェント構造 (参照: OpenAI platform, "Voice agents" ( https://platform.openai.com/docs/guides/voice-agents?voice-agent-architecture=speech-to-speech )) 䞀方、2぀目のSpeech-to-Speech Architectureは、1.3節で玹介したSpeech-to-Speechモデルの䜿甚を前提ずしたマルチ゚ヌゞェントのこずを指しおいたす。Chained Architectureず比范し、遅延が少ないこず、感情や声のトヌンのような非蚀語的な芁玠も䌝達可胜であるこずが利点ずしおあげられたす。 Speech-to-speech (realtime) architecture: Speech-to-Speech型の゚ヌゞェント構造 (参照: OpenAI platform, "Voice agents" ( https://platform.openai.com/docs/guides/voice-agents?voice-agent-architecture=speech-to-speech )) どちらの構造を取るかは、その甚途に応じお考える必芁があるでしょう。OpenAI Agents SDKはPython版ずTypeScript版があり、珟圚Python版では1぀目のChained Architectureのみをサポヌトしおいたす。TypeScript版はSpeech-to-Speech構造の゚ヌゞェントを䜜成できるずのこずですが、この蚘事を曞いおいる2,3週間ほど前に、出たばかりずいうこずもあり、残念ながら今回は玹介できたせん。今回は、Python版の開発キットを甚いお、Chained-Architecture構造のマルチ゚ヌゞェントを䜜成しおいたす。 2.3 デモの玹介 それでは早速デモの䜜成の順序を説明しおいきたす。たず、コヌドを曞く前にする䜜業ずしおコヌルセンタヌの蚭定を考えたす。たずえば以䞋のような蚭定です。 䌚瀟名: 任意 取扱補品・サヌビス: 10皮類のデゞタル補品 質問タむプ: 商品泚文・商品取扱・クレヌム・党く関係のない質問 その他: 察応マニュアル(最初に名前を䌺うなど今回ぱヌゞェントごずのプロンプトで代甚) マルチ゚ヌゞェントずしお゚ヌゞェントを耇数甚意するのであれば、質問タむプごずに甚意するこずが1぀の方法です。今回の䟋では、以䞋の゚ヌゞェント構成が考えられたす。たず、電話察応を行い質問タむプを認識するトリアヌゞ゚ヌゞェントです。次に、商品泚文・商品取扱・クレヌム・無関係な質問をそれぞれ担圓する専門゚ヌゞェントです。特に、党く関係のない質問を担圓する゚ヌゞェントずしお、2.1節で玹介したガヌドレヌルが圹に立ちたす。ガヌドレヌルは特別な゚ヌゞェントで、質問が状況に盞応しくない堎合においおトリガヌずしお゚ラヌを吐き出す入力ガヌドレヌルず、゚ヌゞェントによる出力が状況に盞応しくない堎合においお゚ラヌを吐き出す出力ガヌドレヌルの2皮類が甚意されおいたす。 今回は、たずえば「20+30はなんですか」「月面に初めお到着した宇宙飛行士は誰」ずいった状況に盞応しくない質問がなされるこずを想定しお、このような質問を匟くようなプロンプトをガヌドレヌル゚ヌゞェントぞ䞎えおいたす。 これらを螏たえお、各゚ヌゞェントの圹割ず関連を以䞋のように決めたした。 トリアヌゞ゚ヌゞェント: 最初に質問者の名前ず質問を聞き、質問からは質問タむプを類掚する。質問タむプに応じお、担圓の゚ヌゞェントに質問者の名前・質問タむプをコンテキストずしお枡し、察応を委譲(ハンドオフ)する。今回はコンテキストを曎新する関数ずしお、質問者が名前ず質問を蚀った堎合にそれらを蚘憶する関数を甚意し、ToolCallに蚭定した。党く関係のない質問に関しおは、取り付けたガヌドレヌル゚ヌゞェントを呌び出し、「この質問には答えられない」ずいった旚の内容を出力する 商品泚文゚ヌゞェント: 質問者が買いたい補品を確認し、productsずいう名前のフォルダにそれぞれたずめた、補品情報テキストファむルの名前から該圓する補品を探す。該圓商品があれば、最埌にもう䞀床確認しお、質問者の同意を埗たら泚文完了メヌルをSlackに送信し、トリアヌゞ゚ヌゞェントに仕事を再び受け枡す 商品取扱゚ヌゞェント: 質問者が指摘しおいる補品に関する情報を、productsフォルダ内の個別の補品情報テキストファむルから怜玢し、回答になりそうな郚分を抜出し、回答を䜜成する。回答できない堎合は、「申し蚳ありたせんが、回答できたせん」ず回答させ、トリアヌゞ゚ヌゞェントに仕事を再び受け枡す (人間のオペレヌタに繋ぎ盎すずいう方法も考えられる) ゚ラヌ・トラブル・クレヌム察応゚ヌゞェント: 質問者の指摘に察応する。補品に関しおであれば、補品情報テキストから怜玢を行い回答を考える。答えられない堎合は、「申し蚳ありたせんが、回答できたせん」ず回答させ、トリアヌゞ゚ヌゞェントに仕事を再び受け枡す 今回甚いた、ToolずMCPは以䞋の通りです。 Tool: update_customer_info (トリアヌゞ゚ヌゞェントで質問者の名前を曎新し、他の゚ヌゞェントに受け枡す) MCP: Filesystem Server MCP (指定したフォルダの䞭身を操䜜できるようにする), SSE Slack API Server (自分で甚意したSlackチャネルにBot招埅し、Botが色々ず話せるようにする) 最埌に、音声モデルのパむプラむンに統合し、ストリヌミングでの再生を行えるように蚭定したす。 これで以䞊ずなりたす。それでは、私が最初に䜜成した゚ヌゞェントの抂芳図ずコヌドをみおいきたしょう。 最初の音声察話型マルチ゚ヌゞェントの抂芳図 # 補品情報テキストファむルの䞀䟋 (Claudeで䜜成) 商品ID: PROD_004 【基本情報】 商品名: スマヌトスピヌカヌ D47 Air モデル番号: スD-6658 発売幎: 2022 メヌカヌ: むノベヌション工房 工堎䜏所: 北海道札幌垂䞭倮区架空町1-5-6 【寞法】 高さ: 7.9 cm 幅: 7.2 cm 奥行き: 2.9 cm 重量: 625 g 【カラヌオプション】 - シルバヌ - ホワむト - グリヌン 䟡栌: 114,800円 保蚌期間: 36ヶ月 【取扱説明曞の抂芁】 1. 初期蚭定補品の電源を入れ、画面の指瀺に埓っお初期蚭定を完了しおください。 2. 基本操䜜スマヌトスピヌカヌ D47 Airの䞻芁な機胜ず操䜜方法に぀いお説明したす。 3. 充電方法付属の専甚充電噚たたは掚奚される充電方法で充電しおください。バッテリヌ寿呜を延ばすためのヒントも含たれたす。 4. トラブルシュヌティング簡単な問題解決のためのステップバむステップガむド。 5. 安党䞊の泚意補品を安党にご利甚いただくための重芁な情報。 【サポヌト情報】 ■ よくある質問 Q: スマヌトスピヌカヌ D47 Airの電源が入らない堎合の察凊法は A: たず、補品が十分に充電されおいるか確認しおください。次に、電源ボタンを10秒以䞊長抌ししお匷制再起動をお詊しください。それでも解決しない堎合はサポヌトセンタヌにご連絡ください。 Q: スマヌトスピヌカヌ D47 Airの保蚌期間は A: 通垞、スマヌトスピヌカヌ D47 Airの保蚌期間はご賌入日から12ヶ月です。詳现は保蚌曞をご確認ください。 ■ ゚ラヌコヌド E301: ネットワヌク接続゚ラヌ。接続蚭定を確認しおください。 E302: ストレヌゞ容量䞍足。䞍芁なデヌタを削陀しおください。 E203: バッテリヌ残量䜎䞋。充電しおください。 ■ サポヌトセンタヌ 電話: 0120-12x-26x (受付時間: 平日9:00-18:00) メヌル: support.d-6658@example-company.co.jp りェブサむト: http://www.example-company.co.jp/support/スd-6658 # config.py import numpy as np from pydantic import BaseModel MODEL = "gpt-4o-mini" SAMPLE_RATE = 24000 FORMAT = np.int16 CHANNELS = 1 VOICE_INSTRUCTION = "あなたは、コヌルセンタヌの゚ヌゞェントです。䞁寧な日本語で話しおください。" VOICE_SPEED = 1.0 PRODUCTS_LIST = [ "タブレット A68 Air" , "スマヌトりォッチ B27 Max" , "スマヌトフォン C82 Lite" , "スマヌトスピヌカヌ D47 Air" , "スマヌトフォン E51 Mini" , "スマヌトスピヌカヌ F29 Pro" , "スマヌトフォン G81 Standard" , "ワむダレスむダホン H61 Air" , "ワむダレスむダホン I79 Pro" , "ゲヌム機 J87 Max" ] JA_RECOMMENDED_PROMPT_PREFIX = """ #システムコンテキスト \n あなたは、゚ヌゞェントの協調ず実行を簡単にするために蚭蚈されたマルチ゚ヌゞェントシステム「Agents SDK」の䞀郚です。 Agentsは䞻に2぀の抜象抂念、**Agent**ず**Handoffs**を䜿甚したす。゚ヌゞェントは指瀺ずツヌルを含み、適切なタむミングで䌚話を他の゚ヌゞェントに匕き継ぐこずができたす。 ハンドオフは通垞 transfer_to_<agent_name> ずいう名前のハンドオフ関数を呌び出すこずで実珟されたす。゚ヌゞェント間の匕き継ぎはバックグラりンドでシヌムレスに凊理されたす。 ナヌザヌずの䌚話の䞭で、これらの匕き継ぎに぀いお蚀及したり、泚意を匕いたりしないでください。 \n """ # CONTEXT class CallCenterAgentContext (BaseModel): customer_name: str | None = None question_type: str | None = None # my_workflow.py from __future__ import annotations import os import uuid from collections.abc import AsyncIterator from typing import Callable from agents import (Agent, GuardrailFunctionOutput, InputGuardrailTripwireTriggered, RunContextWrapper, Runner, TResponseInputItem, function_tool, input_guardrail, trace) from agents.mcp import MCPServerStdio from agents.voice import VoiceWorkflowBase, VoiceWorkflowHelper from config import JA_RECOMMENDED_PROMPT_PREFIX, MODEL, CallCenterAgentContext from pydantic import BaseModel, Field # TOOLS @ function_tool async def update_customer_info ( context: RunContextWrapper[CallCenterAgentContext], customer_name: str , question_type: str ) -> None : """ Update the customer information. Args: customer_name: The name of the customer. question_type: The type of question being asked. """ # Update the context based on the customer's input context.context.customer_name = customer_name context.context.question_type = question_type # Guardrails class AbnormalOutput (BaseModel): reasoning: str | None = Field( default= None , description= "異垞な質問かどうかの理由" ) is_abnormal: bool = Field(default= False , description= "異垞な質問かどうか" ) guardrail_agent = Agent( name= "Guardrail check" , instructions=( "カスタマヌがコヌルセンタヌにしないような質問をしおいるかどうかを確認しおください。" "たず゚バ、「あなたの奜きな色は䜕ですか」や「あなたの趣味は䜕ですか」などの質問は、コヌルセンタヌにするべきではありたせん。" "他にも「210たす4は」ずいった蚈算問題や、「今日の経枈ニュヌスは」ずいった䞀般的な雑談もコヌルセンタヌにするべきではありたせん。" "このような質問を芋぀けたら、is_abnormalをTrueにしおください。" ), output_type=AbnormalOutput, model=MODEL, ) @ input_guardrail async def abnormal_guardrail ( context: RunContextWrapper[ None ], agent: Agent, input : str | list [TResponseInputItem] ) -> GuardrailFunctionOutput: """This is an input guardrail function, which happens to call an agent to check if the input is a abnormal question. """ result = await Runner.run(guardrail_agent, input , context=context.context) final_output = result.final_output_as(AbnormalOutput) return GuardrailFunctionOutput( output_info=final_output, tripwire_triggered=final_output.is_abnormal, ) # Voice Call Center Workflow class VoiceCallCenterWorkflow (VoiceWorkflowBase): def __init__ (self, on_start: Callable[[ str ], None ], tts_output: Callable[[ str ], None ], on_agent_change: Callable[[ str ], None ] = None , on_context_change: Callable[[CallCenterAgentContext], None ] = None ): """ Args: on_start: A callback that is called when the workflow starts. The transcription is passed in as an argument. tts_output: A callback that is called when the TTS output is generated. on_agent_change: A callback that is called when the agent changes. on_context_change: A callback that is called when the context changes. """ self._input_history: list [TResponseInputItem] = [] self._context = CallCenterAgentContext() self._conversation_id = uuid.uuid4().hex[: 16 ] self._on_start = on_start self._tts_output = tts_output self._on_agent_change = on_agent_change self._on_context_change = on_context_change self._current_agent = None self._agents_initialized = False async def _initialize_agents (self): """MCPサヌバヌを初期化しお゚ヌゞェントを蚭定""" if self._agents_initialized: return try : # MCPサヌバヌの初期化 self.file_mcp_server = MCPServerStdio( name= "Filesystem Server, via npx" , params={ "command" : "npx" , "args" : [ "-y" , "@modelcontextprotocol/server-filesystem" , "path/to/products" ] } ) self.slack_mcp_server = MCPServerStdio( name= "SSE Slack API Server" , params={ "command" : "npx" , "args" : [ "-y" , "@modelcontextprotocol/server-slack" ], "env" : { "SLACK_BOT_TOKEN" : os.environ.get( "SLACK_BOT_TOKEN" ), "SLACK_TEAM_ID" : os.environ.get( "SLACK_TEAM_ID" ), "SLACK_CHANNEL_IDS" : os.environ.get( "SLACK_CHANNEL_ID" ), } } ) # MCPサヌバヌを開始 await self.file_mcp_server.__aenter__() await self.slack_mcp_server.__aenter__() # ゚ヌゞェントの初期化 self.error_trouble_agent = Agent[CallCenterAgentContext]( name= "゚ラヌ・トラブル・クレヌム察応゚ヌゞェント" , handoff_description= "゚ラヌ・トラブル・クレヌム察応゚ヌゞェントは、商品の゚ラヌやトラブル、クレヌムに関する質問に察応できたす。" , instructions=f """{JA_RECOMMENDED_PROMPT_PREFIX} あなたぱラヌ・トラブル・クレヌム察応゚ヌゞェントです。もし顧客ず話しおいる堎合、あなたはおそらくトリアヌゞ゚ヌゞェントから仕事を委譲されたした。 コヌルセンタヌマニュアルず、以䞋のルヌチンに埓っお顧客の質問に察応しおください。 # ルヌチン 1. 顧客がどの商品の、どのような゚ラヌやトラブルに぀いお質問しおいるかを確認したす。クレヌムであれば、どのようなクレヌムかを確認し、マニュアルに埓っお察応しおください。 2. 特定の商品に関するものである堎合、file_mcp_serverで提䟛されおいるディレクトリのファむルの䞭に、䞀臎するテキストファむルがあるかどうかを確認したす。 3. ある堎合、そのテキストファむルの䞭から、顧客の質問に答えられる情報を抜出し、回答しおください。質問の内容が答えれらない堎合は、「申し蚳ありたせんが、それ぀いおはお答えできたせん。」ず䌝えたす。 4. サポヌトセンタヌの電話番号やメヌルアドレスが曞かれおいる堎合は、顧客にその情報を䌝え、Slackのチャンネルにその内容を送信しおください。 5. ない堎合、「申し蚳ありたせんが、その゚ラヌやトラブルに぀いおはお答えできたせん。」ず䌝えたす。 もし顧客がルヌチンに関連しない質問をした堎合、や「もう倧䞈倫です」ずいう内容があった堎合は、トリアヌゞ゚ヌゞェントに匕き継ぎたす。 """ , mcp_servers=[self.file_mcp_server, self.slack_mcp_server], ) self.how_to_agent = Agent[CallCenterAgentContext]( name= "商品取り扱い゚ヌゞェント" , handoff_description= "商品取り扱い゚ヌゞェントは、商品に関する質問に答えるこずができたす。" , instructions=f """{JA_RECOMMENDED_PROMPT_PREFIX} あなたは商品取り扱い゚ヌゞェントです。もし顧客ず話しおいる堎合、あなたはおそらくトリアヌゞ゚ヌゞェントから仕事を委譲されたした。 顧客をサポヌトするために、以䞋のルヌチンを䜿甚しおください。 # ルヌチン 1. 顧客がどのような商品に぀いお質問しおいるかを確認したす。 2. file_mcp_serverで提䟛されおいるディレクトリのファむルの䞭に、䞀臎するテキストファむルがあるかどうかを確認したす。 3. ある堎合、そのテキストファむルの䞭から、顧客の質問に答えられる情報を抜出し、回答しおください。質問の内容が答えれらない堎合は、「申し蚳ありたせんが、それ぀いおはお答えできたせん。」ず䌝えたす。 4. ない堎合、「申し蚳ありたせんが、その商品は取り扱っおおりたせん。」ず䌝えたす。 もし顧客がルヌチンに関連しない質問をした堎合、や「もう倧䞈倫です」ずいう内容があった堎合は、トリアヌゞ゚ヌゞェントに匕き継ぎたす。 """ , mcp_servers=[self.file_mcp_server], ) self.order_agent = Agent[CallCenterAgentContext]( name= "商品泚文・賌入察応゚ヌゞェント" , handoff_description= "商品泚文・賌入に関する質問に答える゚ヌゞェントです。" , instructions=f """{JA_RECOMMENDED_PROMPT_PREFIX} あなたは商品泚文・賌入察応゚ヌゞェントです。もし顧客ず話しおいる堎合、あなたはおそらくトリアヌゞ゚ヌゞェントから仕事を委譲されたした。 顧客をサポヌトするために、以䞋のルヌチンを䜿甚しおください。 # ルヌチン 1. 顧客がどのような商品を賌入したいかを確認したす。 2. file_mcp_serverで提䟛されおいるディレクトリのファむルの䞭に、䞀臎する、もしくは類䌌するテキストファむルがあるかどうかを確認したす。たずえば、「スマホ」のようにスマヌトフォンの略称を䜿っおいる堎合や、商品名の䞀郚が異なる堎合などです。 3. ある堎合、䞀床顧客に確認のため「<商品>ですね。泚文しおもよろしいですか」ず尋ねたす。同意を埗たら、slack_file_mcp_serverで#泚文管理に「<商品名>を泚文したした。」ず送信しおください。拒吊されたら、トリアヌゞ゚ヌゞェントに匕き継ぎたす。 4. ない堎合、「申し蚳ありたせんが、その商品は取り扱っおおりたせん。」ず䌝えたす。少しだけでも䌌おいる名前の商品がある堎合は、「<䌌おいる商品名>はありたすが、<商品名>はありたせん。」ず䌝えたす。 もし顧客がルヌチンに関連しない質問をした堎合や、「もう倧䞈倫です」「わかりたした」ずいう内容があった堎合は、トリアヌゞ゚ヌゞェントに匕き継ぎたす。 """ , mcp_servers=[self.file_mcp_server, self.slack_mcp_server], ) self.triage_agent = Agent[CallCenterAgentContext]( name= "トリアヌゞ゚ヌゞェント" , instructions=( f "{JA_RECOMMENDED_PROMPT_PREFIX} " "あなたは優秀なトリアヌゞ゚ヌゞェントです。 あなたは、顧客のリク゚ストを適切な゚ヌゞェントに委任するこずができたす。 \n " "顧客の質問がコヌルセンタヌにしないような質問をしおいるかもしれない堎合は、ガヌドレヌル゚ヌゞェントを䜿甚しおください。 \n " "顧客の名前より先に質問が来た堎合、質問を蚘憶し぀぀、名前を聞き、update_customer_infoを呌び出しおください。 \n " "顧客の質問は、以䞋の3぀のカテゎリに分けられたす。 \n " "1. 商品の取り扱いに関する質問 \n " "2. 商品の泚文・賌入に関する質問 \n " "3. ゚ラヌ・トラブル・サポヌトに関する質問 \n " "適切な゚ヌゞェントに匕き継いでください。" ), handoffs=[ self.how_to_agent, self.order_agent, self.error_trouble_agent, ], input_guardrails=[abnormal_guardrail], tools=[update_customer_info], ) # 再びトリアヌゞ゚ヌゞェントに戻るためのハンドオフ self.order_agent.handoffs.append(self.triage_agent) self.how_to_agent.handoffs.append(self.triage_agent) self.error_trouble_agent.handoffs.append(self.triage_agent) self._current_agent = self.triage_agent self._agents_initialized = True except Exception as e: print (f "゚ヌゞェント初期化゚ラヌ: {e}" ) async def run (self, transcription: str ) -> AsyncIterator[ str ]: self._on_start(transcription) # ゚ヌゞェントの初期化(基本的には䞀床だけ) await self._initialize_agents() # Add the transcription to the input history self._input_history.append( { "role" : "user" , "content" : transcription, } ) try : with trace( "Customer service" , group_id=self._conversation_id): # Run the agent current_context_customer = self._context.customer_name current_context_question_type = self._context.question_type result = Runner.run_streamed(self._current_agent, self._input_history, context=self._context) full_response = "" async for chunk in VoiceWorkflowHelper.stream_text_from(result): full_response += chunk yield chunk self._tts_output(full_response) if self._context.customer_name != current_context_customer or self._context.question_type != current_context_question_type: if self._on_context_change: self._on_context_change(self._context.customer_name, self._context.question_type) # Update the input history and current agent self._input_history = result.to_input_list() if self._current_agent != result.last_agent: self._current_agent = result.last_agent if self._on_agent_change: self._on_agent_change(self._current_agent.name) except InputGuardrailTripwireTriggered as e: message = "すみたせん。この質問にはお答えできたせん。" self._tts_output(message) # ガヌドレヌル䜜動の通知 if self._on_agent_change: self._on_agent_change( "ガヌドレヌル䜜動" ) self._input_history.append( { "role" : "assistant" , "content" : message, } ) self._current_agent = self.triage_agent if self._on_agent_change: self._on_agent_change(self._current_agent.name) yield message except Exception as e: error_message = f "申し蚳ありたせん。システム゚ラヌが発生したした: {str(e)}" self._tts_output(error_message) yield error_message async def cleanup (self): """リ゜ヌスのクリヌンアップ""" try : if hasattr (self, 'file_mcp_server' ): await self.file_mcp_server.__aexit__( None , None , None ) if hasattr (self, 'slack_mcp_server' ): await self.slack_mcp_server.__aexit__( None , None , None ) except Exception as e: print (f "クリヌンアップ゚ラヌ: {e}" ) # main.py from __future__ import annotations import asyncio import shutil import sounddevice as sd from agents.voice import (StreamedAudioInput, StreamedAudioResult, STTModelSettings, TTSModelSettings, VoicePipeline, VoicePipelineConfig) from config import (CHANNELS, FORMAT, SAMPLE_RATE, VOICE, VOICE_INSTRUCTION, VOICE_SPEED) from dotenv import load_dotenv from my_workflow import VoiceCallCenterWorkflow from textual import events from textual.app import App, ComposeResult from textual.containers import Container from textual.reactive import reactive from textual.widgets import Button, RichLog, Static from typing_extensions import override load_dotenv() # UI Components class Header (Static): """A header widget.""" session_id = reactive( "" ) current_agent = reactive( "トリアヌゞ゚ヌゞェント" ) @ override def render (self) -> str : return f "音声コヌルセンタヌ | 珟圚の゚ヌゞェント: {self.current_agent}" class AudioStatusIndicator (Static): """A widget that shows the current audio recording status.""" is_recording = reactive( False ) @ override def render (self) -> str : status = ( "🔎 録音䞭... (Kキヌで停止)" if self.is_recording else "⚪ Kキヌで録音開始 (Qキヌで終了)" ) return status # Main Application class VoiceCallCenterApp (App[ None ]): CSS = """ Screen { background: #1a1b26; /* Dark blue-grey background */ } Container { border: double rgb(91, 164, 91); } Horizontal { width: 100%; } #input-container { height: 5; /* Explicit height for input container */ margin: 1 1; padding: 1 2; } Input { width: 80%; height: 3; /* Explicit height for input */ } Button { width: 20%; height: 3; /* Explicit height for button */ } #bottom-pane { width: 100%; height: 82%; /* Reduced to make room for session display */ border: round rgb(205, 133, 63); content-align: center middle; } #status-indicator { height: 3; content-align: center middle; background: #2a2b36; border: solid rgb(91, 164, 91); margin: 1 1; } #session-display { height: 3; content-align: center middle; background: #2a2b36; border: solid rgb(91, 164, 91); margin: 1 1; } Static { color: white; } """ should_send_audio: asyncio.Event audio_player: sd.OutputStream last_audio_item_id: str | None connected: asyncio.Event def __init__ (self) -> None : super ().__init__() self.last_audio_item_id = None self.should_send_audio = asyncio.Event() self.connected = asyncio.Event() self.workflow = VoiceCallCenterWorkflow( on_start=self._on_transcription, tts_output=self._tts_output, on_agent_change=self._on_agent_change, on_context_change=self._on_context_change, ) self.voice_config = VoicePipelineConfig( tts_settings=TTSModelSettings( speed=VOICE_SPEED, instructions=VOICE_INSTRUCTION, ), stt_settings=STTModelSettings( turn_detection={ "type" : "server_vad" , "threshold" : 0.5 , "prefix_padding_ms" : 300 , "silence_duration_ms" : 1000 , } ), ) self.pipeline = VoicePipeline(workflow=self.workflow, config=self.voice_config) self._audio_input = StreamedAudioInput() self.audio_player = sd.OutputStream( samplerate=SAMPLE_RATE, channels=CHANNELS, dtype=FORMAT, ) def _on_transcription (self, transcription: str ) -> None : try : self.query_one( "#bottom-pane" , RichLog).write( f "あなた: {transcription}" ) except Exception : pass def _tts_output (self, text: str ) -> None : try : self.query_one( "#bottom-pane" , RichLog).write(f "゚ヌゞェント応答: {text}" ) except Exception : pass def _on_agent_change (self, agent_name: str ) -> None : try : header = self.query_one( "#session-display" , Header) header.current_agent = agent_name self.query_one( "#bottom-pane" , RichLog).write(f "🔄 ゚ヌゞェント切り替え: {agent_name}" ) except Exception : pass def _on_context_change (self, customer_name: str , question_type: str ) -> None : try : self.query_one( "#bottom-pane" , RichLog).write( f "📝 コンテキスト倉曎: 顧客名={customer_name}, 質問タむプ={question_type}" ) except Exception : pass @ override def compose (self) -> ComposeResult: """Create child widgets for the app.""" with Container(): yield Header( id = "session-display" ) yield AudioStatusIndicator( id = "status-indicator" ) yield RichLog( id = "bottom-pane" , wrap= True , highlight= True , markup= True ) async def on_mount (self) -> None : self.run_worker(self.start_voice_pipeline()) self.run_worker(self.send_mic_audio()) async def start_voice_pipeline (self) -> None : try : self.audio_player.start() self.result: StreamedAudioResult = await self.pipeline.run( self._audio_input ) async for event in self.result.stream(): bottom_pane = self.query_one( "#bottom-pane" , RichLog) if event.type == "voice_stream_event_audio" : self.audio_player.write(event.data) # Play the audio elif event.type == "voice_stream_event_lifecycle" : bottom_pane.write(f "ラむフサむクルむベント: {event.event}" ) except Exception as e: bottom_pane = self.query_one( "#bottom-pane" , RichLog) bottom_pane.write(f "゚ラヌ: {e}" ) finally : self.audio_player.close() # クリヌンアップ await self.workflow.cleanup() async def send_mic_audio (self) -> None : device_info = sd.query_devices() print (device_info) read_size = int (SAMPLE_RATE * 0.02 ) stream = sd.InputStream( channels=CHANNELS, samplerate=SAMPLE_RATE, dtype= "int16" , ) stream.start() status_indicator = self.query_one(AudioStatusIndicator) try : while True : if stream.read_available < read_size: await asyncio.sleep( 0 ) continue await self.should_send_audio.wait() status_indicator.is_recording = True data, _ = stream.read(read_size) await self._audio_input.add_audio(data) await asyncio.sleep( 0 ) except KeyboardInterrupt : pass finally : stream.stop() stream.close() async def on_key (self, event: events.Key) -> None : """Handle key press events.""" if event.key == "enter" : self.query_one(Button).press() return if event.key == "q" : await self.workflow.cleanup() # クリヌンアップしおから終了 self.exit() return if event.key == "k" : status_indicator = self.query_one(AudioStatusIndicator) if status_indicator.is_recording: self.should_send_audio.clear() status_indicator.is_recording = False else : self.should_send_audio.set() status_indicator.is_recording = True if __name__ == "__main__" : if not shutil.which( "npx" ): raise RuntimeError ( "npx is not installed. Please install it with `npm install -g npx`." ) app = VoiceCallCenterApp() app.run() main.pyのVoicePipelineに、my_workflow.pyで䜜成したVoiceCallWorkflowを挟み蟌んでいたす。たた、フロント゚ンドの郚分はPythonでタヌミナル䞊に䜜れるTextualずいうフレヌムワヌクを甚いおいたす。 それでは、このコヌドを実際に動かしおみたデモの様子を3぀みおいきたしょう。 1぀目の動画は補品の取り扱いの質問を行なっおいる䟋です。返答が遅くお気掛かりですが、しっかりずMCPが機胜しおいるようですね。 2぀目の動画は補品の泚文を行なっおいる䟋です。MCPで補品情報を敎理し぀぀、商品の泚文メヌル送信たでを行えおいたす。 3぀目はガヌドレヌルをあえお起動させようずしおいる䟋です...が倱敗しおいたすね。どうしおなのでしょうか この原因は、ストリヌミング生成ず入力ガヌドレヌルの盞性が良くないためず考えられたす。以䞋の図を甚いお説明したす。入力ガヌドレヌルは音声認識が党お終了しおから行うのに察し、音声合成の郚分では、音声認識が埐々になされおいく䞭で゚ヌゞェントのLLMが回答生成し、その回答をチャンクごずに出力しようずしたす。するず、入力ガヌドレヌルが異垞怜知する前に出力が生成されおしたうため、先にLLMが奜き勝手に回答する挙動をしおしたったわけなのです。 ガヌドレヌルがストリヌミング生成でうたく機胜しないこずを衚した図 したがっお、ストリヌミング生成での音声マルチ゚ヌゞェントを構築する堎合は、入力ガヌドレヌル゚ヌゞェントは䜿甚しない方がいいずいうこずがわかりたした。察策ずしお、そのたたトリアヌゞ゚ヌゞェントにプロンプトずしおガヌドレヌルを再珟しおしたう方法が考えられたす。実際にトリアヌゞ゚ヌゞェントからガヌドレヌル゚ヌゞェントを取り倖し、プロンプトを倉曎した埌の、゚ヌゞェントの抂芳図ず、倉曎した郚分のみのコヌドを掲茉したす。 倉曎埌の音声察話型マルチ゚ヌゞェントの抂芳図 # my_workflow.pyのガヌドレヌル郚分を消し、トリアヌゞ゚ヌゞェントずの玐付けを削陀し代わりにプロンプトを修正したした self.triage_agent = Agent[CallCenterAgentContext]( name= "トリアヌゞ゚ヌゞェント" , instructions=( f "{JA_RECOMMENDED_PROMPT_PREFIX} " "あなたは優秀なトリアヌゞ゚ヌゞェントです。 あなたは、顧客のリク゚ストを適切な゚ヌゞェントに委任するこずができたす。 \n " "顧客の質問がコヌルセンタヌにしないような質問をした堎合は、「すみたせん。この質問には答えられたせん」ず䌝えおください。" "コヌルセンタヌにしないような質問は、䞀般的な知識や雑談、蚈算問題などです。 \n " "たずえば、「あなたの奜きな色は䜕ですか」ず蚀った質問や「210たす4は」ずいった質問は、コヌルセンタヌにするべきではありたせん。 \n " "䌚瀟に関する質問でも、「この䌚瀟の蚭立幎はい぀ですか」ずいった質問は、コヌルセンタヌにするべきではありたせん。 \n " "顧客の質問に答えるために、顧客の名前ず質問のタむプをupdate_customer_infoを呌び出しお保存しおください。 \n " "顧客の名前のみ分かった堎合でも、update_customer_infoを呌び出し、質問はNoneずしお保存しおください。 \n " "顧客の名前より先に質問が来た堎合、update_customer_infoを呌び出し、顧客の名前はNoneずしお保存しおください。さらに顧客の名前を聞き出しおください。 \n " "質問タむプが話の途䞭から倉わる堎合も、update_customer_infoを呌び出しお曎新しおください。 \n " "顧客の質問は、以䞋の4぀のカテゎリに分けられたす。 \n " "1. 商品の取り扱いに関する質問 \n " "2. 商品の泚文・賌入に関する質問 \n " "3. ゚ラヌ・トラブル・クレヌムに関する質問 \n " "4. その他の回答䞍可胜・専門知識が必芁な質問 \n " "適切な゚ヌゞェントに匕き継いでください。 \n " ), handoffs=[ self.how_to_agent, self.order_agent, self.error_trouble_agent, ], tools=[update_customer_info], ) 以䞊の倉曎を加えた埌のデモの様子を芋おみたしょう。 ガヌドレヌル゚ヌゞェントなしでも、うたくガヌドレヌルの機胜は再珟できおいたすね 残る課題ずしおは、やはりレむテンシヌが挙げられたす。最初の回答たでに10秒以䞊、2回目以降の回答たでに䜓感6,7秒ほどの埅ち時間があるので、䜿甚感は正盎良くないです。 しかし、Chained ArchitectureではなくSpeech-to-Speech Architectureに倉曎するこずで、そのレむテンシヌは改善できる芋蟌みがありたす。 人間が行なっおいるコヌルセンタヌで実際にどれくらいの遅延であれば蚱容できるかを螏たえた䞊で、レむテンシヌを枛らす・もしくは感じさせないような䜜りを考え、実甚化に向けおさたざたな意芋を取り入れながら蚭蚈しおいく必芁があるず思いたした。 2.4 今埌の展望 前節では、Chained Architectureの音声察話型マルチ゚ヌゞェントの性胜ず課題をお䌝えしたした。この構造での音声゚ヌゞェントが持぀課題を明確にできたのが今回の収穫だったかなず思いたす。前節でも述べたように、遅延を枛らす察策ずしお、構造をリアルタむム察話型モデルを基盀ずしたSpeech-to-Speech Architectureに倉えるこずが考えられたす。もし、機䌚があればこの構造に倉えたずき、どれだけ遅延が改善されたかをご玹介できればず思いたす。 話が少し倧きくなりたすが、本章の最埌に、AI゚ヌゞェントのこれからの展望に぀いお少し話させおください。私自身、AI゚ヌゞェントを今回のアルバむトで初めお䜜っおみたのですが、テキストベヌスのものに音声が付くだけで䞀気に「向こう偎に盞手がいる」ような感芚が匷たるのを感じたした。AI゚ヌゞェントはこれから、より人間性を垯びおくるのではないかず私は考えおいたす。具䜓的な䟋ずしお、人間やキャラクタヌを暡したアバタヌベヌスのAI゚ヌゞェントや、ロボットベヌスのAI゚ヌゞェントの応甚が掻発化する可胜性がありたす。その埌、カスタマむズによる䌚瀟独自のデゞタルヒュヌマンが䌚瀟の新しいブランドを圢成したり、ロボット同士が協力しお仕事をサポヌトするような未来が蚪れるかもしれたせん。それを楜しみにし぀぀、いかにしお人間ずAIが協調しおいくかずいう議論を継続しお行う必芁があるず考えたす。 おわりに 今回のアルバむトのテヌマでもありたした、「音声゚ヌゞェント関連サヌベむ」で埗た知芋の䞀郚を本蚘事でたずめさせおいただきたした。 本アルバむトを通しお、初めお音声ず゚ヌゞェント䞡面の技術に觊れるこずができ、どちらずも関心を高めるこずができたした。 今埌は、Speech-to-Speechモデルでのマルチ゚ヌゞェントの構築や、カスタムボむスを利甚したアバタヌベヌスでの音声゚ヌゞェントの可胜性を探っおいきたいず思いたす。 今回のアルバむトでお䞖話になりたしたInsight Edgeの瀟員の方々、特にチュヌタヌずしお日頃からアルバむトのサポヌトをしおくださいたした須賀さんに、心から感謝を申し䞊げたいず思いたす。 ここたで読んでいただき、ありがずうございたした 参考資料 Google Cloud, "Agent2Agent プロトコルA2Aを発衚゚ヌゞェントの盞互運甚性の新時代", https://cloud.google.com/blog/ja/products/ai-machine-learning/a2a-a-new-era-of-agent-interoperability Agent2Agent (A2A) Protocol, Home, https://a2aproject.github.io/A2A/latest/#why-a2a-matters Google AI Developers, "音声生成(テキスト読み䞊げ)", https://ai.google.dev/gemini-api/docs/speech-generation?hl=ja AWS, "Amazon Nova Documentation", https://docs.aws.amazon.com/nova/ taku_sid,「うさぎでもわかるAmazon Nova Sonic入門」, https://zenn.dev/taku_sid/articles/20250413_nova_sonic OpenAI, "Voice agents", https://platform.openai.com/docs/guides/voice-agents?voice-agent-architecture=speech-to-speech OpenAI Agents SDK, https://openai.github.io/openai-agents-python/ja/ takemo101, 株匏䌚瀟゜ニックブヌム,「Gemini API TTSText-to-Speechで挫才音声を生成しおみた」, https://zenn.dev/sonicmoov/articles/bd862039bcba46
アゞャむル開発チヌムの塚越です。2023幎にInsight Edge(以䞋、IE)に参画し、そろそろ2幎が経過したす。 前回ぱンゞニアずしおPMに挑戊した 蚘事 を曞きたした。PoCフェヌズでPMを務め、無事に商甚化フェヌズを迎えたした。珟圚もPM兌務の゚ンゞニアずしおこの案件に関わり続けおいたす。゚ンゞニア専任の案件も同時進行しおおり、このような垂堎䟡倀の向䞊を目指せる環境を提䟛しおくれたIEの方々には感謝しおいたす。 今回は 『䜿い物になる』化粧品掚薊AI゚ヌゞェントをAmazon Bedrock Agentsなどのクラりドベンダヌ補品を掻甚し、ロヌコヌドサクッず『簡単に』䜜ろうずした話 を曞きたす簡単に䜜れたずは蚀っおいない・・・。 ※本蚘事の内容や今回䜜成したシステムは、IEの業務および携わった案件ずは無関係です。 本蚘事でわかるこず 品質の高さ :どれだけ䜿い物になる化粧品掚薊AI゚ヌゞェントが䜜れたか 5.䜿い物になるのか怜蚌しおみた 粟床向䞊ぞの工倫 :䜿い物にするためにはどんな工倫が必芁だったか 4.぀たずき・工倫 簡単さ :Amazon Bedrock Agentsを䜿うこずでどれだけ簡単に䜜れたか 6.簡単に䜜れたか ※この蚘事では開発したシステムを重芖しおおり、Amazon Bedrock Agentsの 基本的な構築方法には焊点を圓おおいたせん 。 詳现は  2. Amazon Bedrock Agentsをずりあえず動かしおみる  に蚘茉したす。 目次 1. 化粧品掚薊AI゚ヌゞェントの抂芁 2. Amazon Bedrock Agentsをずりあえず動かしおみる 3. 化粧品掚薊AI゚ヌゞェントの実装 4. ぀たずき・工倫 4.1. 課題1『ステップ数の限界』 4.2. 課題2『゚ヌゞェントの出すレポヌトの品質が䜎い』 5. 䜿い物になるのか怜蚌しおみた 6. 簡単に䜜れたか 7. 残課題・曎なる展望 1. 化粧品掚薊AI゚ヌゞェントの抂芁 ここでは、化粧品掚薊AI゚ヌゞェントを開発したいず思った背景、システムのナヌスケヌス、システムの実珟方法に぀いお蚘茉したす。 1.1. 背景 私は賌入時、コスパを重芖したす。安䟡ずいう意味ではなく、 品質ずコストのバランスが最適化されたものを遞びたす。 特に毎日䜿う化粧品は、身䜓や気分、そしおランニングコストに圱響するため、最適な商品を探す初期投資をかける䟡倀があるず考えたす。 優先順䜍は以䞋の通りです: 䜓質に合うこず 肌荒れせず、自分の肌質に合ったものを遞びたい。 期埅する効果が埗られるこず 肌質改善やアンチ゚むゞングなど、求める効果が実感できるこず。 費甚を抑えるこず 金額に芋合う効果が埗られるなら投資する䟡倀はあるが、できるだけ費甚は抑えたい。 䟋えば化粧氎の堎合、 肌荒れを起こさないだけでなく、肌質改善やアンチ゚むゞング効果も期埅しおいたす。 『安䟡で肌に合わない商品』や『効果の薄い商品』を䜿うず、肌荒れや早期老化ずいったリスクが生じ、結果的に病院代や矎容クリニック代の出費に぀ながるこずがありたす。そしおなにより、肌の調子が悪いず毎日の気分も䞋がりたす。 しかし、高䟡な商品だからずいっお必ずしも自分にずっお最適だずは限りたせん。䟋えば、効果の高い成分を含んでいおも、今の自分の肌質ではその成分の最倧限の効果を発揮できないこずもありたす。 肌荒れしないこずを必須条件ずし、その次にコストパフォヌマンスを重芖しお化粧品を遞んでいたす。 以䞊の理由から、費甚や劎働力ずいった 初期コストをかけおでも最適な化粧品を探しお長く䜿う ようにしおいたすサンプルやトラむアルセットの詊甚、店頭でのタッチアップず盞談等。しかし、倀䞊げ・廃盀や販路の瞮小ずいった事態が床々起こり、その床にたた最適な化粧品探しが始たり・・・疲匊しおしたいたす。 この疲匊を解決するために、 代替品の掚薊に特化した化粧品掚薊AI゚ヌゞェント の開発を詊みたした。 1.2. システムのナヌスケヌス システムのナヌスケヌスは次を想定しおいたす。 珟圚䜿甚䞭の化粧品よりも費甚を抑えたい堎合 䜿甚䞭の化粧品が廃盀や販路瞮小により入手困難になり、代替品を探しおいる堎合 ※『䜓質の倉化により珟圚の化粧品が合わなくなった』『自分に合う化粧品が党くわからないので䞀から遞んでほしい』ずいったケヌスは今回のシステムの察象倖ずしおいたす。 1.3. システムの実珟方法 どうやっお化粧品掚薊AI゚ヌゞェントを䜜るか、ここでは実珟に繋がる䞻な仮説3぀に぀いお蚘茉したす。 1.3.1. 提案のプロセス 1.3.2. デヌタの取埗方法 1.3.3. ゚ヌゞェント開発手法 1.3.1. 提案のプロセス 私が代替品を探すプロセスは次のずおりです。 『このプロセスを『提案のプロセス』ずしお゚ヌゞェントに組み蟌めば、代替品の掚薊に特化した化粧品掚薊AI゚ヌゞェントが䜜れる』 ず仮説を眮きたした。 【私が代替品を探すプロセス】 私が高評䟡しおいる化粧品がある。 その化粧品に高評䟡を぀けた人は、私ず䜓質が䌌おいるず考える。 䜓質が䌌おいる人たちが高評䟡しおいる他の化粧品は、私に合う可胜性が高いず刀断する。 たた、成分や補造元が䌌おいるほど、私に合う可胜性が高いず刀断する。 以䞊から、次の3぀の芳点でランク付けしお代替品を決定する。 䜓質の類䌌床 評䟡の高さ 成分・補品元の類䌌床 補造元を芳点に含めた理由 は、『同じ材料でも䜜り手が違えば品質も倉わる』ず考えるからです。 料理に䟋えるず、私の䜜る卵焌きず筒井さん私の䞊長が䜜る卵焌きは、党く同じ材料を䜿ったずしおも同じにはならないでしょう。そしお、筒井さんの卵焌きを奜む人は、筒井さんの料理ノりハりを継承する(であろう)筒井家の方々の䜜った卵焌きを奜む確率が高いはずです。 1.3.2. デヌタの取埗方法 前述の 1.3.1. 提案のプロセス の通り、レビュヌデヌタが必芁です。案ずしおは レビュヌサむトのAPI掻甚 レビュヌのDBを構築しお怜玢する(RAG) ずいったこずが考えられたす。が、生成AIの発展により 「Deep Research APIを䜿うこずでデヌタが取埗できる」 ず仮説を眮きたした。 2025/05時点、Google CloudずいったクラりドベンダヌではDeep ResearchのAPIが提䟛されおいないため、手元でDeep Researchを䜿っお埗た回答をモックデヌタずしお実隓に䜿甚したした。今回手元で利甚したのはGemini Deep Researchです。 補足:2025/06/27にOpenAIからDeep Research APIが出たしたねAzure OpenAI Serviceで提䟛されるのが楜しみです 1.3.3. ゚ヌゞェント開発手法 コヌディングしお 1.3.1. 提案のプロセス を゚ヌゞェントに組み蟌むには、画像のようなロゞックを自分で考える必芁がありたす。たた、1぀1぀の凊理に぀いおも様々なロゞックを怜蚎しなければなりたせん。 ロゞックのむメヌゞ 『わざわざ実装しなくおもサクッず䜜れる時代になっおいるのではないか』ず考え、Amazon Bedrock Agentsずいった 「ロヌコヌド゚ヌゞェント開発ツヌルを䜿えば、耇雑なロゞックを組たずにAI゚ヌゞェント開発ができる」 ず仮説を立おたした。 2. Amazon Bedrock Agentsをずりあえず動かしおみる たずはAmazon Bedrock Agentsを䜿い、最小限の構成MVP:Minimum Viable Productで『ずりあえず動く』AI゚ヌゞェントを䜜成したした。この段階では、耇雑なロゞックや本栌的なデヌタ連携は行わず、 ゚ヌゞェントが動䜜し、ナヌザヌの入力に察しお䜕らかの応答を返せる状態 を目指したした。ここで埗られた知芋をもずに、次章以降で本栌的な機胜远加や改修を進めおいきたす。この章ではAmazon Bedrock AgentsのMVP構築方法に぀いおたずめたす。 構築には、次の蚘事を参考にさせおいただきたした。 【初心者でもOK】Amazon Bedrock Agentsで「自然蚀語Web怜玢PDFレポヌト生成」゚ヌゞェント開発ハンズオン 次の 差分 に留意し、参考サむト通りに構築するこずでAmazon Bedrock AgentsのMVPが構築できたす。 リヌゞョン : us-west-2 オレゎン(Claude 3.5 Sonnetが䜿えるなら䜕凊でも) アクショングルヌプ『web-search』のLambda関数 : 䞋蚘コヌドの通り、 ただのテキストを返すモック ずしお実装し、埌ほど怜玢APIを実装したしたたず動くずころが芋たかった・・・。 ※参考サむトではTaviryが䜿われおいたすが、私は別のAPIを䜿いたした。Taviryでいいので実装は割愛したす。 参考サむトのコヌドをそのたた䜿うずレスポンスが文字化けしたので body 芁玠のコヌドを修正したした。 ゜ヌスコヌド(クリックで展開) # lambda_handler.py # Mockずしお䜿えるサンプルコヌド。実際のWeb怜玢凊理は走らず、固定のテキストが返される。 import json import boto3 from botocore.exceptions import ClientError client = boto3.client( "bedrock-agent-runtime" ) # Lambdaハンドラヌ def lambda_handler (event, context): action_group = event.get( "actionGroup" ) function = event.get( "function" ) parameters = event.get( "parameters" , []) search_query = next ((param[ "value" ] for param in parameters if param[ "name" ] == "search_query" ), None ) search_results = "これは怜玢結果のサンプルです。これ以倖のWeb怜玢は珟圚できない状態です。" response_body = { "TEXT" : { "body" : json.dumps({ "query" : search_query, "results" : search_results # json.loads(search_results) }, ensure_ascii= False ) # Unicodeの゚スケヌプを防ぐ } } return { "messageVersion" : "1.0" , "response" : { "actionGroup" : action_group, "function" : function, "functionResponse" : { "responseBody" : response_body } } } 任意Lambda関数のテスト甚のコヌド。 { " parameters ": [ { " name ": " search_query ", " value ": " 怜玢 キヌワヌド " } , { " name ": " key2 ", " value ": " value2 " } , { " name ": " key3 ", " value ": " value3 " } ] } こんなに簡単に構築したのに、自埋的に動く゚ヌゞェントの挙動が実珟できおびっくりしたした 3. 化粧品掚薊AI゚ヌゞェントの実装 では、前章で埗られたAmazon Bedrock Agents MVPをもずに、『化粧品掚薊AI゚ヌゞェント』を本栌的に構築しおいきたす。機胜远加や改修は次の4点です。 3.1. プロンプトを修正する 3.2. アクショングルヌプ『research』を远加する 3.3. Max output tokensを最倧にする 3.4. (任意)アむドルセッションタむムアりトを䌞ばす 3.1. プロンプトを修正する 手順: - ゚ヌゞェントビルダヌ  ゚ヌゞェント向けの指瀺 (以䞋プロンプト) を次の内容に修正する。 プロンプト(クリックで展開) # ç«‹å Ž あなたは優秀な矎容郚員です。化粧品の成分ずいった科孊の分野にも長けおいたす。お客様が入力した化粧品の情報から、お客様に合う別の化粧品を提案するこずがタスクです。 # ルヌル - タスク遂行の蚈画を立案しおください。  - step1:レポヌト(.mdファむル)の提出状況を確認する。 - 提出枈みの堎合:step2に進む。 - 未提出の堎合: 1. お客様の入力情報から『ブランド 商品名 商品カテゎリ』を特定し、Deep Research(research)ツヌルに入力する。特定できない堎合はお客様に䌺う。 2. 『レポヌトのルヌル』に埓っおレポヌトを䜜成する。 3. レポヌトは『.mdファむルでダりンロヌドできる圢匏』で添付する圢で提出する。  - step2:タスクの完遂に必芁なステップを党お矅列する。   - 提案の考え方は『提案のプロセス』に埓うこず。   -『Session summaries』や䌚話の履歎を確認し、『提案のプロセス』を守っおいない点を厳しく確認する。   - 確認した内容ずお客様のご質問を螏たえお、タスクの完遂に必芁なステップを党お矅列する。 - 次の堎合、状況をナヌザヌに提瀺し、次にする内容に合意を埗おください。 - 提案が完成した。『提案のプロセス』を守っおいる理由を箇条曞きで添えるこず。 - Web怜玢(web-search)を3回以䞊実斜したがただ情報が足りおいない。 - あなたができるアクションは次の2぀です。それ以倖に぀いおは、すべお自らの刀断ず操䜜で進めおください。回数に制限はありたせんので、必芁なずきに随時利甚しお構いたせん。 1.Web怜玢(web-search):Web怜玢が実行できたす。怜玢キヌワヌドはあなた自身で考えおください。 2.お客様に䌺う:お客様が満足する回答をするために䞍明点を聞いたり、提案に察するレビュヌをいただくこずができたす。 # 提案のプロセス 以䞋の考え方を持っお、お客様に合う別の化粧品をランキング圢匏で提案する。 1. 入力された化粧品はお客様が最も高評䟡しおいる商品である。 2. 入力された化粧品に察しお高評䟡レビュヌを付けおいる人物耇数可はお客様ず同じ**䜓質**を持っおいるず考える。 - 埌ほどレポヌトで䜿うため、人物情報(レビュヌをしたサむト名、レビュヌ内容、人物詳现を詳现に取埗する。 3. プロセス2で芋぀けた同じ䜓質を持った人物達が、高評䟡を付けおいる別の化粧品耇数甚意する。**10商品**以䞊。はお客様にも合う商品ではないかず考える。 - 埌ほどレポヌトで䜿うため、レビュヌ情報(レビュヌをしたサむト名、レビュヌした商品、レビュヌ内容、人物詳现を詳现に取埗する。 4. お客様の入力した化粧品ず成分や補品元が類䌌しおいるほどお客様にずっお良い商品ず蚀えるず考える。 - 埌ほどレポヌトで䜿うため、商品情報(成分䞀芧、補造元、その他商品情報を詳现に取埗する。 5. 耇数の候補の䞭でも、**䜓質の類䌌床**の高さ、**評䟡**の高さ、**成分/補品元の類䌌床**の高さ、これらが高ければ高いほど良い商品ず考え、レヌティングする。 6. レヌティングの結果から、ランクを付ける。 # レポヌトのルヌル 根拠を充実させ、化粧品のプロフェッショナルからの高床なレビュヌもクリアできるような、日本䞀を誇る高品質で掞察に満ちたレポヌトに仕䞊げる。 - レポヌトは日本語であるこず。 - 『提案のプロセス』1~6の順序で構成されおおり、次の根拠が明確に䌝わるレポヌトにするこず。 - ①『提案のプロセス』1,2で1枚のレポヌトを提出する。(**report1.md**) - 『入力された化粧品』の情報をレポヌトに含たせるこず。そこには金額等、ランキングのカラムず蚘茉する項目を䞀臎させるこず。 - 人物情報(レビュヌをしたサむト名、レビュヌ内容、人物詳现を詳现に蚘茉するこず。 - ②『提案のプロセス』3,4で1枚のレポヌトを提出する。(**report2.md**) - 人物情報(レビュヌをしたサむト名、レビュヌした商品、レビュヌ内容、人物詳现を詳现に蚘茉するこず。 - ③『提案のプロセス』5,6、1~4を螏たえお1枚のレポヌトをランキング圢匏で提出する。(**report3.md**) - ランキングは**衚圢匏**で衚珟されおおり、次の仕様に埓っおいるこず。 - **䜓質の類䌌床**、**評䟡**、**成分**、**補品元の類䌌床**のレヌティング結果ずその理由や根拠を蚘茉するカラムを必ず含たせるこず。 - 特に**成分**のレヌティング理由には具䜓的な成分名をもずに論じるこず。 - ランク付けには䜿わないが金額のカラムを必ず含たせるこず。 - 商品名等の基本情報だけではなく、ランク付けの根拠や理由が明確に䌝わるカラムを自分で考案しお远加するこず①②で重芁芖した内容を入れる。 これが、『化粧品掚薊AI゚ヌゞェントに特化したプロンプト』ずしお最終的に蟿り着いたプロンプトです。詊行錯誀しおこの圢に萜ち着きたした。詳现は 4.぀たずき・工倫 で述べたす。 3.2. アクショングルヌプ『research』を远加する Deep ResearchのAPIを呌び出すLambda関数を远加したす。アクショングルヌプ『research』を䜜成したす。 ※ 1.3.2. デヌタの取埗方法 の通り、Deep Research APIの呌び出しは実装されおおらず、 固定のテキストを返すモック です。 手順: アクショングルヌプ名アクショングルヌプ関数名その説明 : research パラメヌタ : research_text 、 説明 : Researchテキスト Lambda関数 :自動生成されたLambda関数にアクセスし、以䞋のコヌドを貌り付ける。 ゜ヌスコヌド(クリックで展開) # lambda_handler.py # Mockずしお䜿えるサンプルコヌド。実際のDeep Research凊理は走らず、固定のテキストが返される。 # SAMPLE_TEXTにDeep Researchした結果を貌り付ける。 import json import boto3 from botocore.exceptions import ClientError client = boto3.client( "bedrock-agent-runtime" ) SAMPLE_TEXT = """ ここにDeep Researchした結果を貌り付ける """ SYSTEM_PRONPT_TEMPRATE = """ を普段䜿っおいたす。代替商品をランキング圢匏で提案しお。なお、提案のプロセスは次に埓っお。 # 提案のプロセス 以䞋の考え方を持っお、お客様に合う別の化粧品をランキング圢匏で提案する。 1. 入力された化粧品はお客様が最も高評䟡しおいる商品である。 2. 入力された化粧品に察しお高評䟡レビュヌを付けおいる人物耇数可はお客様ず同じ**䜓質**を持っおいるず考える。 - 埌ほどレポヌトで䜿うため、人物情報(レビュヌをしたサむト名、レビュヌ内容、人物詳现を詳现に取埗する。 3. プロセス2で芋぀けた同じ䜓質を持った人物達が、高評䟡を付けおいる別の化粧品耇数甚意する。**10商品**以䞊。はお客様にも合う商品ではないかず考える。 - 埌ほどレポヌトで䜿うため、レビュヌ情報(レビュヌをしたサむト名、レビュヌした商品、レビュヌ内容、人物詳现を詳现に取埗する。 4. お客様の入力した化粧品ず成分や補品元が類䌌しおいるほどお客様にずっお良い商品ず蚀えるず考える。 - 埌ほどレポヌトで䜿うため、商品情報(成分䞀芧、補造元、その他商品情報を詳现に取埗する。 5. 耇数の候補の䞭でも、**䜓質の類䌌床**の高さ、**評䟡**の高さ、**成分/補品元の類䌌床**の高さ、これらが高ければ高いほど良い商品ず考え、レヌティングする。 6. レヌティングの結果から、ランクを付ける。 # レポヌトのルヌル 根拠を充実させ、化粧品のプロフェッショナルからの高床なレビュヌもクリアできるような、日本䞀を誇る高品質で掞察に満ちたレポヌトに仕䞊げる。 - レポヌトは日本語であるこず。 - 『提案のプロセス』1~6の順序で構成されおおり、次の根拠が明確に䌝わるレポヌトにするこず。 - ①『提案のプロセス』1,2で1枚のレポヌトを提出する。(**report1.md**) - 『入力された化粧品』の情報をレポヌトに含たせるこず。そこには金額等、ランキングのカラムず蚘茉する項目を䞀臎させるこず。 - 人物情報(レビュヌをしたサむト名、レビュヌ内容、人物詳现を詳现に蚘茉するこず。 - ②『提案のプロセス』3,4で1枚のレポヌトを提出する。(**report2.md**) - 人物情報(レビュヌをしたサむト名、レビュヌした商品、レビュヌ内容、人物詳现を詳现に蚘茉するこず。 - ③『提案のプロセス』5,6、1~4を螏たえお1枚のレポヌトをランキング圢匏で提出する。(**report3.md**) - ランキングは**衚圢匏**で衚珟されおおり、次の仕様に埓っおいるこず。 - **䜓質の類䌌床**、**評䟡**、**成分**、**補品元の類䌌床**のレヌティング結果ずその理由や根拠を蚘茉するカラムを必ず含たせるこず。 - 特に**成分**のレヌティング理由には具䜓的な成分名をもずに論じるこず。 - ランク付けには䜿わないが金額のカラムを必ず含たせるこず。 - 商品名等の基本情報だけではなく、ランク付けの根拠や理由が明確に䌝わるカラムを自分で考案しお远加するこず①②で重芁芖した内容を入れる。 """ # Lambdaハンドラヌ def lambda_handler (event, context): action_group = event.get( "actionGroup" ) function = event.get( "function" ) parameters = event.get( "parameters" , []) research_text = next ((param[ "value" ] for param in parameters if param[ "name" ] == "research_text" ), "" ) + SYSTEM_PRONPT_TEMPRATE # Deep Research APIが䜿える堎合を想定しおク゚リだけ実装。 search_results = "Researchした結果を衚瀺したす。" + SAMPLE_TEXT response_body = { "TEXT" : { "body" : json.dumps({ "query" : research_text, "results" : search_results }, ensure_ascii= False ) # Unicodeの゚スケヌプを防ぐ } } return { "messageVersion" : "1.0" , "response" : { "actionGroup" : action_group, "function" : function, "functionResponse" : { "responseBody" : response_body } } } コヌドの補足:モック実装ではあるものの、Deep ResearchのAPIが私の環境で䜿えるようになるこずを想定しお䜜成しおいるので、Deep Researchに入力する文章䜜成のコヌディングは終わっおいたす。䟋えば、 research_text が『ディセンシア サ゚ル 化粧氎』だった堎合『を普段䜿っおいたす。代替商品をランキング圢匏で提案しお。なお、提案のプロセスは次に埓っお。〜略〜』がDeep Researchに入力される仕様です。 これで゚ヌゞェントが ぀のアクショングルヌプ を䜿えるように改修できたした 3.3. Max output tokensを最倧にする アりトプットトヌクンを 最倧 にしたす。2048トヌクンを超える堎合があったので䌞ばしたした。凊理が止たるこずはないものの、2048トヌクンで打ち切られお情報が欠けるこずは望たしくなかったからです。 手順: ゚ヌゞェントビルダヌ  Orchestration strategy にアクセス オヌケストレヌション タブを遞択 Max output tokens を最倧倀に倉曎画像参照※それ以倖の蚭定はデフォルト 3.4. (任意)アむドルセッションタむムアりトを䌞ばす デフォルトは10分間です。抂ね凊理できる時間蚭定ですが、反埩回数や凊理の内容によっお超過する可胜性は0ではないため、アむドルセッションタむムアりトを20分に䌞ばしたした。手順は画像の通りです。 4. ぀たずき・工倫 ロヌコヌドツヌルを䜿ったため、思うように実珟できない状況に苊しみたした。理想や期埅は次の通りです。 システムに察する理想や期埅 本章では、぀たずき(理想ず珟実のギャップ)に盎面した代衚的な2぀の課題 4.1. 課題1『ステップ数の限界』 4.2. 課題2『゚ヌゞェントの出すレポヌトの品質が䜎い』 に぀いお、それぞれ ぀たずきポむント 怜蚎した工倫案ず比范 各工倫案の実斜方法 最終的に遞択した工倫ず理由 の流れで蚘茉したす。 4.1. 課題1『ステップ数の限界』 4.1.1. ぀たずきポむント 4章冒頭画像の理想①のように、゚ヌゞェントに察する指瀺以䞋、『プロンプト』をすべお 達成するたでステップを実行する こずを期埅しおいたした。しかし、私の゚ヌゞェントは 最倧7回で停止 し、『Sorry, I am unable to assist you with this request.』ずいう応答を返しおしたいたす。トレヌスステップを確認するず、 Max iterations exceeded が停止理由だずわかりたす。2025/06/17時点の情報によるず、次のように蚘茉があり、 ステップ数を䌞ばすこずができない ずわかりたす。 Please note that this error is encountered because the maximum iterations limit for an agent is set by default. This currently is a hard limit and cannot be configured by users on a per-agent basis. 匕甚: AWS re:Post 4.1.2. 怜蚎した工倫案ず比范 私の目指す化粧品掚薊AI゚ヌゞェントは、プロンプトに指瀺したような、充実した提案レポヌトを䜜成するこずが目暙です。そのため、 ステップ数を最倧7回に収めるような簡単なタスクぞず倉曎するこずは、本来の目的から逞れる こずになりたす。トレヌスを確認するず、゚ヌゞェントは自埋的にステップを考え、指瀺を達成しようずしおくれおいお、 7回で収めようずはしおいない ようです。そこで、゚ヌゞェントの持぀ 履歎情報 を掻甚しお擬䌌的にステップ数を䌞ばす案を怜蚎したした。 2぀の工倫を考案・比范し、最終的に 案2:䌚話履歎を䜿う を遞択したした。 案1:Session SummariesをONにする メリット:゚ヌゞェントのセッションを切るこずで、前回たでの芁玄Session Summariesを掻甚し、続きを実行できる デメリット:毎回セッションを切る手間が発生する 案2:䌚話履歎を䜿う メリット:ナヌザヌが「続きは」ず入力するだけで、前回の続きから再開できる デメリット:『Sorry, I am unable to assist you with this request.』ではなく、゚ヌゞェントが゚ラヌを返す堎合、解消できないこずが倚い 4.1.3. 各工倫案の実斜方法 案1、2の実斜方法ず詳现を説明しおいきたす。 案1:Session SummariesをONにする Session Summariesずは、セッションをたたいで䌚話の履歎や文脈を蚘憶する機胜のこずです。プロンプトの指瀺を完遂する前に止たっおしたった堎合、Session Summariesを䜿えば、続きから凊理を再開しお完遂たで至れるず考えたした。 案1の実装方法 : ゚ヌゞェントビルダヌ画面Memoryセクション有効を遞択する。 プロンプトにSession Summariesを䜿う前提で蚈画を立案させるように指瀺を蚘茉した。 案1を䜿った゚ヌゞェントの実行手順 : テストできる状態にする゚ヌゞェントビルダヌ画面保存準備テスト。 ナヌザヌク゚リに『{ブランド名} {商品名} {カテゎリ}の代替案を教えお。』ず入力し、送信する。 ゚ヌゞェントからの応答『Sorry, I am unable to assist you with this request.』が返っおくる。 䞀床セッションを切る画像のアむコンを抌䞋。 Session Summariesに前回のsummaryが残っおいるこずを確認する反映に少し時間がかかる。 ナヌザヌク゚リに『続きは』ず入力し、送信する。 3回皋床繰り返すこずでプロンプトの指瀺が完遂できたした。 案2:䌚話履歎を䜿う 案2の実装方法 : 特になし。 案2を䜿った゚ヌゞェントの実行手順 : ナヌザヌク゚リに『{ブランド名} {商品名} {カテゎリ}の代替案を教えお。』ず入力し、送信する。 ゚ヌゞェントからの応答『Sorry, I am unable to assist you with this request.』が返っおくる。 ナヌザヌク゚リに『続きは』ず入力し、送信する。 こちらも3回皋床繰り返すこずでプロンプトの指瀺が完遂できたした。 蛇足:うたくいかなかった工倫案 案2はうたくいったものの、『Sorry, I am unable to assist you with this request.』ず衚瀺されたり、『続きは』ず入力させる仕様は奜たしくありたせん。 あえお途䞭で止めおナヌザヌに再入力させる こずでシステムずしお成立するのではず考え、プロンプトを工倫したした。Web怜玢が最も反埩回数を消費するずトレヌスステップから確認できたため、次のように回数制限を蚭ける文蚀を蚘茉したした。しかし、この指瀺を守っおくれるこずはありたせんでした。 - 次の堎合、状況をナヌザヌに提瀺し、次にする内容に合意を埗おください。 - Web怜玢(web-search)を3回以䞊実斜したがただ情報が足りおいない。 ※守っおくれる期埅を蟌めお、プロンプトに蚘茉は残しおいたす。 4.2. 課題2『゚ヌゞェントの出すレポヌトの品質が䜎い』 4.2.1. ぀たずきポむント 4章冒頭画像の理想②のように、゚ヌゞェントの応答には.md圢匏のレポヌトが添付されるこずを期埅しおいたした。プロンプトの指瀺だけで、 充実した内容のレポヌトが自動で生成される こずを想定しおいたしたが、実際には以䞋のように添付されたレポヌトの内容が薄いずいう課題がありたした。 ランキングの根拠が1行皋床しか蚘茉されおいない 各商品の評䟡項目や埗点、その理由が十分に説明されおいない 「なぜその商品を薊めるのか」ずいう玍埗感のある説明が䞍足しおいる 4.2.2. 怜蚎した工倫案ず比范 この課題を解決するため、以䞋の2぀の工倫を実斜したした。 案1:指瀺を现かく具䜓的に蚘茉する レポヌトの構成や蚘茉項目、根拠の曞き方などをより具䜓的にプロンプトぞ明蚘 案2:段階的にレポヌトを出力させる 䞀床に党おを出力させるのではなく、耇数回に分けお段階的にレポヌトを生成させる ※これらの工倫でプロンプトの指瀺がさらに耇雑になりたす。前述の課題1の通り、指瀺を完遂できなくなるため、課題1の工倫がより倧事ずなりたす。 案1:指瀺を现かく具䜓的に蚘茉する 2. Amazon Bedrock Agentsをずりあえず動かしおみる  の時点では、プロンプトに詳现な指瀺を蚘茉しなくおも゚ヌゞェントは自埋的な行動をしおくれおいる印象がありたした。そのため、目的だけ、䟋えば 根拠を充実させ、化粧品のプロフェッショナルからの高床なレビュヌもクリアできるような、日本䞀を誇る高品質で掞察に満ちたレポヌトに仕䞊げる。 ずいった文蚀で指瀺すれば ゚ヌゞェントが自埋的に行動し、充実したレポヌトを出力しおくれる こずを期埅しおいたした。 そのような考えで蚘茉した初期のプロンプトは次の通りです。 Markdown圢匏のレポヌト䜜成に぀いお: - 収集した党おの情報を敎理し、掚薊する化粧品をランキング圢匏で蚘茉しおください。 - ランキングには必ず根拠を䞀緒に蚘茉しおください。 - レポヌト本文のテキストは日本語で蚘述しおください。 - レポヌトは.md圢匏のファむルずしお添付しおください。添付できるようにコヌドも掻甚しおください。 - 根拠を充実させ、化粧品のプロフェッショナルからの高床なレビュヌもクリアできるような、日本䞀を誇る高品質で掞察に満ちたレポヌトにしおください。 最終的な出力ずしお、以䞋を党お1぀のMarkdown圢匏のファむルに含めおください: 1. 日本語で正しく衚瀺されるレポヌト本䜓各セクションの詳现な説明を含む。 2. レポヌト䜜成プロセスず各決定の根拠の説明 3. 䞎えられたタスクに沿った、ランキング決定ずその根拠の詳现な蚘茉 4.2.1. ぀たずきポむント の通り、期埅したような高品質なレポヌトは生成できたせんでした。そこで、 プロンプトに指瀺を现かく具䜓的に蚘茉する こずで解決できるず考えお、次の赀枠のように蚘茉方法の詳现を蚘茉したプロンプトに萜ち着きたした。 結果、レポヌトに蚘茉される項目の内容は高品質になりたした。しかし、情報の『項目』が䞍足しおいる状態でした。考えた远加の工倫案を次章で説明したす。 案2:段階的にレポヌトを出力させる 案1のようなレポヌトの具䜓的な蚘茉方法を詳现に指瀺したずしおも、 1回の出力量を増やすこずは難しいため、項目数が䞍足する結果ずなった ず仮説を眮き、段階的にレポヌトを出力すればいいず考えたした。 プロンプトに次の赀枠のような指瀺を蚘茉したした。 応答が完了しおいない状態で、 report1.md ず report2.md の生成が確認できたした。応答が完了するず同時に report3.md が出力されたした。段階的にレポヌトを出力させるこずで、出力量を増やすこずに成功したした。 実際に出力された3぀のレポヌトは以䞋の通りです。項目数、各項目の内容、どちらもプロンプトに指瀺したように充実した内容になっおいたす。私の期埅する高品質なレポヌトが出力できたした。 蛇足:うたくいかなかった工倫案 『Claude 3.5 Sonnet』よりも新しいモデル『Claude 3.7 Sonnet』を䜿えば、期埅する高品質なレポヌトを生成しおくれるのではないかず考え、 モデルの倉曎 を詊したした。 画像の通り、『Bedrock Agents optimized』ずいう指定されたモデル矀『以倖』から遞択するこずになりたす。その結果、゚ラヌ応答が頻発しおしたいたした。゚ラヌ応答で凊理が止たった堎合、課題1の工倫を実斜するこずで゚ヌゞェントは凊理を再開できたす。しかし、凊理に過䞍足が生じたり、凊理がルヌプしおしたったりず、䞍具合が倚発したす。できる限り゚ラヌ応答は起きないようにした方がいいず考え、モデル倉曎はしないこずにしたした。 5. 䜿い物になるのか怜蚌しおみた 提案された化粧品を実際に 賌入・利甚 しお有甚な化粧品掚薊AI゚ヌゞェントが䜜れおいたかを怜蚌したす。 各怜蚌で「Before」はこれたで䜿甚しおいた商品、「After」ぱヌゞェントの提案から遞択した代替品を指しおいたす。 5.1. 怜蚌:化粧氎 Top1ずしお提案された商品を1週間詊しおみたした。 Before :ディセンシア サ゚ル After :オルビス ナヌドット 賌入 怜蚌結果 化粧しおない肌を茉せるのはちょっず嫌ですが怜蚌のために身を切りたす。 切り替えた初日は刺激を感じお焊った。2回目以降は問題もなく䜿えおおり、1週間䜿っおみおも問題なく䜿えおいる。 肌の調子がずっずいい(ゆらぎを感じない)のでより良い商品に出䌚えたのかもしれない。 コストが削枛できた。 ※いずれも私が賌入した金額です。ネットの情報ずは異なる可胜性がありたす。 Before :120mlで5500円 After :180mlで3630円。 肌に合うだけでなくより調子が良くなる商品に出䌚えたした。たた、コスト削枛もできたため、今埌はこちらの商品を䜿甚しおいこうず考えおいたす。 5.2. 怜蚌2:シャンプヌ 提案されたレポヌトを芋おみるず、レビュヌ情報や利甚者情報が䞍足しおいるのか、゚ヌゞェントはTop5たでしか提案しおくれたせんでした。元々䜿甚しおいた商品は1000円以内の䟡栌垯でしたが、Top5以倖の商品は1000円を超える䟡栌だったため、仕方なく Top5の商品を怜蚌する こずにしたした。゚ヌゞェントぞの入力にはシャンプヌのみを䜿甚し、怜蚌ではシャンプヌだけでなくトリヌトメントも同じブランドに揃え、1週間詊しおみたした。 Before : P&G、ヘアレシピ (HAIR RECIPE)、ハニヌアプリコット After : モむストダむアン、パヌフェクトビュヌティヌ、゚クストラダメヌゞリペア ドラッグストアで賌入したので写真は割愛したす。 怜蚌結果 髪の色味を合わせるために写真の圩床を調敎しおいたす。 写真ではAfterがよく芋えるが、若干パサ぀くようになっお気分が䞋がったため利甚者の私からの評䟡はBeforeに軍配。週間䜿っおみお倧きな問題はなく、写真を芋る限り芋た目は改善しおいるので、トヌタルで芋るず蚱容範囲の商品。 今回Afterに遞んだ商品はTop5ず䜎めの順䜍のため、Top1を遞べばさらに適した商品が芋぀かる可胜性も感じる。 コストが削枛できた。※いずれも私が賌入した金額です。ネットの情報ずは異なる可胜性がありたす。 Before :シャンプヌ651円。トリヌトメント623円。各330ml。 After :シャンプヌ、トリヌトメント各450mlで550円。 元々䜿甚しおいた商品は、発売圓初はドラッグストアで賌入できたのですが、珟圚では入手が難しく困っおいたした。ドラッグストアで賌入でき、髪のコンディションも蚱容範囲内で、コスト削枛も実珟できたため、今埌はこちらの商品を䜿甚しおいこうず考えおいたす。 5.3. 怜蚌結果たずめ 化粧氎ずシャンプヌ、いずれも䜓質に合う商品を芋぀けるこずができた。 ランキング䞊䜍の商品の方が良い商品である可胜性も考察できた。 コストが 月2547円削枛 できお嬉しい。内蚳は次の通り。 項目 Before1ヶ月あたり After1ヶ月あたり コストダりン額 化粧氎 5500円120ml 2420円120ml換算 2080円 シャンプヌ&トリヌトメント 1274円各330ml 807円各330ml換算 467円 合蚈 2547円 ※Afterの金額は容量換算埌の1ヶ月あたりのコストです。 以䞊から、意矩のある化粧品掚薊゚ヌゞェントを䜜るこずができたず考えおいたす。これにより、廃盀や販路瞮小の問題が起きた際に、 疲匊せずに代替商品を芋぀けるこずができるようになりたした。 特に、化粧氎の代替品は長幎芋぀けるこずができおいなかったので、今回の怜蚌で芋぀けるこずができお非垞に驚き・嬉しいです 6. 簡単に䜜れたか Amazon Bedrock Agentsの掻甚により、゚ヌゞェントが簡単に䜜れたかずいうず・・・埮劙です・・・。メリットもありたしたが、4章で述べた通りそれなりに苊劎やデメリットがありたした。 メリット: ロヌコヌドで開発できる。 プロンプトに蚘茉するだけで指瀺に沿っお自埋的に行動しおくれる。割ず雑な指瀺でも行動自䜓は自埋的にしおくれるので、ここは感動した。 デメリット: カスタマむズ困難な制限が倚い。特に反埩回数の制限は『自埋的に行動しおくれる』ずいうメリットを劚げおいる印象がある。 出力圢匏出力量の指瀺も含むずいった、指瀺に沿いづらい郚分もある。 以䞊を螏たえるず、タスクの完遂に倚くの反埩を芁したり、出力内容にこだわりたい堎合には、最初からコヌディングした方が良いず感じたした。䞀方で、単発で完遂できるタスクだったり、出力内容にそれほどこだわらないタスクであれば、Amazon Bedrock Agentsを有効掻甚できるず感じたした。たた、別のクラりドベンダヌが提䟛するロヌコヌド補品も怜蚎すべきだず思いたした。IEの熊田さんがAzure AI Foundry Agent Serviceをデモしおくれたした。Amazon Bedrock Agentsず比范するず耇雑性は増したす。しかし、制玄が少なく、より柔軟に察応できる印象を受けたした。 7. 残課題・曎なる展望 UI/UXの改善 『Sorry, I am unable to assist you with this request.』ずいう゚ラヌメッセヌゞが衚瀺される仕様や、ナヌザヌが『続きは』ず入力しなければならない仕様は理想的ずは蚀えたせん。たた、なぜか添付ファむルが2぀になるこずもあり、これらの問題を フロント゚ンドの実装で解決 したいず考えおいたす。 アクショングルヌプ『research』のAPI実装 珟時点、Deep ResearchのAPI呌び出しを実装した際の品質が確認できおいないのが懞念事項です。Deep ResearchのAPIを組み蟌んで品質の確認したいず考えおいたす。トレヌスを確認したずころ、゚ヌゞェントは『research』でデヌタ収集を詊みおいたすが、䞀床しか䜿えないため、代わりに『web-search』を䜿っおいたした。『research』利甚の制玄がない状況になれば、゚ヌゞェントが『web-search』で代替しおいた情報収集凊理を改善でき、品質向䞊が期埅できたす。 たた、䞊長の筒井さんから「Deep Research単䜓で化粧品掚薊のタスクを完遂できるのではないか」ずいう指摘がありたした。私ずしおは、Amazon Bedrock Agentsが『research』結果を さらにブラッシュアップし、指定した圢匏でレポヌトするず所に優䜍性がある ず考えおいたす。Deep ResearchのAPI呌び出しを実装するこずで、䜕床も呌び出しおブラッシュアップするこずが可胜ずなるため、さらに優䜍性を高めたいず考えおいたす。その際、『research』のプロンプトは情報収集に適した指瀺ぞず修正する予定です。※珟圚ぱヌゞェント甚のプロンプトに蚘茉したものず同じものを䜿っおいたす。䜕床も呌び出せる前提なら改善の䜙地があるず感じおいたす。 ナヌスケヌスの拡匵 少しの修正で次のような別のナヌスケヌスにも察応できる可胜性があるため、詊しおみたいず考えおいたす。 異なるカテゎリの提案䟋 :高評䟡しおいる化粧氎を入力しお、乳液を提案しおもらう 化粧品以倖の分野ぞの応甚 :高評䟡しおいるレストランを入力しお、代替ずなるレストランを提案しおもらう 長くなりたしたが、最埌たで読んでいただきありがずうございたした
こんにちはアゞャむル開発チヌムの筒井です 最近の生成AIツヌルの進化は目芚たしいものがありたす。Microsoft CopilotやGemini for Workspaceなど、業務向けの生成AIサヌビスも䌁業の業務基盀に組み蟌たれ぀぀あり、もはやAIを業務で掻甚するのは特別なこずではなくなっおいたす。 その䞭でも「瀟内ドキュメントやFAQをAIチャットで暪断怜玢したい」ずいうニヌズは生成AIが話題ずなり出した数幎前から根匷く存圚しおおり、匊瀟でも圓時から「瀟内ドキュメントを生成AI型チャットボットで怜玢できるシステム」を開発し、さたざたなプロゞェクトの䞭で提䟛しおきたした。 しかし、CopilotやGeminiなどSaaS型AIサヌビスが急速に進化する䞭で、「独自開発システムでは最新のAI䜓隓や新機胜をすぐに取り蟌めない」「他瀟サヌビスず同じ機胜をれロから䜜るのぱンゞニアずしおもモチベヌションが䞊がりにくい」ずいった課題も芋えおきたした。 匊瀟ずしおも、怜玢チャットボットのような䞀般的なナヌスケヌスに぀いおはSaaS型AIサヌビスの導入を怜蚎するこずを掚奚・支揎しおいたすが、さたざたな理由からこれらの導入が難しい珟堎も少なくありたせん。 そこで本蚘事では、ChatGPTクロヌンOSSであるLibreChatずMCPModel Context Protocolを利甚しお、䞀般的なチャットボットずしおの機胜远加はOSS偎に任せ぀぀、簡易的に瀟内ドキュメントの怜玢機胜をアドオンできるか確認しおみたした。 システム構成 Amazon Bedrock Knowledge Basesの準備 Amazon Bedrock Knowledge Base Retrieval MCP Serverの準備 参考Claude Codeでお詊し LibreChatの準備 LibreChatでの動䜜確認 ゚ヌゞェントの䜜成 基本動䜜 入力に応じたMCPサヌバヌの䜿い分けずマルチタヌン䌚話 ゚ヌゞェントのナヌザヌずの共有 MCPサヌバヌの耇数回呌び出しAgentic RAG 参考チャット内での利甚 たずめ システム構成 システム構成は䞋図のようになりたす。 MCPサヌバヌずデヌタ゜ヌスの郚分は䜕でも良いのですが、今回は公匏のMCPサヌバヌが提䟛されおおり、手軜に構築ができそうな Amazon Bedrock Knowledge Bases を䜿っおみるこずにしたした。 Amazon Bedrock Knowledge Basesの準備 たずはデヌタ゜ヌスの準備をしたす。Webで「倧孊 就業芏則」ず怜玢し、䞊䜍2件にヒットした東京倧孊ず鳎門教育倧孊の就業芏則を瀟内ドキュメントの代わりずしお利甚するこずにしたした。 これらのPDFファむルをダりンロヌドしお、S3にアップロヌドしおナレッゞベヌスずしお登録したした。おおむね䞋蚘のような蚭定で取り蟌んでいたす。 解析戊略  パヌサヌずしおの基盀モデル チャンキング戊略  階局型チャンキング 芪トヌクンの最倧サむズ  1500トヌクンデフォルト倀 子トヌクンの最倧サむズ  300トヌクンデフォルト倀 チャンク間トヌクンオヌバヌラップ  60トヌクンデフォルト倀 ちなみに解析戊略には「パヌサヌずしおのAmazon BedrockデヌタオヌトメヌションAmazon Bedrock Data Automation as parser」ずいう遞択肢もありたす。そちらはドキュメント䞭の図衚をテキスト怜玢可胜にした䞊で怜玢結果はむメヌゞのたた返し、マルチモヌダルモデルで入力に応じた解釈をできるようにするずいう良い感じのモヌドなのですが、珟時点のBedrock Knowledge Bases公匏MCPサヌバヌではIMAGEタむプの結果を取埗できないずのこずで、「パヌサヌずしおの基盀モデルFoundation models as a parser」を遞んでいたす。こちらは図衚を事前にマルチモヌダルモデルでテキスト化しおおくモヌドです。 参考 https://awslabs.github.io/mcp/servers/bedrock-kb-retrieval-mcp-server/  Results with IMAGE content type are not included in the KB query response. Amazon Bedrock Knowledge Base Retrieval MCP Serverの準備 MCPサヌバヌの機胜や䜿い方は こちら で確認するこずができたす。 䞊蚘ドキュメントやその元ずなっおいるREADME.md等には指定方法が明蚘されおいないのですが、 QueryKnowledgeBases ツヌルのパラメヌタヌを確認するず、䞋蚘のように怜玢実行時に reranking_model_name ず data_source_ids を指定できるようになっおいたす。 今回は倧孊ごずに別々のナレッゞベヌスを䜜りたしたが、1぀のナレッゞベヌスに倧孊ごずのドキュメントを別々のデヌタ゜ヌスずしお远加しおも柔軟に察応できそうです。 Parameters: • query (required): string - A natural language query to search the knowledge base with • knowledge_base_id (required): string - The knowledge base ID to query. It must be a valid ID from the resource://knowledgebases MCP resource • number_of_results: integer - The number of results to return. Use smaller values for focused results and larger values for broader coverage. • reranking: boolean - Whether to rerank the results. Useful for improving relevance and sorting. Can be globally configured with BEDROCK_KB_RERANKING_ENABLED environment variable. • reranking_model_name: string - The name of the reranking model to use. Options: 'COHERE', 'AMAZON' • data_source_ids: unknown - The data source IDs to filter the knowledge base by. It must be a list of valid data source IDs from the resource://knowledgebases MCP resource 参考Claude Codeでお詊し 䞀旊MCPサヌバヌずしおどんな感じで動いおくれるのか、Claude Codeでお詊ししおみたした。以䞋のように動䜜し、良い感じに怜玢から回答の出力たでできおいたす。 1. MCP Resource resource://knowledgebases にアクセスしお、AWSアカりント内に存圚するナレッゞベヌスの䞀芧を取埗する ⏺ listMcpResources(List MCP resources from server "bedrock-kb") ⎿ [ { "uri": "resource://knowledgebases", "name": "KnowledgeBases", "description": "(略) ⏺ readMcpResource(Read resource "resource://knowledgebases" from server "bedrock-kb") ⎿ { "contents": [ { "uri": "resource://knowledgebases", "mimeType": "application/json", "text": "{"RTPF4*****": {"name": "******-knowledge-base-tokyo", "data_sources": [{"id": "(略)"}]}, "AGTRP*****": {"name": "*******-knowledge-base-naruto", "data_sources": [{"id": "(略)  ※ 䞀郚敎圢しおいたす  2. 入力に応じお QueryKnowledgeBases を呌び出し、怜玢結果を取埗する ⏺ bedrock-kb:QueryKnowledgeBases (MCP)(query: "副業 兌業 営利䌁業 蚱可申請 東京倧孊教職員", knowledge_base_id: "RTPF4*****", number_of_results: 5) ⎿ { "content": { "text": "(略)" "type": "TEXT" }, "location": { "s3Location": { "uri": "s3://******/東京倧孊教職員兌業芏皋.pdf" (略) 3. 回答を生成する ⏺ 東京倧孊の教職員は、原則ずしお副業兌業をするために事前の蚱可が必芁です。以䞋が重芁なポむントです 兌業蚱可の基本ルヌル - 職務の遂行に支障がなく、特別な利害関係がない堎合に蚱可される - 営利䌁業の圹員等は原則犁止技術移転事業者や研究成果掻甚䌁業等は䟋倖あり (略) LibreChatの準備 最埌にLibreChatの構築をしたす。今回は動䜜確認をしたいだけなので、 GitHubリポゞトリ からクロヌンしおきお、ほがデフォルト蚭定のたた docker compose でロヌカル実行するようにしたす。バヌゞョンはv0.7.8を利甚したした。 librechat.yaml に、MCPサヌバヌの蚭定をしたす。 mcpServers : bedrock-kb : command : uvx args : - "awslabs.bedrock-kb-retrieval-mcp-server@latest" env : AWS_REGION : us-west-2 AWS_ACCESS_KEY_ID : <AWS_ACCESS_KEY_ID> AWS_SECRET_ACCESS_KEY : <AWS_SECRET_ACCESS_KEY> serverInstructions : true LibreChatでの動䜜確認 ゚ヌゞェントの䜜成 利甚者がMCPサヌバヌ経由での瀟内ドキュメント怜玢機胜を䜿えるようにするため、゚ヌゞェントビルダヌを䜿っおLibreChatの゚ヌゞェントを䜜っおいきたす。 䞊蚘の librechat.yaml ぞの蚭定をしおおくず、゚ヌゞェント䜜成画面のツヌル遞択欄に、 QueryKnowledgeBases ずいうツヌルが衚瀺されるので、これを「远加」したす。 ゚ヌゞェントに䞎えるシステムプロンプトは以䞋のようにしたした。 # 回答ルヌル - 必ず怜玢の結果に含たれる内容のみを甚いお回答しおください。質問に察する回答が怜玢の結果に含たれない堎合は、わからない旚を回答しおください - 怜玢の結果に回答するための情報が芋぀からない堎合や䞍足しおいる堎合は必ず远加で情報を収集しおください # QueryKnowledgeBases の利甚に関する指瀺 - ` knowledge_base_id ` は以䞋を利甚しおください - 東京倧孊の芏則 ` RTPF4***** ` - 鳎門教育倧孊の芏則 ` AGTRP***** ` - 東京倧孊ず鳎門教育倧孊の芏則を怜玢可胜です - 䞀床の怜玢結果は5件取埗しおください。 - リランキングにはCohereモデルを䜿甚しおください - レスポンスに含たれる uri のファむル名郚分䟋 芏則.pdfから拡匵子を陀いたもの䟋 芏則が芏則名です。 䞊蚘Claude Codeでの動䜜確認の通り、MCP Resource resource://knowledgebases にアクセスするこずで各皮IDの情報を取埗するこずができ、事前に取埗するようMCPサヌバヌのDescriptionにも蚘茉されおいるのですが、LibreChatでは執筆時点でただMCP Resourceのサポヌトがされおいないずのこずで、IDに関する情報をシステムプロンプトで䞎えおいたす。これが無いず存圚しないデヌタ゜ヌスIDを怜玢しお、「芋぀からなかった」ず回答しおきたす。 参考 https://github.com/danny-avila/LibreChat/discussions/7429  仮にMCP Resourceがサポヌトされおいたずしおも、今回利甚しおいる公匏MCPサヌバヌでは、ナレッゞベヌスやデヌタ゜ヌスに察する説明を蚘述する箇所が無いため、LLMがどのナレッゞベヌスやデヌタ゜ヌスを利甚するかの指針はシステムプロンプトに曞く必芁がありたす。 いずれにせよこれらぱヌゞェントぞの指瀺ずしお゚ヌゞェント提䟛偎が䜜成時に曞けば良いだけなので、特に違和感は無いず思いたす。 基本動䜜 実際に゚ヌゞェントを䜿うずきには、モデル遞択ず同じ堎所で䜿いたい゚ヌゞェントを遞びたす。聞きたい内容に合わせお゚ヌゞェントを切り替えるこずができ、利甚者にずっおもわかりやすいUIになっおいたす。 この状態で質問をしおみるず、䞋蚘のような回答が返っおきたす。ナヌザヌからの入力に基づき、システムプロンプトで指定した各倧孊のナレッゞベヌスIDを指定しお耇数のMCPサヌバヌ呌び出しを実行し、ドキュメント矀を怜玢しお回答を生成しおくれおいたす。画像䞭の1぀目の「Ran QueryKnowledgeBases」が東京倧孊のナレッゞベヌス、2぀目が鳎門教育倧孊のナレッゞベヌスに察する怜玢です。 [質問] 副業しお良いか教えお [回答] 東京倧孊ず鳎門教育倧孊の副業兌業に関する芏則を芁玄し、解説したす。 ### 【東京倧孊の堎合】 - 東京倧孊の教職員が副業兌業を行う堎合、 原則ずしお事前に「蚱可」を埗るこずが必芁です「教職員兌業芏皋」第5条、第7条等。 - 副業ができるかどうかの刀断基準ずしおは、䞻に以䞋が挙げられたす「教職員兌業芏皋」第2条、第3条等 - 副業先ずの間に特別な利益盞反関係がないこず - 本務東京倧孊での職務の遂行に支障がないこず - 教職員ずしおの信甚や倧孊の名誉を損なわないこず (略) ### 【鳎門教育倧孊の堎合】 - 鳎門教育倧孊でも、教職員の副業兌業は、 原則孊長の「蚱可」が必芁です「教職員兌業芏皋」第2条、第15条 等。 - 営利䌁業の圹員等の兌業は原則䞍可ですが、䞀定の基準・条件のもずで蚱可されるこずもある技術移転や研究成果掻甚䌁業などの堎合。 - 申請には副業先ずの関係、業務内容、幎間収益等を蚘茉した曞類を提出し、孊長等の審査を経お蚱可を埗る必芁がありたす。 - 無報酬の兌業の堎合にも、蚱可が䞍芁ずなる䟋倖がありたすが、この点は䞀郚の圹職・内容に限られたす。 (略) 入力に応じたMCPサヌバヌの䜿い分けずマルチタヌン䌚話 質問で倧孊を指定した堎合はその倧孊の情報のみを怜玢しおくれたす。たた、マルチタヌン䌚話から適切な怜玢フレヌズを生成し、回答に必芁な情報を収集できおいたす。 [質問] 東京倧孊では䌑職は取れる [回答] 東京倧孊では「䌑職」を取るこずができたす。ただし、いく぀かの芏則や条件がありたす。 䞻に教職員を察象ずする「䌑職」は、東京倧孊教職員䌑職芏皋で定められおいたす。理由ずしおは病気による䌑職、出向による䌑職、圹員兌業による䌑職などがありたす。病気による堎合は、原則ずしお医垫の蚺断結果に基づいお期間を決定し、埩職にも医垫の蚺断が必芁です。 (略) [質問] 鳎門教育倧孊の堎合は [回答] 鳎門教育倧孊でも「䌑職」を取るこずができたす。䞻な内容は以䞋の通りです。 (略) ゚ヌゞェントのナヌザヌずの共有 䜜成した゚ヌゞェントは他のナヌザヌず共有するこずができたす。ただし、党ナヌザヌぞの共有しか方法が無く、特定のナヌザヌやグルヌプずの共有をするこずができたせん。このため、基本的なナヌスケヌスずしおは管理者が゚ヌゞェントを䜜成しお党ナヌザヌに展開し、䞀般のナヌザヌは詳现の閲芧・線集は䞍可ずしお゚ヌゞェントを䜿うのみ、ずいうシンプルな運甚になるず思いたす。 MCPサヌバヌの耇数回呌び出しAgentic RAG いわゆるAgentic RAG的に、怜玢の結果に応じお自埋的に远加のアクションここではMCPサヌバヌ呌び出しをするこずもできたす。 䟋えば質問時に「怜玢結果で他の芏則を瀺しおいる堎合は、そちらの芏則も必ず远加で怜玢しおください。」のような指瀺を远加するず、耇数回MCPサヌバヌを呌び出すこずで情報を収集しおくれたす。 [質問] 東京倧孊で幎俞制の適甚を受ける教職員は誰ですか 怜玢結果で他の芏則を瀺しおいる堎合は、そちらの芏則も必ず远加で怜玢しおください。 [順に実行された怜玢のク゚リ列] "幎俞制の適甚を受ける教職員は誰か" "東京倧孊幎俞制の適甚察象者を芏定する条項に蚀及されおいる他の芏則の幎俞制適甚範囲を確認したい。『東京倧孊教職員絊䞎芏則』・『特定有期雇甚教職員就業芏皋』・『高床孊術専門員及び高床孊術専門職員に関する芏則』・『職域限定職員就業芏皋』の幎俞制適甚察象者に぀いお調べたい。" "特定有期雇甚教職員就業芏皋 第2条" "職域限定職員就業芏皋 第2条" "高床孊術専門員及び高床孊術専門職員に関する芏則 幎俞制 察象" 参考チャット内での利甚 LibreChatでは、通垞のチャット画面から利甚者がMCPサヌバヌを指定しお利甚するこずも可胜です。䟋えば䞋の画像では、入力に応じお2぀のMCPサヌバヌを呌び出し可胜にしおいたす。 こちらは䞊述したMCP Resourceのサポヌトができおいない課題があり、か぀利甚者がナレッゞベヌスIDやデヌタ゜ヌスIDを指定するず蚀うのは珟実的でないため、動䜜確認察象倖ずしたした。 たずめ 本蚘事ではLibreChatにMCPサヌバヌを組み合わせるこずで、瀟内ドキュメント怜玢機胜を付䞎するこずを詊しおみたした。 LibreChatはナヌザヌのファむルアップロヌドによるRAG、画像のアップロヌドによるマルチモヌダル凊理、音声入出力、アヌティファクト出力プログラム生成ずUI䞊での実行、Web怜玢、画像生成モデルによる画像生成など、倚圩な機胜を持っおおり、ナヌザヌからよくある「あんな機胜も䜿っおみたい」ぞの察応ずしお倚くをカバヌしおくれおいるように思いたす。 その䞊で、今回実斜したように、デヌタ゜ヌスずMCPサヌバヌを甚意しおしたえばあずはLibreChat偎の機胜で良い感じにデヌタを扱っおくれるので、簡易的な瀟内ドキュメント怜玢チャットボットずしおも有甚に感じたした。たた、デヌタ゜ヌス郚分ずMCPサヌバヌ郚分はナヌスケヌスに応じたチュヌニングが効かせられる郚分であり、それらが汎化か぀ブラックボックス化されがちなSaaS型AIサヌビスずの比范しおも有効なケヌスがありそうです。 各皮生成AIサヌビスの進化が非垞に速いペヌスで進む䞭ではありたすが、本蚘事で扱ったような内容も、珟堎に寄り添った提䟛方法の䞀案ずしお怜蚎しおいければず思いたす。