AIサーバアクション¶
AIサーバアクションは、ワークフロー中に人工知能が意思決定を行えるようにすることで、Odoo の自動化フレームワークを拡張します。
これらは、ロジックを完全に固定条件で表現できない場合でも、標準サーバアクションを通じた制御された実行が必要なケースのために設計されています。
AIサーバアクションの仕組み¶
Odoo におけるAI駆動のワークフローは、AIサーバアクション(マネジャー)とツール(ワーカー)の間の明確な責任分担を中心に構築されています。
AIサーバアクション:マネジャー¶
AIサーバアクションは、意思決定者またはマネジャーとして機能します。レコードとそのコンテキストを読み取り、AIプロンプトを解釈し、どのツールを呼び出すか、どの引数を使用するかを決定します。
サーバアクションは業務ルールを強制せず、レコードを直接変更せず、操作の正確性を保証しません。その役割は意思決定に限定されます。
AIツール:ワーカー¶
ツールは、使用量タブでAIで使用オプションが有効になっている標準サーバアクションです。ツールはすべての実行ロジックを含み、レコードの更新、移動、書き込みを実行します。ツールはPythonコードで業務ルールを明示的に強制する**必要があります**。
AIサーバアクションによってツールが呼び出された場合、コード自体が防止しない限り、無条件に実行されます。
AIサーバアクションのワークフロー¶
AIサーバアクションのワークフローは、次の順序で進みます:
レコードがAIサーバアクションをトリガーします。
AIプロンプトがレコードをコンテキストとして使用して評価されます。
AIは利用可能なツールの 1 つを選択します。
AIはツールで期待される引数を提供します。
選択されたツールが Python コードを実行します。
重要
AIサーバ施策は、ドキュメントをフォルダに移動するなど、基礎となる動作が Odoo に既に存在する場合にのみ、カスタムロジックなしで機能します。これらの場合、AIがパラメータを選択し、Odoo が施策を実行します。
ユースケースのチュートリアル¶
受信トレイのドキュメントを自動分類の例は、完全なAIサーバアクションパターンを示しています。サーバアクションメニューに移動するには、を開きます。
注釈
このサーバアクションは、ドキュメントの内容を確認し、タグを追加するように設計されています。このアクション自体はドキュメントを移動したりタグを追加したり**しません**。ドキュメントの内容に基づいて、どのツールを使用すべきかを決定するだけです。
このアクションのモデルは*ドキュメント*として表示され、タイプは*AI*です。
このアクションのプロンプトは、ドキュメントに関するコンテキストと、アクションの意図を提供します。
ツールフィールドには、このプロンプトに基づいて実行される可能性のあるいくつかのアクションが含まれており、ドキュメントの移動、タグの追加、請求書や仕入先請求書の作成などがあります。
注釈
AI: タグを追加、AI: フォルダーに移動、AI: ドキュメントの名前を変更は、すべて*コードを実行*サーバアクションです。これらはPythonコードをトリガーします。
たとえば、ドキュメントの内容に基づいて、最も適切なツールが*AI: フォルダーに移動*であるとアクションが判断した場合、Pythonコードは次の操作を実行します:
ai['result'] = record._ai_action_move_in_folder(folder_id)
このコードは、呼び出されると無条件に実行され、既存のメソッドを使用して移動を実行します。
注釈
AIは、Pythonコードやメソッドシグネチャから引数を推測しません。代わりに、ツールに渡される引数は、ツールの構成によって完全に決定されます。
AI: フォルダーに移動ツールの場合、Pythonコードはfolder_idという名前の変数を想定しています。AIがfolder_idを提供することを認識しているのは、構成で明示的に引数として宣言されているためです。これは、サーバアクションの*使用量*タブのAIスキーマフィールドで確認できます。AIスキーマの下にある名前列は、Pythonコードで使用される変数名と正確に一致する必要があります。
AIは、引数の説明を使用して、パラメータが何を表すか、どのタイプの値が期待されるか、いつそれを提供するのが適切かを理解します。
使用量タブで引数が定義されていない場合、Pythonコードがそれを参照していても、AIはそれを提供できません。
カスタムAIツールの作成¶
上記の受信トレイ内でドキュメントを自動整理の例と同じパターンは、標準的なOdoo のロジックを使用して実装できます。例えば、タスクの説明を更新できるアクションを作成するには、以下のコードを使用してコードを実行アクションを作成できます:
record.write({'description': content})
正しく機能するには、contentは、ツールの使用量タブで引数として定義されている必要があります。
参照
一般的な問題¶
ツールフィールドが空なのはなぜですか?¶
少なくとも1つのサーバアクションでAI で使用が有効になっていることを確認してください。
少なくとも1つのツールが、サーバアクションと同じモデルモデルに割り当てられていることを確認してください。
ツールは実行されたのに何も起こらなかったのはなぜですか?¶
Python コードが変更なしで終了しました。
必要な引数が不足しているか空でした。
ビジネス条件がツールロジックに実装されていませんでした。
AI が予期しないツールを選択したのはなぜですか?¶
プロンプトに十分なコンテキストがありませんでした。
複数のツールが同じ意図に一致しました。
ツールレベルで制約が強制されていませんでした。