Test
Exécutez un agent avec un modèle scripté dans vos tests : agents.testing.
| Nom | Ce que c'est |
|---|---|
testing.ScriptedModel | Répond à chaque appel au modèle avec l'étape suivante du script, dans l'ordre. |
testing.reply | Scripte un appel au modèle qui répond avec text. |
testing.call | Scripte un appel au modèle qui demande l'outil name, le nom que voit le modèle, avec arguments. |
testing.run_typescript | Scripte un appel au modèle qui exécute code dans run_typescript. |
testing.ScriptedModeltesting.ScriptedModel
class ScriptedModel(steps: Sequence[ToolCallStep | ReplyStep])Répond à chaque appel au modèle avec l'étape suivante du script, dans l'ordre.
Transmettez-le à Agent.override, sous la forme agent.override(model=model), dans un test. Un appel au modèle
au-delà de la dernière étape échoue avec une erreur qui indique la longueur du script, et une étape d'appel d'outil
fait échouer son appel au modèle lorsque cet appel ne propose pas l'outil. Il ne répond que dans le processus de test :
agents serve et agents deploy refusent un agent surchargé avec l'erreur
UnsupportedAgentFeatureError.
Par exemple, dans un test asynchrone d'un agent avec un outil get_weather, le modèle appelle l'outil
depuis run_typescript, puis répond :
model = agents.testing.ScriptedModel([
agents.testing.run_typescript("return await tools.client.get_weather({city: 'Paris'})"),
agents.testing.reply("Sunny."),
])
state = await agent.override(model=model).run("Weather in Paris?")
assert state.tool_calls[0].arguments == {"city": "Paris"}
assert state.text == "Sunny."
model.assert_consumed()| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
steps | Sequence[ToolCallStep | ReplyStep] | requis | Le script, une étape par appel au modèle : chaque étape est renvoyée par testing.call, testing.run_typescript ou testing.reply. |
testing.ScriptedModel.assert_consumedtesting.ScriptedModel.assert_consumed
def assert_consumed() -> NoneÉchoue si une étape du script n'a jamais été utilisée.
testing.replytesting.reply
def testing.reply(text: str) -> ReplyStepScripte un appel au modèle qui répond avec text.
testing.calltesting.call
def testing.call(name: str, /, **arguments: JsonValue) -> ToolCallStepScripte un appel au modèle qui demande l'outil name, le nom que voit le modèle, avec arguments.
Le modèle doit pouvoir appeler name directement. Un outil avec le model_access par défaut (un
agents.ToolModelAccess) est appelé depuis run_typescript : scriptez-le avec run_typescript.
testing.run_typescripttesting.run_typescript
def testing.run_typescript(code: str) -> ToolCallStepScripte un appel au modèle qui exécute code dans run_typescript.
Le programme appelle un outil sous la forme tools.<namespace>.<name>(...), comme le ferait un vrai modèle.