Utilisez-la lorsque vous devez inspecter ou remplacer l’invite exacte destinée au modèle. L’entrée prompt contient l’invite de l’utilisateur une fois que les userPromptSubmitted hooks ont été exécutés, tout en transformedPrompt contenant également le contexte généré par le runtime, tel que <current_datetime>.
Entrée et sortie
| Champ d’entrée | Type | Description |
|---|---|---|
sessionId | string | ID de session d’exécution |
timestamp | date/heure | Heure à laquelle le hook a été appelé |
cwd / workingDirectory | string | Répertoire de travail actuel |
prompt | string | Invite après user les crochets |
transformedPrompt | string | Prompt à destination du modèle après les transformations de l’environnement d’exécution |
Ne renvoyez aucune valeur pour laisser le prompt transformé inchangé. Renvoyez modifiedTransformedPrompt pour remplacer le contenu stocké dans l’historique de la session et envoyé au modèle.
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?;
Le remplacement est enregistré comme contenu du message utilisateur, de sorte que les sessions reprises rejouent le contenu modifié sans changement.