@@ -4,44 +4,44 @@ search:
4
4
---
5
5
# ガードレール
6
6
7
- ガードレールは エージェント と _ 並列 _ に実行され、 ユーザー入力 のチェックとバリデーションを行います。たとえば、顧客からのリクエストを支援するために非常に賢い (そのため遅く / 高価な) モデルを使うエージェントがあるとします 。悪意のある ユーザー がモデルに数学の宿題を手伝わせようとするのは避けたいですよね。その場合、 高速 / 低コスト のモデルでガードレールを実行できます。ガードレールが悪意のある利用を検知した場合、即座にエラーを送出して高価なモデルの実行を停止し、時間と費用を節約できます 。
7
+ ガードレールは エージェント と _ 並行して _ 実行され、ユーザー入力のチェックとバリデーションを行えます。例えば、とても賢い(つまり遅く/ 高価な)モデルを使用してカスタマーリクエストを処理するエージェントがあるとします 。悪意のある ユーザー がモデルに数学の宿題を手伝わせようとするのは避けたいでしょう。そこで、速く/安価なモデルで動くガードレールを実行できます。ガードレールが悪意のある利用を検知すると、直ちにエラーを送出して高価なモデルの実行を停止し、時間とコストを節約できます 。
8
8
9
- ガードレールには 2 種類あります。
9
+ ガードレールには 2 種類あります:
10
10
11
- 1 . Input ガードレールは最初の ユーザー入力 に対して実行されます
12
- 2 . Output ガードレールは最終的なエージェント出力に対して実行されます
11
+ 1 . 入力ガードレール は初期 ユーザー 入力に対して実行されます
12
+ 2 . 出力ガードレール は最終的なエージェント出力に対して実行されます
13
13
14
- ## Input ガードレール
14
+ ## 入力ガードレール
15
15
16
- Input ガードレールは 3 つのステップで実行されます。
16
+ 入力ガードレールは 3 ステップで実行されます:
17
17
18
18
1 . まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
19
- 2 . 次に、ガードレール関数が実行され [ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を生成し、それが [ ` InputGuardrailResult ` ] [ agents.guardrail.InputGuardrailResult ] でラップされます 。
20
- 3 . 最後に [ ` .tripwire_triggered ` ] [ agents.guardrail.GuardrailFunctionOutput.tripwire_triggered ] が true かどうかを確認します。true の場合、[ ` InputGuardrailTripwireTriggered ` ] [ agents.exceptions.InputGuardrailTripwireTriggered ] 例外が送出されるので、 ユーザー への適切な応答や例外処理を行えます 。
19
+ 2 . 次に、ガードレール関数が実行され [ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を生成し、それが [ ` InputGuardrailResult ` ] [ agents.guardrail.InputGuardrailResult ] にラップされます 。
20
+ 3 . 最後に [ .tripwire_triggered] [ agents.guardrail.GuardrailFunctionOutput.tripwire_triggered ] が true かどうかを確認します。true の場合、[ ` InputGuardrailTripwireTriggered ` ] [ agents.exceptions.InputGuardrailTripwireTriggered ] 例外が送出されるので、適切に ユーザー に応答したり例外を処理できます 。
21
21
22
22
!!! Note
23
23
24
- Input ガードレールは ユーザー入力 に対して実行されることを想定しているため、エージェントのガードレールが実行されるのはそのエージェントが *最初* のエージェントである場合だけです 。「なぜ `guardrails` プロパティがエージェントにあり、 `Runner.run` に渡さないのか?」と思うかもしれません。ガードレールは実際の エージェント に密接に関連する場合が多く、エージェントごとに異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上するからです 。
24
+ 入力ガードレールは ユーザー 入力に対して実行されることを意図しているため、ガードレールは *最初* のエージェントでのみ実行されます 。「なぜ `guardrails` プロパティがエージェントにあり、`Runner.run` に渡さないのか」と疑問に思うかもしれません。これは、ガードレールが実際の エージェント と密接に関連していることが多いからです。異なるエージェントには異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上します 。
25
25
26
- ## Output ガードレール
26
+ ## 出力ガードレール
27
27
28
- Output ガードレールは 3 つのステップで実行されます。
28
+ 出力ガードレールは 3 ステップで実行されます:
29
29
30
- 1 . まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります 。
31
- 2 . 次に、ガードレール関数が実行され [ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を生成し、それが [ ` OutputGuardrailResult ` ] [ agents.guardrail.OutputGuardrailResult ] でラップされます 。
32
- 3 . 最後に [ ` .tripwire_triggered ` ] [ agents.guardrail.GuardrailFunctionOutput.tripwire_triggered ] が true かどうかを確認します。true の場合、[ ` OutputGuardrailTripwireTriggered ` ] [ agents.exceptions.OutputGuardrailTripwireTriggered ] 例外が送出されるので、 ユーザー への適切な応答や例外処理を行えます 。
30
+ 1 . まず、ガードレールはエージェントが生成した出力を受け取ります 。
31
+ 2 . 次に、ガードレール関数が実行され [ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を生成し、それが [ ` OutputGuardrailResult ` ] [ agents.guardrail.OutputGuardrailResult ] にラップされます 。
32
+ 3 . 最後に [ .tripwire_triggered] [ agents.guardrail.GuardrailFunctionOutput.tripwire_triggered ] が true かどうかを確認します。true の場合、[ ` OutputGuardrailTripwireTriggered ` ] [ agents.exceptions.OutputGuardrailTripwireTriggered ] 例外が送出されるので、適切に ユーザー に応答したり例外を処理できます 。
33
33
34
34
!!! Note
35
35
36
- Output ガードレールは最終的なエージェント出力に対して実行されることを想定しているため、エージェントのガードレールが実行されるのはそのエージェントが *最後* のエージェントである場合だけです。Input ガードレール同様、ガードレールは実際の エージェント に密接に関連するため 、コードを同じ場所に置くことで可読性が向上します。
36
+ 出力ガードレールは最終的なエージェント出力に対して実行されることを意図しているため、ガードレールは *最後* のエージェントでのみ実行されます。入力ガードレールの場合と同様、ガードレールが実際の エージェント と密接に関連していることが多いため 、コードを同じ場所に置くことで可読性が向上します。
37
37
38
- ## トリップワイヤ
38
+ ## トリップワイヤー
39
39
40
- 入力または出力がガードレールに失敗した場合、ガードレールはトリップワイヤを用いてそれを通知できます。ガードレールがトリップワイヤを発火したことを検知すると、ただちに ` {Input,Output}GuardrailTripwireTriggered ` 例外を送出してエージェントの実行を停止します 。
40
+ 入力または出力がガードレールを通過できなかった場合、ガードレールはトリップワイヤーでそれを示すことができます。トリップワイヤーがトリガーされたガードレールを検知した時点で、直ちに ` {Input,Output}GuardrailTripwireTriggered ` 例外を送出し、エージェントの実行を停止します 。
41
41
42
42
## ガードレールの実装
43
43
44
- 入力を受け取り、[ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を返す関数を用意する必要があります。次の例では 、内部で エージェント を実行してこれを行います。
44
+ 入力を受け取り、[ ` GuardrailFunctionOutput ` ] [ agents.guardrail.GuardrailFunctionOutput ] を返す関数を提供する必要があります。この例では 、内部で エージェント を実行してこれを行います。
45
45
46
46
``` python
47
47
from pydantic import BaseModel
@@ -94,12 +94,12 @@ async def main():
94
94
print (" Math homework guardrail tripped" )
95
95
```
96
96
97
- 1 . この エージェント をガードレール関数内で使用します 。
98
- 2 . これはエージェントの入力 / コンテキストを受け取り、結果を返すガードレール関数です。
97
+ 1 . このエージェントをガードレール関数内で使用します 。
98
+ 2 . これはエージェントの入力/ コンテキストを受け取り、結果を返すガードレール関数です。
99
99
3 . ガードレール結果に追加情報を含めることができます。
100
100
4 . これはワークフローを定義する実際のエージェントです。
101
101
102
- Output ガードレールも同様です 。
102
+ 出力ガードレールも同様です 。
103
103
104
104
``` python
105
105
from pydantic import BaseModel
@@ -155,4 +155,4 @@ async def main():
155
155
1 . これは実際のエージェントの出力型です。
156
156
2 . これはガードレールの出力型です。
157
157
3 . これはエージェントの出力を受け取り、結果を返すガードレール関数です。
158
- 4 . これはワークフローを定義する実際のエージェントです。
158
+ 4 . これはワークフローを定義する実際のエージェントです。
0 commit comments