-- Views
April 25, 26
スライド概要
2026年4月25日 JAWS-UG沖縄 Cloud on the BEACH 2026
アールスリーインスティテュートは、kintoneを中心とした クラウドサービスを活用することで お客様の継続的な業務改善をサポートします。
Amazon Bedrock AgentCoreで サポートサイト検索支援Botを作った話 2026/04/25 JAWS-UG沖縄 アールスリーインスティテュート 西島 www.r3it.com
こんにちは! アールスリーインスティテュート サービスグループ gusukuユニット デベロップメントチーム マネージャー 西島 幸一郎 @k_nishijima #しまてく ハッカーズチャンプルーのなかのひと https://hackers-champloo.org/ www.r3it.com
アールスリーインスティテュート システムの受託開発と 法人向けSaaSの二本立て 創業 社員数 拠点 2000年 50名 大阪 10億 東京 沖縄 みんなの家 以上 年商 以上 www.r3it.com
https://www.r3it.com/recruitment カジュアル面談、お気軽に😄 www.r3it.com
本日のお品書き ● Amazon Bedrock AgentCore 活用事例 この資料は人間が書いています(deck使ってます) www.r3it.com
最近のお仕事状況 日本語をめちゃくちゃいっぱい書いてます ● Visual Studio Codeを開くことがほとんどなくなった ● ターミナルとブラウザとEmacsでほとんどすべて終わってる... ● 生産性は上がって...いやどうなんだろう?😅 www.r3it.com
最近のお仕事状況 生産性・・・? 2-3個の別々のプロジェクト/タスクをAIに書かせてやっていると、 結局脳が焼き切れるというかスイッチングコストが上がったり 『AIに書かせた後、自分が最終的な動きを見ていない』コードが増える。 You're the bottleneck! 皆さんはどうですか? www.r3it.com
それはさておき、こんなものを作ってま す 事例紹介 ● SaaSサポートサイトの検索支援AI (Amazon Bedrock AgentCoreの事例) ● おまけ: 検索エンジン(え? www.r3it.com
それはさておき、こんなものを作ってま す SaaSサポートサイトの検索支援AI ● 使うひと: 自社サービスのユーザー ユーザーに直接応答するのでドキドキ ● 生成AIが応答する内容: サポートサイトやリファレンスサイトの中身 www.r3it.com
まずデモ www.r3it.com
と思ったがすまん 諸般の事情によりまだリリースできていない! ● ごめんなさいごめんなさいごめんなさい ● 全体システム概要は 某銀行のこれとほぼ一緒 なのでこれを見よう ● 「ホームページ作りました、みてください!」 http://localhost:10001/ www.r3it.com
作成のモチベーション ユーザーは検索窓を見つけると文章で検索したくなる ● ChatGPTが一般に流行し始めてからの傾向 ● いわゆるキーワード検索前提だと、 ゼロ結果を返すことが増える → それはユーザーにとって ストレスなので改善したい www.r3it.com
システム概要 www.r3it.com
システム概要 フロントエンド: サポートサイトに貼られるのでWebのウィジェット バックエンド: APIGW - Lambda(Go言語) - AgentCore Runtime Lambdaが大きな非機能要件を担うかたち www.r3it.com
システム概要 ● Svelte で書かれた フロントエンドウィジェット ● 検索機能と生成AIとのチャットとを シームレスに橋渡しする →検索ゼロ結果を撲滅 www.r3it.com
システム概要 各コンポーネントは適材適所 ● APIGW + Goで書かれたLambda ● Pythonで書かれたAgentCore ● データソースはナレッジベース (S3 Vectors) ● LLMは Claude Sonnet/Haiku 4.x系 なお、西島はPython書きたくないので、できたコードは1ミリも触っていません(ぇ www.r3it.com
機能概要 生成AIとはあまり関係ないところも多い ● APIGWのWebSocketでストリーミングレスポンス ● 会話履歴もちゃんと覚えています ● ユーザー評価リクエストもあり ● 発話単位の評価(LLM-as-a-Judge) ○ 回答根拠の有無・ハルシネーションのチェック・関連性・文脈理解、トーン& マナーの確認 www.r3it.com
フロントエンドとAPI Gateway Websocketでストリーミング ● Svelte(フロントエンド) ← Websocket → APIGW ● APIGW → Lambda(Go) ←ここもWebSocket→ AgentCore Runtime www.r3it.com
API GatewayとLambda 非機能要件はほとんどLambdaに寄せている ● (なんでもGoで描くのが好きなので...) ● セキュリティ、並列数管理、リクエストキューイング、LLMのエラーハンドリ ングなどなど ● 後ろにいるAgentCoreはほとんど無防備な状態なので、 ここが頑張る必要がある www.r3it.com
AgentCoreについて 結局何なの? 小学生向けに翻訳すると こうなるらしい www.r3it.com
AgentCoreについて 結局何なの? Developer Guideより www.r3it.com
AgentCoreについて 結局何なの? 一言で言うと ● LLMと話すPython(今はTypeScriptも?)を (たぶん)ECSで動かすマネージドな環境 ● なのでDockerfile重要 www.r3it.com
フロントエンドとAPI Gateway Websocketでストリーミング ● Python側のコードめんどくさくない? →ここらへんが BedrockAgentCoreApp のお力にて @app.websocket でOK “Get started with bidirectional streaming using WebSocket” https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runt ime-get-started-websocket.html www.r3it.com
ところでPython環境について ライブラリバージョン管理がとても面倒 ● → nixで閉じ込めています devenv.nixの一部 languages.python.venv.enable = true; languages.python.venv.requirements = '' bedrock-agentcore-starter-toolkit==0.3.5 ''; ● agentcore のランタイムが他と当たらなくて済むのでおすすめ www.r3it.com
機能はおおよそ良いが、 幻覚と戦い続けている... www.r3it.com
ガードレール使わないの? これ自体はちゃんと機能する(お高いけど) ● だがしかし、WebSocket はストリーミングなので、 ガードレールが反応して判定する頃には、 すでにブラウザにそのレスポンスが届いているw どうしろというのだ!!! 答えは「バッファリングしたら?」なのだけど、そしたらストリーミングの意味が... www.r3it.com
戦いの日々は 続きます... www.r3it.com
おまけ www.r3it.com
SaaS is dead の文脈 OpenSearchのリプレース 個人的に OpenSearch(ElasticsearchのAWS版フォーク) を「検索のみ」に使用す るのは、機能/コストの観点から勿体ないと思っています。 なので、打ち合わせ中の退屈をしのぐために(小声)生成AIに作らせていました。 多分もうすぐ実戦投入予定。 www.r3it.com
SaaS is dead の文脈 OpenSearchのリプレース ● AWS Lambda環境で動くように(とにかく素早いスピンアップ) ● Go言語、シングルバイナリ、ビルド時にインデックス作成&embedでどこに置 いても検索できる ● 複数インデックスを持ち、必要なら並列に検索してスコアリング 一言で言うと「日本語検索でもちょっと賢いgrep」です。 オープンソースにしようと思ったけど、検索したら同名プロジェクトがすでにあったわw www.r3it.com
おわり www.r3it.com