Add remind tool example demonstrating deferred/async tool calls #1493
+348
−0
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.
Summary
This PR adds a new example (
33_remind_tool.py) that demonstrates how to create a custom "remind" tool that sends deferred messages to the conversation.What this example shows
The remind tool demonstrates async/deferred tool behavior:
Use case
This addresses the question about deferred/async tool calls (ActionEvent) without waiting on a tool response (ObservationEvent). The primary use case is Human-in-the-loop as a Tool Call, where the tool can inject messages into the conversation at a later time without blocking the agent.
Key implementation details
RemindExecutorreceives theconversationparameter in its__call__methodconversation.send_message()to inject the reminderRemindObservationconfirming the reminder was scheduledFiles added
examples/01_standalone_sdk/33_remind_tool.py- The example demonstrating the remind tooltests/sdk/tool/test_remind_tool.py- Unit tests for the remind tool componentsTesting
All tests pass:
@neubig can click here to continue refining the PR
Agent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdknikolaik/python-nodejs:python3.12-nodejs22golang:1.21-bookwormPull (multi-arch manifest)
# Each variant is a multi-arch manifest supporting both amd64 and arm64 docker pull ghcr.io/openhands/agent-server:6ea715d-pythonRun
All tags pushed for this build
About Multi-Architecture Support
6ea715d-python) is a multi-arch manifest supporting both amd64 and arm646ea715d-python-amd64) are also available if needed