PromptoGenとは
PromptoGenについて¶
PromptoGenのプロジェクトビジョン¶
「効率的で拡張可能な、大規模言語モデル(LLM)とのコミュニケーションを実現する」
- LLM入出力とPythonオブジェクトのシームレスな変換:LLMとのコミュニケーションを自然に、かつ効率的に行います。
- 独自の抽象化インターフェイス:ユーザーに高いカスタマイズ性と拡張性を提供します。
- LLM通信への依存性排除:将来のLLMの進化や変更にも柔軟に対応できる堅牢なシステムを構築できるようにすることを目指します。
解決すべき課題¶
他のLLM関連のライブラリの多くは、LLMとのコミュニケーションの詳細な実装からテキスト生成・パースまで担当していることが多い です。この結果、以下のような課題が生じます。
- プロンプトエンジニアリングのエコシステムが形成されにくい
- LLMに強く依存しているため、LLMの変更・進化に弱い
- 実装が複雑で、カスタマイズ性が低い
ソリューション¶
これらの解決すべき課題に対し、PromptoGen は以下のクラス・インターフェイスを用意しています。
-
Prompt
データクラス: プロンプトエンジニアリングのエコシステム形成- LLMコミュニケーションの基本情報定義(名前、説明、入出力情報、テンプレート、使用例)
-
TextLLM
インターフェイス: LLM実装からの独立性確保- LLMとの通信は
TextLLM
インターフェイスを介す
- LLMとの通信は
-
PromptFormatter
インターフェイス: カスタマイズ性の向上- 任意のフォーマッターを定義できる
Prompt
と入力からプロンプト文字列生成- LLMテキスト出力をPythonデータ構造に変換
PromptoGenの依存先ライブラリは、データクラスライブラリPydantic
のみで、LLMの進化に対して堅牢な作りです。
PromptoGen を活用することで、 LLMに依存せず共通に行われる、文字列とPythonオブジェクトの変換処理を実装する必要はなくなります。
ユーザーにとってのメリット¶
- モジュール性: 組み合わせ自由
- 拡張性: 独自フォーマッターやパーサー追加可
- 独立性: 新しいモデルやライブラリの影響なし
- メンテナンス性: 管理やトラブルシューティングが簡単
- 開発効率: LLMごとに実装を変更する必要なし
PromptoGenの非対応事項¶
PromptoGenは、効率性、シンプルさ、そして信頼性を最優先に設計されています。この哲学に基づき、以下の機能や特性は意図的にサポートしていません:
-
LLMとの直接通信:
PromptoGenはLLMとの通信自体をサポートしません。その代わり、コミュニケーションを自然に、かつ効率的に行うためのインターフェイスやデータ変換のサポートを重視しています。 -
プロンプト管理のバージョンマネージャーの導入:
複雑性を避けるため、プロンプトのバージョンやその管理機能は提供していません。 -
特定のLLM実装への最適化:
PromptoGenは、特定のLLM実装に依存しないよう設計されています。これにより、将来のLLMの進化や変更にも柔軟に対応できるとともに、独立したライブラリとしての役割を果たします。