-
Notifications
You must be signed in to change notification settings - Fork 166
Add tool guardrails for function calling validation and transformation #1973
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
cescoffier
merged 1 commit into
quarkiverse:main
from
cescoffier:function-calling-guardrails-uncommitted
Nov 27, 2025
Merged
Add tool guardrails for function calling validation and transformation #1973
cescoffier
merged 1 commit into
quarkiverse:main
from
cescoffier:function-calling-guardrails-uncommitted
Nov 27, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This comment has been minimized.
This comment has been minimized.
geoand
reviewed
Nov 27, 2025
core/deployment/src/main/java/io/quarkiverse/langchain4j/deployment/ToolProcessor.java
Outdated
Show resolved
Hide resolved
geoand
reviewed
Nov 27, 2025
core/runtime/src/main/java/io/quarkiverse/langchain4j/guardrails/ToolGuardrail.java
Show resolved
Hide resolved
geoand
reviewed
Nov 27, 2025
core/runtime/src/main/java/io/quarkiverse/langchain4j/guardrails/ToolGuardrailRequest.java
Show resolved
Hide resolved
geoand
reviewed
Nov 27, 2025
core/runtime/src/main/java/io/quarkiverse/langchain4j/guardrails/ToolGuardrailResult.java
Show resolved
Hide resolved
This comment has been minimized.
This comment has been minimized.
Implement a guardrail system for tool invocations, providing input validation and output filtering capabilities. Features: - Input guardrails (@ToolInputGuardrails) validate parameters before execution - Output guardrails (@ToolOutputGuardrails) filter/transform results after execution - Guardrails can allow, block, modify, or request retry with custom logic - Support for multiple chained guardrails with fail-fast behavior - CDI integration with full dependency injection support - JSON parameter access via argumentsAsJson() for easy validation - Access to tool metadata, invocation context, and memory ID Limitations: - Guardrails cannot execute on Vert.x event loop due to synchronous API - Tools with guardrails must use blocking execution model - Clear error message guides users to mark tools as @Blocking Fix quarkiverse#990
7b7d262 to
20f04a8
Compare
geoand
approved these changes
Nov 27, 2025
Status for workflow
|
Collaborator
|
Why not implement this upstream first so that it could be inherited by Quarkus? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implement a guardrail system for tool invocations, providing input validation and output filtering capabilities.
Features:
Limitations: