Verwenden Sie es, wenn Sie den exakten modellseitigen Prompt prüfen oder ersetzen müssen. Die prompt-Eingabe enthält den Benutzer-Prompt, nachdem etwaige userPromptSubmitted-Hooks ausgeführt wurden, während transformedPrompt auch zur Laufzeit generierten Kontext wie <current_datetime> enthält.
Eingabe und Ausgabe
| Eingabefeld | Typ | Description |
|---|---|---|
sessionId | string | Laufzeitsitzungs-ID |
timestamp | Datum/Uhrzeit | Zeitpunkt des Aufrufs des Hooks |
cwd / workingDirectory | string | Aktuelles Arbeitsverzeichnis |
prompt | string | Prompt nach user-Hooks |
transformedPrompt | string | Modellgerichtete Eingabeaufforderung nach Laufzeittransformationen |
Gibt keinen Wert zurück, um die transformierte Eingabeaufforderung unverändert zu lassen. Geben Sie modifiedTransformedPrompt zurück, um den Inhalt zu ersetzen, der im Sitzungsverlauf gespeichert und an das Modell gesendet wird.
Beispiele
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?;
Die Ersetzung wird als Inhalt der Benutzernachricht gespeichert, sodass wiederaufgenommene Sitzungen den geänderten Inhalt unverändert erneut abspielen.