-
-
Notifications
You must be signed in to change notification settings - Fork 624
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
Fix agent stream callback #614
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you flesh out some more expected cases and use a table driven test in the test method?
I've updated test case in this PR and #612 , Both using table driven |
callbacks/agent_final_stream_test.go
Outdated
extraStrBefore := fmt.Sprintf(" another text. Final Answer: %s", correctStr) | ||
extraColonWithSpacesBefore := fmt.Sprintf(` : %s`, correctStr) | ||
|
||
testCases := []filterFinalStringTestCase{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please place this at the top of the test (after t.Parallel()) and approach it like:
cases := []struct { ...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated all test case inline with:
cases := []struct { ...
please review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I did a little change in this PR to handled 2 problems when using AgentFinalStreamHandler:
I followed this example to study using agent
https://github.com/tmc/langchaingo/blob/main/examples/mrkl-agent-example/mrkl_agent.go
and use a handler to get streaming result like this:
problem1. Detect keyword failed:
reason: cut out slice handler.LastTokens before doing detect keyword will cause Detection can’t success
for example:
before the handler.LastTokens string value is
after the reassign the slice value, it's become
Then it can't pass the keywords check process which should contained
Final Answer:
keyword in LastTokens.So I changed code order, check keywords first, then reassign slice
problem2. Final Answer sometimes contain colon symbol
:
at the beginningAdd few code to filter the colon if it exist
May this be a positive contribution.
PR Checklist
memory: add interfaces for X, Y
orutil: add whizzbang helpers
).Fixes #123
).golangci-lint
checks.