Úsalo cuando necesites inspeccionar o sustituir la solicitud exacta dirigida al modelo. La entrada prompt contiene la instrucción del usuario después de que se hayan ejecutado los ganchos userPromptSubmitted, mientras que transformedPrompt también incluye contexto generado en tiempo de ejecución, como <current_datetime>.
Entrada y salida
| Campo de entrada | Tipo | Description |
|---|---|---|
sessionId | string | Identificador de sesión en tiempo de ejecución |
timestamp | fecha y hora | Momento en que se invocó el gancho |
cwd / workingDirectory | string | Directorio de trabajo actual |
prompt | string | Solicitud tras los ganchos user |
transformedPrompt | string | Instrucción dirigida al modelo tras las transformaciones en tiempo de ejecución |
Devuelve ningún valor para dejar la solicitud transformada sin cambios. Devuelve modifiedTransformedPrompt para sustituir el contenido que se almacena en el historial de la sesión y se envía al modelo.
Examples
const session = await client.createSession({
hooks: {
onUserPromptTransformed: async (input) => ({
modifiedTransformedPrompt: redact(input.transformedPrompt),
}),
},
});
session = await client.create_session(
hooks={
"on_user_prompt_transformed": lambda input_data, invocation: {
"modifiedTransformedPrompt": redact(input_data["transformedPrompt"])
}
}
)
session, err := client.CreateSession(ctx, &copilot.SessionConfig{
Hooks: &copilot.SessionHooks{
OnUserPromptTransformed: func(input copilot.UserPromptTransformedHookInput, invocation copilot.HookInvocation) (*copilot.UserPromptTransformedHookOutput, error) {
return &copilot.UserPromptTransformedHookOutput{
ModifiedTransformedPrompt: copilot.String(redact(input.TransformedPrompt)),
}, nil
},
},
})
var session = await client.CreateSessionAsync(new SessionConfig
{
Hooks = new SessionHooks
{
OnUserPromptTransformed = (input, invocation) =>
Task.FromResult<UserPromptTransformedHookOutput?>(new()
{
ModifiedTransformedPrompt = Redact(input.TransformedPrompt),
}),
},
});
var hooks = new SessionHooks().setOnUserPromptTransformed((input, invocation) ->
CompletableFuture.completedFuture(
new UserPromptTransformedHookOutput(redact(input.transformedPrompt()))));
var session = client.createSession(new SessionConfig().setHooks(hooks)).get();
#[async_trait]
impl SessionHooks for MyHooks {
async fn on_user_prompt_transformed(
&self,
input: UserPromptTransformedInput,
_ctx: HookContext,
) -> Option<UserPromptTransformedOutput> {
Some(UserPromptTransformedOutput {
modified_transformed_prompt: Some(redact(&input.transformed_prompt)),
})
}
}
let session = client
.create_session(SessionConfig::default().with_hooks(Arc::new(MyHooks)))
.await?;
El reemplazo se conserva como el contenido del mensaje de usuario, por lo que las sesiones reanudadas reproducen el contenido modificado sin cambios.