コーディング未経験でチャットボットを作った話:学んだ教訓
コーディング知識ゼロから5ヶ月でGPT APIとChatGPT 4を使って動くチャットボットを 作りました。完全な初心者としての作り方と学んだことをお伝えします。
アップデート(2026年): このチャットボットはSydneyに進化しました!多くのイテレーションを経て、Sydneyは現在/ask/にいて、ブログコンテンツと製品に焦点を当てています。
昨年chatGPTがリリースされて以来、生成AIに魅了され、利用可能なAPIを使って自分のチャットボットを作ることを探求したいと思っていました。プログラミング経験のない完全な初心者として、これは野心的な目標でした。しかし、AIシステムの実践的な経験を積むために自分を追い込む決意をしました。動機は、これらのツールを使うだけでなく、どのように構築されているかについてより深い理解を身につけることでした。既存のコンテンツを活用して、ブログの記事に関する質問に答えるチャットボットを作ることにしました。このチャットボットをゼロから作る経験は非常に貴重な学びとなりましたが、まだまだ先は長いです。この記事では、コーディング初心者としてのこの旅で学んだ主要な教訓を共有します。
私の課題は何だったか?
- まず、プログラミングを知りませんでした。HTMLのことも(
<h1>や<h2>の使い方を除いて)ほとんど知りませんでしたし、ましてやPythonや他のプログラミング言語は全くでした。 - もちろん、クラウドにアプリケーションをデプロイする方法も知りませんでしたし、Docker、Cloud Runなどは聞いたこともありませんでした。
- MySQL、仮想インスタンスなどを知らなかったため、このウェブサイトをBluehostからGCPに移行することさえできませんでした。
- SSH、公開鍵、秘密鍵などについても何も知りませんでした T.T
- 機械学習や高度な数学のバックグラウンドもありませんでした。
- そして若くありません :| フルタイムの仕事を持つ40歳です。
しかし約5ヶ月後、OpenAI GPT APIとたくさんのChatGPT 4の助けを借りて、バージョン0.1のチャットボットを作りました。バージョン0.1というのは冗談ではありません。期待にはまだまだ遠い(非常に遠い)ですが、まあ「動いて」います(一応)。できること:
- 以前私が書いたトピックについてチャットボットに質問すると、複数の記事にわたるコンテンツを統合して回答を提供してくれます。
- このポイントは重要です。以前、既成のソリューションの導入について書きましたが、共通の問題はそれらのチャットボットが記事をまたいでコンテンツを統合しないことでした。チャットボットがチャットボットというよりも検索機能のように「感じ」ました。
- 私のブログ記事についての質問にのみ回答するように設計されているので、他のトピックについて質問すると、答えられないと言う可能性が高いです。
- 知識ベースには、過去17年間に公開したすべての記事が含まれており、2023年9月末までの約500記事です。
チャットボットがまだできないことはたくさんあります:
- 私が書いた記事の特定の数字を正確に思い出せません。
- 公開日についての質問に正確に答えられません。
- セキュリティ上の問題がたくさんあると思います T.T(悲しい、悲しい、悲しい顔)
- その他たくさん
2024年2月アップデート:
チャットボットのバージョン2.1が利用可能です。「チャットボットv2.10公開:スピード、スケーラビリティ、シンプルさの向上でユーザー体験をレベルアップ」の記事をご覧ください。
この旅の最初のフェーズで何を学んだか?
1. ChatGPT 4は基本的/中級レベルのコーディングタスクのほとんどをこなせる
何を探しているか分かっていて、プロンプト/コンテキストの共有が具体的であれば。
鍵は、マシンに何をさせるかを知っていることです。タスクが十分に具体的であれば、与えられたコーディングタスクの「ほぼすべて」をこなせます。「ほぼすべて」と意図的に言っています。なぜなら、与えた例に従うことに繰り返し失敗するからです。
chatGPT 4が生成するコードは、後で再利用できるほどモジュール化されていることが多いです。マシンはコード全体に具体的なコメントも含めてくれます。
2. 基本的なコーディング/ITのレッスン/コースを受ける
私と同じ立場だったら、知らないことについて何を聞けばいいかわからないでしょう。これを克服するいくつかの方法:
- プロジェクトの全体的な目的をchatGPTに説明し、すべてのステップの概要を提供するよう求めます。これにより、もっと学ぶ必要がある分野の大まかなアイデアが得られます。
- chatGPTの指示に盲目的に従うだけでは、意味が通じないかもしれません。(私はこれを試しました :P)
- これらの基礎コースは非常に役立ちました。広い(しかし深くない)知識を与えてくれるので、異なるパズルがどのように組み合わさるべきかがわかります。
3. ChatGPT APIを使ったシステム構築に関するこれらの無料短期コースを修了する
chatGPT APIに関する2つのコースで多くの時間を節約できます:
これらのコースは初心者向けですが、数ヶ月前に初めて出会った時は、言われていることを理解するのに十分な基礎知識がなく、約10分後に見るのを止めました。その後、OpenAI APIや様々なプロンプトとしばらく格闘し、行き詰まってからこれらのコースを思い出しました。基本的に、このバージョン0.1を構築するために必要なすべての答えを与えてくれました。
プロンプトエンジニアリングのコースは特に役立ちました。chatGPTに特定の方法で出力するよう指示する方法を教えてくれたからです。例えば、コースを見なければこのタイプのシステムメッセージは思いつかなかったでしょう:
ユーザーに関連するフォローアップの質問を必ず尋ねてください。」
HTML互換の箇条書きフォーマットと改行は、チャットボットの回答が長い場合にユーザーにとって読みやすくするのに非常に役立ちます。
4. 実際にOpenAIのドキュメントを自分で読む
怠け者なので :D 最初はOpenAIのドキュメントを読む気になれませんでした。ドキュメントをchatGPTにコピー&ペーストして、参照ソースとして使い、実際のコードで私をガイドするように頼みました。うまくいかず、自分でドキュメントを読んでからchatGPTにもっとターゲットを絞ったリクエストをするまで、かなりの時間を無駄にしました。
5. 会話が長くなりすぎたり、数時間後に再開したりするとchatGPTは簡単に迷子になる
人間と同じように、chatGPTは会話が長くなると簡単に迷子になるので、驚くべきではないのでしょう。どういう意味かというと:
- 意味のないコードを推薦し始める
- あるいは、最近教えてくれた別のコード/アドバイスを思い出せない
また、数時間(または一晩)作業を中断してから戻ると、chatGPTに会話履歴全体を読んで確認したことを伝えた後でも、人間と同じように、最近のコンテキストとコードベースをもっとたくさん提供する必要があります。そうしないと、以前教えてくれた多くの詳細を完全に「忘れて」いるように見えます。
6. GPT 4 APIは使用コストが高いので、できるだけGPT 3.5を試す
例えば、GPT 3.5でもうまくできる要約タスクにGPT 4 APIを使って$20を無駄にしました。また、数百のファイルに「解き放つ」前に、まず数ファイルでコードをテストしてください。GPT APIのコストはすぐに膨らみます。
7. OpenAI Cookbookを味方にする
やはり、事前にOpenAIのサンプルcookbookをチェックしない(より正確には知らない)という間違いを犯しました。そこでは以下を見つけることができます:
- tiktokenを使ったトークンカウント方法:chatGPTに頼むだけだと、GPT 3の古い方法に依存し、最新のアプローチではないため重要です。
- Embeddingベースの質問応答検索:基本的に同じアプローチを使ってチャットボットのバージョン0.1を構築しました。
8. コンテキストウィンドウの長さは初心者にとって扱いにくい
GPTモデルごとに最大トークン制限が異なり、トークン制限内に収まるようにコードを修正することは初心者(私のような)にとって容易ではありません。非常に長いブログ記事がたくさんあるため、この部分に多大な時間を費やしました。
また、チャットボットには回答する前に複数の記事にわたるコンテンツを統合してほしいので、トークン制限に頻繁に直面しました。
9. バージョン管理、バージョン管理、そしてバージョン管理
これは専門家にとっては超直感的かもしれませんが、コーディング初心者の私にとっては、痛い目を見て学ばなければなりませんでした。そして、このプロジェクトに適したgitコミットの頻度も学ばなければなりませんでした。なにしろ唯一のコントリビューター/コーダーですから。
結論
まとめると、初心者としてのチャットボット構築の旅は、基礎を学ぶこと、ChatGPTをターゲットを絞ったタスクに活用すること、APIドキュメントを勉強すること、バージョン管理を使うことの重要性を教えてくれました。まだ改善の余地は大きいですが、ブログ記事全体から情報を統合して質問に回答できる基本的なプロトタイプが完成しました。今後は、新しいコンテンツをカバーするためにチャットボットの知識ベースを拡大すること、記事から正確な詳細を取得する能力を向上させること、トークン制限内に収まるように回答を最適化することが優先事項です。プロンプトエンジニアリングやクラウドデプロイメントなどの分野でもスキルアップを続ける予定です。
以上です。今後も学んだ教訓を更新し、新バージョンが利用可能になったら共有していきます。
非開発者としてOpenAI APIで何か作ったことはありますか?一番つまずいたことを聞きたいです — 私にとっては間違いなくコンテキストウィンドウの制限とバージョン管理でした :P
1週間後
1週間のスプリントの後、チャットボットへの追加アップデートが完了しました。詳しくは「チャットボットの進化:よりスマートなインタラクションへの1週間スプリント」をご覧ください。
よろしくお願いします、Chandler





