Refactor streaming api to support tool calls #747
Draft
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.
Motivation and Context
Before this change it was not possible to use tool-calling when interacting with a LLM through the streaming interface.
This is useful to have as many front-end integrated agents may want to incrementally update the UI but still have tool calling support.
Relevant issues:
LLMClient.executeStreaming
expose more information #731tools
argument inexecuteStreaming()
ofLLMClient
andPromptExecutor
#624Breaking Changes
For now I have created backwards compatibility, introducing a new function that is implemented in
PromptExecutor
andLLMClient
:And change
executeStreaming
default declaration to the following for backwards compatability:Also I introduced a function in
AIAgentLLMWriteSession
:Also in
AIAgentNodes
However, it may be preferable to force users to use the new function for a cleaner api design, if so they would have to update their usage of
PromptExecutor.executeStreaming
,LLMClient.executeStreaming
,AIAgentLLMWriteSession.requestLLMStreaming
, andnodeLLMRequestStreamingWithTools
.Type of the changes
Checklist
develop
as the base branchAdditional steps for pull requests adding a new feature