Spaces:
Sleeping
Sleeping
edited readme
Browse files
README.md
CHANGED
|
@@ -7,6 +7,25 @@ sdk: gradio
|
|
| 7 |
sdk_version: 5.27.1
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
---
|
| 11 |
# MedTranscript QA Agent
|
| 12 |
|
|
@@ -115,11 +134,9 @@ The agent uses Claude 3.7 Sonnet to:
|
|
| 115 |
- Improve document chunking for more precise retrieval
|
| 116 |
- Implement a feedback mechanism to improve tool selection over time
|
| 117 |
|
| 118 |
-
## License
|
| 119 |
|
| 120 |
-
This project is licensed under the MIT License - see the LICENSE file for details.
|
| 121 |
|
| 122 |
## Acknowledgments
|
| 123 |
|
| 124 |
-
- Medical transcription samples from
|
| 125 |
- Built with Claude 3.7 Sonnet by Anthropic
|
|
|
|
| 7 |
sdk_version: 5.27.1
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
+
tags:
|
| 11 |
+
- medical
|
| 12 |
+
- healthcare
|
| 13 |
+
- transcription
|
| 14 |
+
- question-answering
|
| 15 |
+
- rag
|
| 16 |
+
- anthropic
|
| 17 |
+
- claude-3
|
| 18 |
+
- faiss
|
| 19 |
+
- vector-search
|
| 20 |
+
- sentence-transformers
|
| 21 |
+
- gradio
|
| 22 |
+
- duckduckgo
|
| 23 |
+
- web-search
|
| 24 |
+
- multi-tool
|
| 25 |
+
- agent
|
| 26 |
+
- tool-selection
|
| 27 |
+
- mimic-iii
|
| 28 |
+
- clinical
|
| 29 |
---
|
| 30 |
# MedTranscript QA Agent
|
| 31 |
|
|
|
|
| 134 |
- Improve document chunking for more precise retrieval
|
| 135 |
- Implement a feedback mechanism to improve tool selection over time
|
| 136 |
|
|
|
|
| 137 |
|
|
|
|
| 138 |
|
| 139 |
## Acknowledgments
|
| 140 |
|
| 141 |
+
- Medical transcription samples from Kaggle (deided from MIMIC III)
|
| 142 |
- Built with Claude 3.7 Sonnet by Anthropic
|
debug.log
CHANGED
|
@@ -825,3 +825,62 @@
|
|
| 825 |
2025-04-28 19:57:28,706 - httpcore.connection - DEBUG - close.started
|
| 826 |
2025-04-28 19:57:28,706 - httpcore.connection - DEBUG - close.complete
|
| 827 |
2025-04-28 19:57:28,746 - urllib3.connectionpool - DEBUG - https://huggingface.co:443 "HEAD /api/telemetry/gradio/launched HTTP/1.1" 200 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 825 |
2025-04-28 19:57:28,706 - httpcore.connection - DEBUG - close.started
|
| 826 |
2025-04-28 19:57:28,706 - httpcore.connection - DEBUG - close.complete
|
| 827 |
2025-04-28 19:57:28,746 - urllib3.connectionpool - DEBUG - https://huggingface.co:443 "HEAD /api/telemetry/gradio/launched HTTP/1.1" 200 0
|
| 828 |
+
2025-04-28 20:30:35,646 - agent - DEBUG - Received question: What was the diagnosis for the ORIF surgery?
|
| 829 |
+
2025-04-28 20:30:35,654 - anthropic._base_client - DEBUG - Request options: {'method': 'post', 'url': '/v1/messages', 'timeout': Timeout(connect=5.0, read=600, write=600, pool=600), 'files': None, 'idempotency_key': 'stainless-python-retry-a6fb3d48-5230-4beb-a3a0-650f3824a93b', 'json_data': {'max_tokens': 500, 'messages': [{'role': 'user', 'content': 'Question: "Decide which tool(s) are needed to answer this question: "What was the diagnosis for the ORIF surgery?".\n Available tools:\n - Document RAG (for clinical facts)\n - Search (for public info)\n\n Reply in format:\n TOOL: [Document/Search/Both/All]\n "\n\nDecide the best tool for answering it. Reply exactly with TOOL: [Document], TOOL: [Search], or TOOL: [Both]. No other text.'}], 'model': 'claude-3-7-sonnet-20250219', 'system': 'You are an expert clinical AI assistant. You must strictly reply in ONLY one of the following formats: TOOL: [Document], TOOL: [Search], or TOOL: [Both].\n\nFor questions about general medical information like recovery times, procedure durations, or standard practices, prefer TOOL: [Search].\nFor questions about specific medical cases or rare conditions found in the document database, use TOOL: [Document].\nFor questions that would benefit from both sources, use TOOL: [Both].\n\nNever explain, never say anything else.', 'temperature': 0}}
|
| 830 |
+
2025-04-28 20:30:35,683 - anthropic._base_client - DEBUG - Sending HTTP Request: POST https://api.anthropic.com/v1/messages
|
| 831 |
+
2025-04-28 20:30:35,683 - httpcore.connection - DEBUG - connect_tcp.started host='api.anthropic.com' port=443 local_address=None timeout=5.0 socket_options=[(65535, 8, True), (6, 257, 60), (6, 258, 5)]
|
| 832 |
+
2025-04-28 20:30:35,699 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x15321cb60>
|
| 833 |
+
2025-04-28 20:30:35,699 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x1311aef50> server_hostname='api.anthropic.com' timeout=5.0
|
| 834 |
+
2025-04-28 20:30:35,710 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x1322df9b0>
|
| 835 |
+
2025-04-28 20:30:35,710 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
|
| 836 |
+
2025-04-28 20:30:35,710 - httpcore.http11 - DEBUG - send_request_headers.complete
|
| 837 |
+
2025-04-28 20:30:35,710 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
|
| 838 |
+
2025-04-28 20:30:35,710 - httpcore.http11 - DEBUG - send_request_body.complete
|
| 839 |
+
2025-04-28 20:30:35,710 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
|
| 840 |
+
2025-04-28 20:30:36,399 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Tue, 29 Apr 2025 03:30:36 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'anthropic-ratelimit-input-tokens-limit', b'20000'), (b'anthropic-ratelimit-input-tokens-remaining', b'20000'), (b'anthropic-ratelimit-input-tokens-reset', b'2025-04-29T03:30:36Z'), (b'anthropic-ratelimit-output-tokens-limit', b'8000'), (b'anthropic-ratelimit-output-tokens-remaining', b'8000'), (b'anthropic-ratelimit-output-tokens-reset', b'2025-04-29T03:30:36Z'), (b'anthropic-ratelimit-requests-limit', b'50'), (b'anthropic-ratelimit-requests-remaining', b'49'), (b'anthropic-ratelimit-requests-reset', b'2025-04-29T03:30:37Z'), (b'anthropic-ratelimit-tokens-limit', b'28000'), (b'anthropic-ratelimit-tokens-remaining', b'28000'), (b'anthropic-ratelimit-tokens-reset', b'2025-04-29T03:30:36Z'), (b'request-id', b'req_011CNcKKR1jsLM9sKwZ2aKp9'), (b'anthropic-organization-id', b'961c62a8-661b-402f-b3ec-38f150bfa917'), (b'via', b'1.1 google'), (b'cf-cache-status', b'DYNAMIC'), (b'X-Robots-Tag', b'none'), (b'Server', b'cloudflare'), (b'CF-RAY', b'937bb8bd7ac27ac2-SJC'), (b'Content-Encoding', b'gzip')])
|
| 841 |
+
2025-04-28 20:30:36,400 - httpx - INFO - HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
|
| 842 |
+
2025-04-28 20:30:36,401 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
|
| 843 |
+
2025-04-28 20:30:36,402 - httpcore.http11 - DEBUG - receive_response_body.complete
|
| 844 |
+
2025-04-28 20:30:36,402 - httpcore.http11 - DEBUG - response_closed.started
|
| 845 |
+
2025-04-28 20:30:36,402 - httpcore.http11 - DEBUG - response_closed.complete
|
| 846 |
+
2025-04-28 20:30:36,403 - anthropic._base_client - DEBUG - HTTP Response: POST https://api.anthropic.com/v1/messages "200 OK" Headers({'date': 'Tue, 29 Apr 2025 03:30:36 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'anthropic-ratelimit-input-tokens-limit': '20000', 'anthropic-ratelimit-input-tokens-remaining': '20000', 'anthropic-ratelimit-input-tokens-reset': '2025-04-29T03:30:36Z', 'anthropic-ratelimit-output-tokens-limit': '8000', 'anthropic-ratelimit-output-tokens-remaining': '8000', 'anthropic-ratelimit-output-tokens-reset': '2025-04-29T03:30:36Z', 'anthropic-ratelimit-requests-limit': '50', 'anthropic-ratelimit-requests-remaining': '49', 'anthropic-ratelimit-requests-reset': '2025-04-29T03:30:37Z', 'anthropic-ratelimit-tokens-limit': '28000', 'anthropic-ratelimit-tokens-remaining': '28000', 'anthropic-ratelimit-tokens-reset': '2025-04-29T03:30:36Z', 'request-id': 'req_011CNcKKR1jsLM9sKwZ2aKp9', 'anthropic-organization-id': '961c62a8-661b-402f-b3ec-38f150bfa917', 'via': '1.1 google', 'cf-cache-status': 'DYNAMIC', 'x-robots-tag': 'none', 'server': 'cloudflare', 'cf-ray': '937bb8bd7ac27ac2-SJC', 'content-encoding': 'gzip'})
|
| 847 |
+
2025-04-28 20:30:36,403 - anthropic._base_client - DEBUG - request_id: req_011CNcKKR1jsLM9sKwZ2aKp9
|
| 848 |
+
2025-04-28 20:30:36,420 - agent - DEBUG - Tool decision raw response: 'TOOL: [Document]'
|
| 849 |
+
2025-04-28 20:30:36,420 - agent - DEBUG - Parsed decision - Use Document: True, Use Search: False
|
| 850 |
+
2025-04-28 20:30:36,421 - agent - DEBUG - Retrieving from documents...
|
| 851 |
+
2025-04-28 20:30:36,838 - agent - DEBUG - Document retrieval returned 5595 characters
|
| 852 |
+
2025-04-28 20:31:37,924 - agent - DEBUG - Received question: How long is recovery after a bilateral reduction mammoplasty?
|
| 853 |
+
2025-04-28 20:31:37,925 - anthropic._base_client - DEBUG - Request options: {'method': 'post', 'url': '/v1/messages', 'timeout': Timeout(connect=5.0, read=600, write=600, pool=600), 'files': None, 'idempotency_key': 'stainless-python-retry-c1bb6795-1cd1-4d76-8366-2a1c15c4e79e', 'json_data': {'max_tokens': 500, 'messages': [{'role': 'user', 'content': 'Question: "Decide which tool(s) are needed to answer this question: "How long is recovery after a bilateral reduction mammoplasty?".\n Available tools:\n - Document RAG (for clinical facts)\n - Search (for public info)\n\n Reply in format:\n TOOL: [Document/Search/Both/All]\n "\n\nDecide the best tool for answering it. Reply exactly with TOOL: [Document], TOOL: [Search], or TOOL: [Both]. No other text.'}], 'model': 'claude-3-7-sonnet-20250219', 'system': 'You are an expert clinical AI assistant. You must strictly reply in ONLY one of the following formats: TOOL: [Document], TOOL: [Search], or TOOL: [Both].\n\nFor questions about general medical information like recovery times, procedure durations, or standard practices, prefer TOOL: [Search].\nFor questions about specific medical cases or rare conditions found in the document database, use TOOL: [Document].\nFor questions that would benefit from both sources, use TOOL: [Both].\n\nNever explain, never say anything else.', 'temperature': 0}}
|
| 854 |
+
2025-04-28 20:31:37,925 - anthropic._base_client - DEBUG - Sending HTTP Request: POST https://api.anthropic.com/v1/messages
|
| 855 |
+
2025-04-28 20:31:37,926 - httpcore.connection - DEBUG - close.started
|
| 856 |
+
2025-04-28 20:31:37,926 - httpcore.connection - DEBUG - close.complete
|
| 857 |
+
2025-04-28 20:31:37,926 - httpcore.connection - DEBUG - connect_tcp.started host='api.anthropic.com' port=443 local_address=None timeout=5.0 socket_options=[(65535, 8, True), (6, 257, 60), (6, 258, 5)]
|
| 858 |
+
2025-04-28 20:31:37,933 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x132f6b1d0>
|
| 859 |
+
2025-04-28 20:31:37,933 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x1311aef50> server_hostname='api.anthropic.com' timeout=5.0
|
| 860 |
+
2025-04-28 20:31:37,955 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x132f6b680>
|
| 861 |
+
2025-04-28 20:31:37,955 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
|
| 862 |
+
2025-04-28 20:31:37,956 - httpcore.http11 - DEBUG - send_request_headers.complete
|
| 863 |
+
2025-04-28 20:31:37,956 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
|
| 864 |
+
2025-04-28 20:31:37,956 - httpcore.http11 - DEBUG - send_request_body.complete
|
| 865 |
+
2025-04-28 20:31:37,956 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
|
| 866 |
+
2025-04-28 20:31:38,742 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Tue, 29 Apr 2025 03:31:38 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'anthropic-ratelimit-input-tokens-limit', b'20000'), (b'anthropic-ratelimit-input-tokens-remaining', b'20000'), (b'anthropic-ratelimit-input-tokens-reset', b'2025-04-29T03:31:38Z'), (b'anthropic-ratelimit-output-tokens-limit', b'8000'), (b'anthropic-ratelimit-output-tokens-remaining', b'8000'), (b'anthropic-ratelimit-output-tokens-reset', b'2025-04-29T03:31:38Z'), (b'anthropic-ratelimit-requests-limit', b'50'), (b'anthropic-ratelimit-requests-remaining', b'49'), (b'anthropic-ratelimit-requests-reset', b'2025-04-29T03:31:39Z'), (b'anthropic-ratelimit-tokens-limit', b'28000'), (b'anthropic-ratelimit-tokens-remaining', b'28000'), (b'anthropic-ratelimit-tokens-reset', b'2025-04-29T03:31:38Z'), (b'request-id', b'req_011CNcKQ19gDVN1u2JqPd7CN'), (b'anthropic-organization-id', b'961c62a8-661b-402f-b3ec-38f150bfa917'), (b'via', b'1.1 google'), (b'cf-cache-status', b'DYNAMIC'), (b'X-Robots-Tag', b'none'), (b'Server', b'cloudflare'), (b'CF-RAY', b'937bba428b5bce8c-SJC'), (b'Content-Encoding', b'gzip')])
|
| 867 |
+
2025-04-28 20:31:38,743 - httpx - INFO - HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
|
| 868 |
+
2025-04-28 20:31:38,743 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
|
| 869 |
+
2025-04-28 20:31:38,744 - httpcore.http11 - DEBUG - receive_response_body.complete
|
| 870 |
+
2025-04-28 20:31:38,744 - httpcore.http11 - DEBUG - response_closed.started
|
| 871 |
+
2025-04-28 20:31:38,744 - httpcore.http11 - DEBUG - response_closed.complete
|
| 872 |
+
2025-04-28 20:31:38,744 - anthropic._base_client - DEBUG - HTTP Response: POST https://api.anthropic.com/v1/messages "200 OK" Headers({'date': 'Tue, 29 Apr 2025 03:31:38 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'anthropic-ratelimit-input-tokens-limit': '20000', 'anthropic-ratelimit-input-tokens-remaining': '20000', 'anthropic-ratelimit-input-tokens-reset': '2025-04-29T03:31:38Z', 'anthropic-ratelimit-output-tokens-limit': '8000', 'anthropic-ratelimit-output-tokens-remaining': '8000', 'anthropic-ratelimit-output-tokens-reset': '2025-04-29T03:31:38Z', 'anthropic-ratelimit-requests-limit': '50', 'anthropic-ratelimit-requests-remaining': '49', 'anthropic-ratelimit-requests-reset': '2025-04-29T03:31:39Z', 'anthropic-ratelimit-tokens-limit': '28000', 'anthropic-ratelimit-tokens-remaining': '28000', 'anthropic-ratelimit-tokens-reset': '2025-04-29T03:31:38Z', 'request-id': 'req_011CNcKQ19gDVN1u2JqPd7CN', 'anthropic-organization-id': '961c62a8-661b-402f-b3ec-38f150bfa917', 'via': '1.1 google', 'cf-cache-status': 'DYNAMIC', 'x-robots-tag': 'none', 'server': 'cloudflare', 'cf-ray': '937bba428b5bce8c-SJC', 'content-encoding': 'gzip'})
|
| 873 |
+
2025-04-28 20:31:38,744 - anthropic._base_client - DEBUG - request_id: req_011CNcKQ19gDVN1u2JqPd7CN
|
| 874 |
+
2025-04-28 20:31:38,745 - agent - DEBUG - Tool decision raw response: 'TOOL: [Search]'
|
| 875 |
+
2025-04-28 20:31:38,745 - agent - DEBUG - Parsed decision - Use Document: False, Use Search: True
|
| 876 |
+
2025-04-28 20:31:38,745 - agent - DEBUG - Searching web...
|
| 877 |
+
2025-04-28 20:31:38,758 - primp.utils - DEBUG - Loaded CA certs
|
| 878 |
+
2025-04-28 20:31:38,763 - rquest.connect - DEBUG - starting new connection: https://lite.duckduckgo.com/
|
| 879 |
+
2025-04-28 20:31:38,764 - rquest.util.client.connect.dns - DEBUG - resolving lite.duckduckgo.com
|
| 880 |
+
2025-04-28 20:31:38,772 - rquest.util.client.connect.http - DEBUG - connecting to 52.250.42.157:443
|
| 881 |
+
2025-04-28 20:31:38,802 - rquest.util.client.connect.http - DEBUG - connected to 52.250.42.157:443
|
| 882 |
+
2025-04-28 20:31:38,834 - rquest.util.client.pool - DEBUG - pooling idle connection for PoolKey { uri: https://lite.duckduckgo.com/, alpn_protos: None, network: default }
|
| 883 |
+
2025-04-28 20:31:39,789 - cookie_store.cookie_store - DEBUG - inserting secure cookie 'kl'
|
| 884 |
+
2025-04-28 20:31:39,790 - primp - INFO - response: https://lite.duckduckgo.com/lite/ 200
|
| 885 |
+
2025-04-28 20:31:39,793 - duckduckgo_search.DDGS - DEBUG - _get_url() https://lite.duckduckgo.com/lite/ 200
|
| 886 |
+
2025-04-28 20:31:39,800 - agent - DEBUG - Search returned 1319 characters
|