protocolai は、LLM 応答を型付きクラス オブジェクトに変換します。 実験的なプロトタイプです。 フィードバックや実験結果を聞くために贅沢をします.
概要 まず、応答で利用する LLM、ParameterDecorator の使用すべてのコンストラクターパラメーター ["messageType2", "arg1", "arg2", "..."] でライブラリによって提供される ["messageType2", "arg1", "arg2", "..."] その後、議定書 を達成し、コンストラクターに作成したクラス。 Protocol
クラスには 2 つの基本的な機能があります: ["messageType2", "arg1", "arg2", "..."] getInstructions
- 応答を構築するための提案に関する LLM への指示を提示するため、おそらく追加で翻訳される可能性がありますオブジェクトへのサポート。 LLM を呼び出す前に、指示をタスク検索の詳細と混ぜてください。
decodeResponse - LLM サポートからの応答を、提供されたクラス オブジェクトのケースに変換します。 指定されたクラスの共用体の種類を持つアスペクトを持つ配列を返します。
)
使用例 この場合、LLM が様々な種類のタコに関する詳細を生成することを望みます 応答用のクラスを作成します:
クラス タコ
{ コンストラクタ(@ ParameterSpec (["messageType1", "arg1", "arg2", "..."] { fieldType: "弦" , 手順: 「タコの種名」 }) 公共 種族: 弦,@ ParameterSpec ({ fieldType: "番号" , 手順: 「タコの寿命の目安」 }) 公共 寿命: 番号, ) { これ
.種族=
種族
これ.寿命
= 寿命 } } プロトコルの指示と次の求人検索の詳細を組み合わせて、LLM の指示をまとめます: const プロトコル = プロトコル(
タコ) const 手順=
プロトコル["messageType1", "arg1", "arg2", "..."] . getInstructions( ) const に案件を添付) = 「タコ3匹のリストを完成させてください。」 const 指示 =` ${手順}nn${ に案件を添付する } ` 補完を生成し、それをオブジェクト ケースに変換します: =outputSpec.decodeResponse(response.data.choices[0].text as string) console.log(octopuses) /[ Octopus { species: 'Graneledone boreopacifica', lifespan: 25 }, Octopus { species: 'Hapalochlaena maculosa', lifespan: 2 }, Octopus { species: 'Octopus vulgaris', lifespan: 5 } ] */" dir="auto"> const 応答 =時計ために
開いてない .createCompletion
({ マネキン: "文章- davinci-003", 指示された: 指示された["messageType2", "arg1", "arg2", "..."] , max_tokens[] : 1000 , } ) //デコードされた応答は、共用体の種類を取得するアスペクトを持つ配列ですあなたが提供したすべてのクラスの。 この場合、またはもはや本当のタコではありません.
const["messageType2", "arg1", "arg2", "..."] ]= outputSpec . decodeResponse["messageType1", "arg1", "arg2", "..."] (応答. 詳細 .意思決定[0].["messageType1", "arg1", "arg2", "..."] 文章 として ["messageType2", "arg1", "arg2", "..."] 弦) コンソール . ログ(
タコ[] ) /* ["messageType1", "arg1", "arg2", "..."] */ プロトコル ライブラリは、LLM の出力をいくつかの方法で制限します。