Claude APIのコースを受講しながら、「動くものを作らないと身につかない」という確信があった。だから頼まれてもいないのに、化粧品ブランドのCS業務をLINE botで自動化することにした。それがcosme-botの始まりだ。
「受講しながら作る」という学び方
自分はエンジニアではない。本業は経営企画とデータ分析だ。Claude APIを触り始めたきっかけは、Anthropicが提供している「Building with the Claude API」というコースで、受講しながら「このままコースだけ終えても意味がないな」と感じていた。
題材を探していたとき、ちょうど友人にプレゼントを買おうとしていた化粧品ブランドが浮かんだ。「これをLINE botにしたら使えるかもしれない」と思った。もし、これがクオリティ高く作れれば、社長1名でOEM体制で商品を作っているような会社でも、CS対応の効率が大幅に上がる。
構成はシンプルにした。LINE → Railway(FastAPIを動かすサーバー)→ Claude API → LINE、という経路だ。会話履歴はSupabaseで長期保存する。ブランド知識はbrand_sheet.mdというファイルにまとめて、AIへの指示文に注入する形にした。全6章・14製品分の情報を収録した。
コースで学んだXMLタグやOne/Multi-shotという概念が、そのまま実装で使えた。「これはこういう場面で使うのか」という理解の仕方が、受講だけのときより確実に解像度が高かった。
3日間で動いた。ただし、ハマった
開発は週末集中でやった。Sprint #1は環境構築からLINEとの疎通確認まで。これが約1時間で終わった。Sprint #2でブランドシートの整備とマルチターン対応(複数回のやり取りを記憶する機能)を実装した。Sprint #3でSupabaseによる長期記憶を追加した。実質稼働は土日と水曜の夜、合わせて3日間くらいだ。
ただ、素直に進んだわけではない。
まず、SupabaseのUIが自分が想定していたものと変わっていた。APIキーの形式が新旧で違っていて、接続エラーが出続けた。ドキュメントと画面が一致しない系のハマりは、地味にきつい。
次に、LINEがMarkdownに対応していない問題だ。AIはデフォルトだと「**太字**」や「- 箇条書き」を使ってくる。LINEでそれを送ると記号がそのまま表示されてしまう。これはシステムプロンプトで「絶対にMarkdownを使うな」と明示することで解決した。
もう一つ。AIが質問ばかり返してくる問題があった。ユーザーが「肌荒れに何がいいですか?」と聞くと、「どんな肌質ですか?」「普段のケアは?」と逆質問が続いて、いつまでも提案に辿り着かない。プロンプトに「まず提案してから深掘りする」という行動原則を明示したら、解決した。
実案件が来た
cosme-botを作り終えた頃、友人から連絡が来た。彼の事業で顧客対応をAIで自動化できないか、という相談だった。
問い合わせ内容を整理すると、パターンが見えてきた。サービス内容の確認、メールが届かない問い合わせ、ツールの確認、この3パターンに分類できた。
cosme-botで作ったCSボットの構造を応用しつつ、今回は「プロンプトの品質をどう測るか」という問題に向き合うことにした。感覚でプロンプトを調整するのではなく、自動で採点して、スコアが基準を超えるまでイテレーションを回す仕組みを作りたかった。
9回回して、スコア8.08を出した
仕組みの構造はこうだ。Claude APIで回答を生成し、別のモデル(claude-haiku)が自動採点する。採点は複数の観点(返信の的確さ・トーンの適切さ・1回完結できているかなど)をスコア化して、overallスコアを出す。目標ラインを8.0/10に設定した。
イテレーションを9回回した。改善のたびにプロンプトを書き直して、採点結果を見て、また書き直す。9回目で8.08を達成した。その内容を本番のプロンプトに反映した。
「いい感じかな」という感覚だけで調整していた頃と比べると、どこが問題でどこが改善したのかが可視化されるのは、体験として全然違う。感覚の言語化に近い感覚があった。
エンジニアの知識がなくても、やりたいことが明確なら始められる、というのは本当だった。自分がそれを確認できた3日間だった。