-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Clean up gr.ChatInterface
and fix API type discrepancy
#10185
Conversation
🪼 branch checks and previews
Install Gradio from this PR pip install https://gradio-pypi-previews.s3.amazonaws.com/d328042f58283ea25208392e96ad8728bb78adab/gradio-5.8.0-py3-none-any.whl Install Gradio Python Client from this PR pip install "gradio-client @ git+https://github.com/gradio-app/gradio@d328042f58283ea25208392e96ad8728bb78adab#subdirectory=client/python" Install Gradio JS Client from this PR npm install https://gradio-npm-previews.s3.amazonaws.com/d328042f58283ea25208392e96ad8728bb78adab/gradio-client-1.8.0.tgz Use Lite from this PR <script type="module" src="https://gradio-lite-previews.s3.amazonaws.com/d328042f58283ea25208392e96ad8728bb78adab/dist/lite.js""></script> |
🦄 change detectedThis Pull Request includes changes to the following packages.
With the following changelog entry.
Maintainers or the PR author can modify the PR title to modify this entry.
|
) | ||
|
||
@staticmethod |
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.
Added these two helper methods (which arguably could live in gr.Chatbot
but that can be part of a separate refactoring of gr.Chatbot
)
if self.is_generator: | ||
|
||
@functools.wraps(self.fn) | ||
async def api_fn(message, history, *args, **kwargs): # type: ignore |
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.
The key change (which fixes the bug) is to eliminate the separate api_fn
and instead use the same submit_fn
that is used in the UI for API calls.
test/test_routes.py
Outdated
@@ -824,7 +824,7 @@ def identity(x, y, request: gr.Request): | |||
response = client.post(f"{API_PREFIX}/api/chat/", json={"data": ["test", None]}) | |||
assert response.status_code == 200 | |||
output = dict(response.json()) | |||
assert output["data"] == ["test", None] | |||
assert output["data"] == [None, "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.
Now the state variable is first so the None appears first, but this should not have any impact since the Client filters state variables out anyways.
Remind me never to take on a refactoring task unless absolutely necessary. |
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.
Tested and works great. Thanks for refactoring @abidlabs!
Thanks @dawoodkhan82!! |
Fixes: #9375 and shaves off about 80 loc from
gr.ChatInterface
as well.