記事投稿キャンペーンは終わりましたが
もう記事投稿キャンペーンは終わりましたが、無料枠がとても太っ腹なので便利に使わせてもらっています、さくらのAI!
なおこの投稿にコードは出てきません。
顧客である私が本当に欲しかったもの!
記事投稿キャンペーンで”さくらのAI”を知った時、discordのbotにDiscordの過去ログとウェブ検索から回答してもらうチャットボットを作ろうかな?って思っていたのですが、
- さくらのAIのLLMやEmbeddingsは無料枠があるけど、RAGはいきなり有料
- RAGだけじゃなくてウェブ検索もして欲しいけど、ちょっとどうやったらウェブ検索が構築できるかよくわかんない(どうも難しそう?)
というわけで、最初からRAGとウェブ検索を持ってるGoogle Geminiを利用して、8月ごろにDiscord chat botを構築、運用してました。
Geminiだけなのでコードも簡単で、システムプロンプトに全部突っ込めばいい感じに出力してくれるので良かったのですが、Geminiの利用は原則従量課金で、安価ではあるもの使う度にチャリンチャリンと小銭が出ていくのが不満でした。
やっぱり難しくても、さくらのAIの無料枠を使わせてもらって、お金を気にせずチャットボットを使える方が良いよね!
というわけで、考えてみることに。
RAG、ウェブ検索から回答するDiscord Bot構築のために利用したもの
| Pythonパッケージ | 目的 | 備考 |
|---|---|---|
discord.py |
現在運用しているdiscord botの環境 | |
openai |
さくらのAIのLLM、embeddingsのため | 新規導入 |
chromadb |
ベクトル化したドキュメントを保存するローカルのベクトルDB | 新規導入 |
ddgs |
duckduckgo_search。ウェブ検索のAPI。名前が変わっていた。 | 新規導入 |
BS4 |
Beautiful Soup。検索結果から実際のコンテンツ取得 |
ベクトルDBは、Qdrantというサービスも少し考えたのですが、現在botをホストしているGAE(Google app engine)ではローカルファイルを置くことができ、またバックアップなどをGCS(Google cloud storage)に保存する仕組みもあり、またそもそもそこまでデータ量がないということもあって、ローカルのchromaとしました。
ウェブ検索は、duckduckgoをすっかり忘れていたので、こちらに。ddgsというパッケージ名に移行中のようです。
ハマったところ!
1.さくらのAIのAPIキーがわからない!
さくらのAIはgithub copilotのBYOKとして利用しているのですが、APIキーは記録しておらず、さっぱりわからなくなっていました。
使っているアカウントのものはわからなかったので、新たにDiscord bot用にアカウントを作成しました。
再表示もされないところを考えると、使い道にあわせてアカウントを都度新規作成してね、という運用ということですかね。
2.MAX TOKENが小さすぎてLLMもembeddingも窮屈過ぎ問題!
あまりDiscord Botのコードをメンテナンスしないだろうと考えていたので、常に提供されている通常モデルのLLM:llm-jp-3.1-8x13b-instruct4、embedding:multilingual-e5-large を選択してました。
しかしllm-jp-3.1-8x13b-instruct4は2000トークンほど、multilingual-e5-largeは512トークンしか扱えず、取得した過去ログも細工をしてベクトルDBに入れる必要がでてきたり、LLMもせっかくいろんな味付けをしていたシステムプロンプトを削りまくったのに、扱える情報量の少なさから回答の精度もがっかりな結果に。
これはそもそもモデルの選択が悪いのでは?
ということで、
LLM:preview/Kimi-K2.6
embeddings:preview/Qwen3-Embedding-4B-FP16
としました。扱えるトークンは、それぞれ90000程度、7000程度と、RAGもウェブ検索結果も細工無しに投入できるようになりました。
previewモデルということで今後の動向は少し気にはなりますが、実際の使い勝手や回答の精度は我慢できないので、当面はこれらを利用していくつもりです。
得られたもの
- さくらのAIのLLMは3000リクエスト/月まで無料枠なので、ほぼ無料なLLMサービス
(そこまで活気のあるDiscordサーバーではないというのも一因) - さくらのAIのembeddingは10000リクエスト/月まで無料枠なので、ほぼ無料なRAG
T3体制はやったことないしDiscordに書いたこともないと思うけど、ウェブ検索結果からの回答かな?
この回答が素晴らしいわけではないのですが、Discordの過去ログRAGとウェブ検索を利用しているのが分かる例として。
