チャットノートブック入門

チャットノートブックは大規模言語モデル(LLM)へのインタラクティブなチャットベースのアクセスを提供する.Wolfram言語を使うことで自然言語ベースで使える機能を含んでいる.

1.gif

チャットノートブックと入力の作成と使い方

新規のチャットノートブックを作成する:

ニューからファイル 新規作成 チャット有効ノートブックを選ぶかAlt + NまたはCmd+Option+Nを押すかする.

通常のノートブックと同様に,チャットノートブックにおけるデフォルトのセルスタイルはWolfram言語の入力セルである.チャット入力セルはいくつかの方法で作成できる.

メニューからファイル 新規作成 チャット駆動型ノートブックを選ぶと,デフォルトの新規セルがチャット入力セルであるノートブックを作成することもできる.

新規のチャット入力セルを作成する:

新規セルで '(シングルクォート)をタイプするか,ノートブックツールバーの「セルを挿入」からChatInputを選ぶかする:

2.gif

またはセル挿入バーのをクリックしてChat Inputを選ぶこともできる.

ノートブックツールバーのチャット設定ボタンを使うと,どのノートブックでもチャット機能を有効にすることができ,CreateNotebook["Chat"]を使うとどのノートブックからでも新規のチャットノートブックが作成できる.

チャット入力を使う

チャットの会話を開始するためには,新規のチャット入力セルを作成して入力をタイプし始める.チャット入力セルは青い枠で囲まれており,左側にチャットアイコンが表示される:

5.gif

セルが評価される前,左側のアイコン(ペルソナアイコン)は現在のペルソナを示すように変化する.デフォルトのペルソナはコードアシスタント()であり,LLMにWolfram言語コードの手助けをするよう指示する.

チャット入力セルにはチャット入力をどのように処理するかを決める2つの主な設定がある.チャット入力セルの左側のペルソナアイコンをクリックしてこの設定を見て変更することができる.

チャット入力を評価するためには,カーソルをチャット入力セルに置いてShift+Enterを押す:

7.gif

チャット評価を行うとき,チャット入力セルの内容とチャット履歴が設定済みのデフォルトのLLMモデルに送られる.その応答は,生成されると同時にノートブックに直ちに書き出される.

完了する前にチャット評価を中止したい場合は,出力セルの中止アイコン()をクリックすることができる.

チャット出力の要素

LLMからの出力には書式が付いている.リンクはクリック可能で,コードは適切なスタイルで実行可能になっており,Manipulateはインタラクティブである.

他の出力と同様に,出力はノートブックにペーストして編集することができる.出力のコード上にカーソルを置くと次の3つのボタンが現れる:

9.gif

最初のボタンは,新規の入力セルにコードを挿入し,実行する.
2つ目のボタンはコードを新規の入力セルにコピーするが評価はしない.
3つ目のボタンはクリップボードにコードをコピーする.

応答の際に,LLMは助けを求めてLLMToolを起動することがある.ツールはLLMの機能を拡張するモジュール式の方法であり,ドキュメントの検索やコードの評価等の特定の定義済みのアクションの実行から,別の計算タスクの実行まで多岐に渡る.

LLMがツールを使う場合,出力にそのことが言及される.矢印をクリックするとLLMに送られたことを見ることができる:

10.gif

プロンプト

特別な入力タイプには,ペルソナ,修飾子,関数の3つがある.

ペルソナ

ペルソナはチャット入力に対する組込みの修飾子である.LLMに追加の指示を加えることによって,出力のトーンを変更することができる.例えばテキストではなくコードの生成を重視するよう指示したり,簡単で短い出力を提供するよう指示したりできる.

ペルソナの起動

ノートブックツールバーのチャット設定ボタンからペルソナを選び,そのノートブックのデフォルトとして設定することができる.ペルソナに単独のチャットを向けるためにはチャット入力セルの最初に@persona とタイプする.

特定のチャットセル内のペルソナにチャットを向ける場合は,そのペルソナに以前の履歴すべてが送られる.しかしそのペルソナが応答した後は,後続のチャットセルは現行のデフォルトのペルソナを使うようになる.

チャットノートブック設定メニューを使うとWolfram Prompt Repositoryや他のソースからのペルソナを加えることができる.

Prompt Repositoryのペルソナを使う

ペルソナの追加と管理ダイアログから,Prompt Repositoryで所望のペルソナを見付け,右上のインストールボタンをクリックする.後はチャット入力セルで @persona を使うだけである:

Tech Support Botペルソナとの会話

11.gif

別のソースのペルソナを使う

ペルソナの追加と管理ダイアログから,インストールしたいペルソナに対する有効なPrompt DefinitionノートブックのURLを入力する.

プロンプト修飾子

プロンプト修飾子はLLMにどのような種類の出力を返すかについての指示を与える.

プロンプト修飾子を使う

入力の最後に1個または複数のプロンプト修飾子(# から開始)を使う:

DatasetForm修飾子を使う

12.gif

修飾子プロンプトにはパラメータを取るものもあり,|の後に加えられる.#modifier ボックスをクリックして| parameterを加える:

言語パラメータを使う:

13.gif

プロンプト修飾子を見付ける

Prompt Repositoryで好きな修飾子を見付け,それをチャット入力セルで使うだけである.

チャット入力セルは,タイプし始めると自動的にプロンプトを提案する:

14.gif

プロンプトはLLMPromptまたはLLMResourceFunctionによってプログラムで使うことができる.

関数プロンプト

カンスウプロンプトは入力を取り,出力を生成する操作を実行する.その例としてコードやテキストの生成と編集がある.

関数プロンプトを使う

入力の最初に !prompt をタイプする:

15.gif

入力を指定する

デフォルトでは,関数プロンプトは引数としてチャット入力のコンテンツを使うが,以前のノートブックコンテンツを参照することもできる.

> チャット入力セルのテキストを引数として使う(デフォルト)
^ チャットノートブックの先行するセルを引数として使う
^^ チャットブロックの先行するコンテンツすべてを引数として使う

パイプの後にインディケータをタイプする:

16.gif

関数プロンプトを見付ける

Prompt Repositoryで好きな関数を見付けてチャット入力セルで使うだけである.

チャット入力セルは,タイプし始めると自動的にプロンプトを提案する.

LLMResourceFunctionを使うと関数プロンプトをプログラムで使うことができる.

プロンプト関数とプロンプト修飾子の比較

同じように見える関数プロンプトとプロンプト修飾子のどちらも使うことができる場合がある.関数プロンプトは指定された入力で動作し,プロンプト修飾子はLLMからの応答を編集するので,異なる結果を与える.

例えば"!Translate"は与えたテキストを翻訳するが,"#Translated"は質問した答を翻訳する:

17.gif

チャット会話管理

他のWolframノートブックとは異なり,チャットノートブックでは履歴は時間的なものではなく物理的なものである.チャットセルはその上のセルのことを「知っている」.つまりチャット入力を使っているとき,セルの順番が大切なのである.

チャット履歴

LLMに送られるチャット履歴にはチャット入力と出力に限らず,すべてのセルタイプが含まれる.テキストセルにメモを書いたりWolfram言語の入力セルにコードを書いたりすると,それについてLLMに尋ねることができる:

18.gif

必要に応じて履歴にはより多くの情報が加えられる.例えば,スタックトレースが生成されると,それはメッセージセルに含まれる.

WolframシステムはLLMに送るコンテンツを自動的にカットする.例えば,大きい出力は要約される.長いノートブックではコンテンツはノートブックの上部から削除されることがある.

チャットブロックを使うと,LLMに送られるチャット履歴の量を制限することができる.

チャットブロックの作成

チャットブロックは現在のチャット入力から始まり,最も近いチャットデリミタセルまたはノートブックの上部に遡るセルの集合である.

チャットブロックのチャット入力はブロック外のノートブックコンテンツに依存しない.これによってさまざまなペルソナやLLMモデルを切り替えるのが便利にできる.長いノートブックでチャットブロックを使うことで,LLMに送られるチャット履歴の量を減らすことによるトークンの多用を避けることに役に立つ.

新規のチャットブロックは~を押すかセルの挿入ニューからChatDelimiterを選ぶことによって作成することができる.

これで灰色のセパレータが生成される.セパレータの後のチャット入力は,セパレータ前のノートブックコンテンツに依存しない:

19.gif

その他のデリミタ

チャットブロックのセパレータは,チャットデリミタおよびセクションヘディングの両方の役割を果たす.SectionやSubsection等の通常のセクションスタイルはチャットデリミタのようには動作しない.

その前後のチャットとは分離された一つのセルが欲しい場合は,追加の引用符(' ')をタイプしてサイドチャットを作成することができる:

20.gif

出力の編集

チャット入力が再評価されると,前の出力が保持される.左右の矢印によって前の結果が見られる:

21.gif

LLMが間違いを犯したら,その出力を編集して学習させることができる.同じチャットブロックの後続のチャットは編集された出力を「見る」ので,同じチャットブロック中では同じ間違いをする可能性が低い.

チャット設定

チャット設定は,セル,セクション,ノートブック,グローバルの異なるレベルで行うことができる.設定の多くは同じであるが,それが栄養を及ぼす範囲が異なる.

チャット入力セルはセクションの設定を継承し,セクションはノートブックの設定を継承する.

すべてのレベルには,利用可能なペルソナおよびLLMモデルから選べ,temperature(応答のランダム性に影響を及ぼす)を調整するための設定が含まれる.

セルレベルのチャット設定メニュー

22.gif

セクションレベルのメニューはセルレベルのメニューと同じであるが,チャットブロック設定が追加される.

セクションレベルのチャット設定メニュー:

23.gif

ノートブックレベルのメニューにはAIのチャット機能を可能にするためのチェックボックスおよび自動の結果解析を可能にするためのチェックボックスが加わる.後者はコードタスクのヘルプ,エラーの特定,提案を行う.これが有効であると,すべての出力とチャット履歴が自動的にLLMに送られる.

ノートブックレベルのチャット設定メニュー:

24.gif

ペルソナの追加と管理は,インストールされたどのペルソナをメニューに表示するかを制御したり,ペルソナを削除したり,Prompt Repositoryから新しいペルソナをインストールしたりするためのダイアログを提供する.

ツールの追加と管理LLM Tool Repositoryまたは他の場所からのツールをインストールしたり,特定のペルソナに対してそれを有効にしたりするためのダイアログを提供する.

グローバルAI設定ダイアログを使うと,デフォルトのペルソナ,モデル,temperatureの設定ができ,インストールされたペルソナのリストを表示する.