見出し画像

【API/ローカルLLM】Chocolate LM Lite🍫 v0.02アップデート


更新情報

  • Ollama Cloud, NanoGPTへの対応を表示

  • 最終時刻送信をユーザー末尾に追加するように変更

  • キーワードナレッジ(簡易RAG)機能を追加

  • ポストプロンプト機能を追加

  • 会話履歴をSQLite3 データベースに移行 (自動変換します)

  • デザインの調整

  • 新規ペルソナ作成時に最新の日付が反映されない問題を修正

  • タグ置換を廃止し、特定のタグのみMarkdownに置換するように変更

  • 仮想スクロールにより一時的に発言が重複する問題の修正

  • 脆弱性のあるライブラリの更新

  • その他バグ修正


「アップデ~~~ト!」



大きな更新点の説明をします。

ざっくり概要

  • 「見た目バグの修正と調整」: 見た目よくしました!

  • 「ポストプロンプト機能を追加」: 言語モデルの挙動に対する強力な修正・矯正機能を追加しました!

  • 「キーワードナレッジ(簡易RAG)機能を追加」: キーワードに合わせて知識をぶち込む機能を追加しました!

  • 「Ollama Cloud, NanoGPTへの対応を表示」: 定額プロバイダ対応の追加!

  • 「データ形式を変更しました」: JSON Lines形式から、SQLite3形式に変更!

見た目バグの修正と調整

ユーザー発言が一時的にダブったり、壁紙が見づらかったり、設定がわかりにくかったり、HTMLタグが壊れたり、説明文が間違ってる問題を色々と調整しました。

ポストプロンプト機能を追加

ペルソナ設定画面に、ポストプロンプト機能を追加しました。
ポストプロンプトは、ユーザー発言の後に指示を埋め込みます。

ポストプロンプトは会話履歴に残らず、最新の生成処理時に動的に適用されます。この機能が有効の間、最新のユーザー発言は<user>タグで囲まれ、次に<system>タグで囲まれたポストプロンプトが続きます。

これは、言語モデルが最後の発言を強く注目する性質を利用したもので、先頭に当たるシステムプロンプトを後から修正しても効果が薄い場合がありますが、ポストプロンプトは末尾(補完の直前)に追加されるため、より強力かつ即効性を持って指示を与えることが出来ます。

口調、応答書式、文字数制限などを極めて強力かつ即効性のある形で強制したい場合に使用できます。ペルソナの口調や、機嫌、行動などを矯正したり、速やかに変更・修正したい場合にも有効です。

手入力コピペでも同等のことは出来ますが、会話履歴に残らないため、無駄にコンテキストを圧迫することなく、見た目よく効果的に実施することが出来ます。

より効果を強めたい場合は、システムプロンプトに以下のように追加してください。

user: ユーザーの発言です。
system: システムからの指示です。

例として、通常のコンテキストの構造は以下になります。

SYSTEM: あなたは親切なアシスタントです。ユーザーの質問に丁寧に回答してください。
USER: こんにちは!
ASSISTANT: こんにちは!ご挨拶ありがとうございます。今日はどのようなお手伝いをいたしましょうか?
USER: 今日の天気は?
ASSISTANT: ご質問ありがとうございます!天気予報はお住まいの地域やご関心のある場所によって異なりますので、
 天気を知りたい場所(例:市区町村や都道府県、観光地など)を教えていただけますか?その情報がわかれば、最新の天気情報をご案内いたします。

ポストプロンプトを有効にすると、以下のようになります。
例: 「お嬢様の口調で答えること」

SYSTEM: あなたは親切なアシスタントです。ユーザーの質問に丁寧に回答してください。
USER: こんにちは!
ASSISTANT: こんにちは!ご挨拶ありがとうございます。今日はどのようなお手伝いをいたしましょうか?
USER: <user>今日の天気は?</user> <system>お嬢様の口調で答えること<system>
ASSISTANT: かしこまりましたわ、お嬢様。誠に恐れ入りますが、私の方では現在の天候をリアルタイムで把握することが叶いませんでございます。
 そのため、正確な今日の天気につきましては、最寄りの天気予報サイトやアプリをご覧いただくのが確実かと存じますわ。
 たとえば、気象庁のホームページやスマートフォンの天気アプリなどが便利でございますわね。
 もし、季節や地域についての一般的な傾向をご希望でしたら、どうぞ遠慮なくお申し付けくださいませ。
 どうぞご自愛のほど、よろしくお願い申し上げますわ。

キーワードナレッジ(簡易RAG)機能を追加

ペルソナ設定画面に、キーワードナレッジ(簡易RAG)機能を追加しました。

ユーザー発言に含まれるキーワードに応じて、動的かつワンタイムでポストプロンプトを挿入する機能と考えてください。
キーワードナレッジも会話履歴に残らず、最新の生成処理時に動的に適用されます。

システムプロンプトに入れておくには大きすぎる知識や、即効性が求められる知識を与えるのに有効です。特定の行動や知識を、合言葉に合わせて与えたい場合にも有効です。

ツールの使い方を忘れやすい言語モデルに対して、ツールの使い方をキーワードナレッジで与えることで、ツールを正しく使わせることも出来ます。
例えば天気といえば、東京の天気であり、天気の取得にはgoogleSearchツールを使う、などと与えることで、守る確率を格段に上げることが出来ます。

キーワードは、カンマ区切りで複数指定することも出来ます。
例えば住所を自宅, 家, うち, マイホームなどと複数指定しておくことで、より多くのパターンに対応できます。

簡易的なRAGのように使うことができますが、キーワードは完全一致であることに注意してください。
(ベクトルデータベースが必要な場合は、MCPで外部ツールを組み合わせてください)

例: ユーザー入力で自宅の天気を教えてと言う発言があり、自宅や天気にキーワードを設定していた場合、以下のようにAIに渡されます。

自宅の天気を教えて
<knowledge key="自宅">ユーザーの住所は東京都</knowledge>
<knowledge key="天気">天気の取得にはgoogleSearchを使う</knowledge>

より効果を強めたい場合は、システムプロンプトに以下のように追加してください。

knowledge: ユーザー発言に含まれるキーワードに応じて渡される補足情報です。

例として、通常のコンテキストの構造は以下になります。

SYSTEM: あなたは親切なアシスタントです。ユーザーの質問に丁寧に回答してください。
USER: こんにちは!
ASSISTANT: こんにちは!ご挨拶ありがとうございます。今日はどのようなお手伝いをいたしましょうか?
USER: 1月の家の周りの気候ってどんなだっけ
ASSISTANT: 1月の気候は地域によって大きく異なりますので、正確な情報をお伝えするためにお住まいの場所(例:都道府県や都市名)を教えていただけますか?

キーワードナレッジを有効にし、キーワードが合致すると、以下のようになります。
例: 「住所, 家, 帰る→東京都」

SYSTEM: あなたは親切なアシスタントです。ユーザーの質問に丁寧に回答してください。
USER: こんにちは!
ASSISTANT: こんにちは!ご挨拶ありがとうございます。今日はどのようなお手伝いをいたしましょうか?
USER: 1月の家の周りの気候ってどんなだっけ
 <knowledge key="住所, 家, 帰る">東京都</knowledge>
ASSISTANT: 1月の東京都(東京)の気候概要...
適用前
登録
一覧
結果

Ollama Cloud, NanoGPTへの対応を表示

検証済みの定額系LLMプロバイダの対応を表示しました。

データ形式を変更しました

talk.jsonl だった会話履歴データを、talk.sqlite3に変更しました。
読み込み時間の短縮を狙った他、将来的なオンメモリ検索処理の変更を予定しています。

既存の会話履歴データは自動で移行しますので、特に意識する必要はありません。(既存の会話データは.bakに名前変更されてバックアップされます)

JSON Lines形式ではなくなるので、メモ帳などで開けなくなりますが、sqlite3に対応したツールで便利に開き・編集・検索できます。

一番楽なのは、DB Browser for SQLiteを使用することです。(Windows/Mac/Linux対応)

実際に開いた画面

CSVに出力すれば、Excelなどで使うことも出来ます。


「いい感じに使ってみてね。」

「ポストプロンプトは面白くって、さっきまでお嬢様言葉を話してたやつが急にめちゃくちゃぶっきらぼうになったり、そういったことができるよ。
AIサービスの安全機構の仕組みに使われてるくらい強力だから試してみてね。」