pub struct ResetExercisesTool;Expand description
Resets a user’s progress on selected exercises (or the whole course) after admin confirmation. Confirmed answers run Self::execute.
Trait Implementations§
Source§impl ChatbotToolDeclaration for ResetExercisesTool
impl ChatbotToolDeclaration for ResetExercisesTool
Source§const NAME: &'static str = "reset_exercises"
const NAME: &'static str = "reset_exercises"
The name the LLM calls this tool by. The registries dispatch on it and
Self::get_tool_definition must advertise it, so the two cannot drift apart.
Source§const CATEGORY: ToolCategory = ToolCategory::AdminSupportLearningProgress
const CATEGORY: ToolCategory = ToolCategory::AdminSupportLearningProgress
Which configured category of tools this belongs to. A chatbot offers it only if its
configuration lists this category; the caller must still be authorized for it.
Source§fn offer_requirements(user_context: &ChatbotTurnContext) -> Vec<ToolRequirement>
fn offer_requirements(user_context: &ChatbotTurnContext) -> Vec<ToolRequirement>
What the caller must be allowed to do against the turn itself for this tool to be offered
to the LLM at all. Read more
Source§fn get_tool_definition() -> AzureLLMFunctionToolDefinition
fn get_tool_definition() -> AzureLLMFunctionToolDefinition
The definition sent to the LLM as part of a chat request. Azure rejects it unless
strict
is true and the parameter schema forbids additional properties.Source§impl ConfirmableActionTool for ResetExercisesTool
impl ConfirmableActionTool for ResetExercisesTool
type Arguments = ResetExercisesArguments
Source§type Facts = ResetExercisesFacts
type Facts = ResetExercisesFacts
Extra facts Self::execute gathers while performing the mutation, used only to decide
what Self::output_description_instructions should mention for this particular call.
()
for a tool with nothing worth gating on.Source§fn call_requirements(
arguments: &Self::Arguments,
_user_context: &ChatbotTurnContext,
) -> Vec<ToolRequirement>
fn call_requirements( arguments: &Self::Arguments, _user_context: &ChatbotTurnContext, ) -> Vec<ToolRequirement>
What the caller must be allowed to do against what this call actually targets. Checked
before the turn suspends on the call and again immediately before the mutation runs.
fn parse_arguments(arguments: &str) -> ChatbotResult<Self::Arguments>
Source§async fn execute(
conn: &mut PgConnection,
_app_config: &ApplicationConfiguration,
arguments: &Self::Arguments,
authorization: &ToolAuthorization<Self>,
) -> ChatbotResult<(ExecutedAction, Self::Facts)>
async fn execute( conn: &mut PgConnection, _app_config: &ApplicationConfiguration, arguments: &Self::Arguments, authorization: &ToolAuthorization<Self>, ) -> ChatbotResult<(ExecutedAction, Self::Facts)>
Performs the mutation. Must re-verify every model-supplied display field against the
database (case-insensitively for emails) and refuse with a descriptive error rather than
mutate on a mismatch, so a wrong or stale display can never mutate a row it doesn’t
describe.
authorization both proves the confirming admin was checked against
this call’s own requirements and names them, so the mutation cannot run ahead of the
check and the audit row cannot credit anyone else.Source§fn output_description_instructions(
arguments: &Self::Arguments,
facts: Option<&Self::Facts>,
app_config: &ApplicationConfiguration,
) -> Option<String>
fn output_description_instructions( arguments: &Self::Arguments, facts: Option<&Self::Facts>, app_config: &ApplicationConfiguration, ) -> Option<String>
Just-in-time instructions for the LLM on how to describe the outcome.
facts is None on
a declined answer (nothing executed) and Some after a successful Self::execute, so
instructions can be conditioned on what this call actually did instead of always
including everything that could ever be true. app_config is available on both branches
(unlike facts) so a verification link can be offered even on a decline.fn declined_output(_arguments: &Self::Arguments) -> String
Auto Trait Implementations§
impl Freeze for ResetExercisesTool
impl RefUnwindSafe for ResetExercisesTool
impl Send for ResetExercisesTool
impl Sync for ResetExercisesTool
impl Unpin for ResetExercisesTool
impl UnsafeUnpin for ResetExercisesTool
impl UnwindSafe for ResetExercisesTool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more