-
Notifications
You must be signed in to change notification settings - Fork 5
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
feat: rewind to user message #30
Conversation
lukealvoeiro
commented
Sep 6, 2024
- Removes retry logic from Exchange.generate, as this may result in undefined behavior
- Adds a rewind_to_last_user_message method on the Exchange
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.
Looks great!
src/exchange/exchange.py
Outdated
except HTTPStatusError as e: | ||
# in the future, if models are hosted on machines we may need to add | ||
# other types of exceptions here | ||
raise FailedToGenerateMessageError(f"Failed to generate message: {e}") from e |
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.
I'd suggest leaving this as the original HTTP Status Error? that has more actionable information when caught downstream or for debugging (like the request etc)
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.
Ok, I figured we might want to handle all generate
errors similarly, but not attached to it.
src/exchange/exchange.py
Outdated
@@ -337,6 +319,19 @@ def prepend_checkpointed_message(self, message: Message, token_count: int) -> No | |||
) | |||
self.checkpoint_data.message_index_offset = new_index | |||
|
|||
def rewind_to_last_user_message(self) -> None: |
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.
nit: rewind_to sounds like the last user message is included, maybe rewind_past_
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.
👍🏼. Thinking about it a bit more, there is no other situation that you would rewind to. Thoughts on just calling it rewind
?
ex.rewind_to_last_user_message() | ||
|
||
assert len(ex.messages) == 2 | ||
assert len(ex.checkpoint_data.checkpoints) == 2 |
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.
probably worth also adding tool use/results into this test?
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.
👍🏼
* main: feat: Rework error handling (#48) chore(release): release version 0.9.0 (#45) chore: add just command for releases and update pyproject for changelog (#43) feat: convert ollama provider to an openai configuration (#34) fix: Bedrock Provider request (#29) test: Update truncate and summarize tests to check for sytem prompt t… (#42) chore: update test_tools to read a file instead of get a password (#38) fix: Use placeholder message to check tokens (#41) feat: rewind to user message (#30) chore: Update LICENSE (#40) fix: shouldn't hardcode truncate to gpt4o mini (#35)