Spaces:
Running
Running
update python
Browse files- app.py +9 -82
- config.json +1 -1
- runtime.txt +1 -0
app.py
CHANGED
|
@@ -301,11 +301,7 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 301 |
if not hasattr(callback_func, '_data_counter'):
|
| 302 |
callback_func._data_counter = 0
|
| 303 |
|
| 304 |
-
|
| 305 |
-
if not hasattr(callback_func, '_persistent_data'):
|
| 306 |
-
callback_func._persistent_data = []
|
| 307 |
-
callback_func._persistent_data.append("π **Session Started** - All data will be preserved\n")
|
| 308 |
-
callback_func._persistent_data.append("---\n")
|
| 309 |
|
| 310 |
|
| 311 |
|
|
@@ -473,9 +469,6 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 473 |
accumulated_tool.append(f"\nπ **Task Started**: {content}\n")
|
| 474 |
# Real-time UI update for task start
|
| 475 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 476 |
-
# Show data counter at the top
|
| 477 |
-
st.markdown(f"**π Total Data Messages: {callback_func._data_counter}**")
|
| 478 |
-
st.markdown("---")
|
| 479 |
st.markdown("".join(accumulated_tool))
|
| 480 |
elif "```bdd-long-task-end" in content:
|
| 481 |
# Extract task info
|
|
@@ -490,9 +483,6 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 490 |
accumulated_tool.append(f"\nβ
**Task Completed**: {content}\n")
|
| 491 |
# Real-time UI update for task completion
|
| 492 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 493 |
-
# Show data counter at the top
|
| 494 |
-
st.markdown(f"**π Total Data Messages: {callback_func._data_counter}**")
|
| 495 |
-
st.markdown("---")
|
| 496 |
st.markdown("".join(accumulated_tool))
|
| 497 |
elif "```bdd-resource-lookup" in content:
|
| 498 |
# Extract resource info
|
|
@@ -514,9 +504,6 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 514 |
accumulated_tool.append(f"\nπ **Resources**: {content}\n")
|
| 515 |
# Real-time UI update for resources
|
| 516 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 517 |
-
# Show data counter at the top
|
| 518 |
-
st.markdown(f"**π Total Data Messages: {callback_func._data_counter}**")
|
| 519 |
-
st.markdown("---")
|
| 520 |
st.markdown("".join(accumulated_tool))
|
| 521 |
elif "```bdd-chat-agent-task" in content:
|
| 522 |
# Extract chat agent task info
|
|
@@ -589,45 +576,22 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 589 |
timestamp = time.strftime("%H:%M:%S")
|
| 590 |
|
| 591 |
# Format the data for display
|
| 592 |
-
data_entry = ""
|
| 593 |
if isinstance(data_content, str):
|
| 594 |
-
|
| 595 |
else:
|
| 596 |
-
|
| 597 |
-
|
| 598 |
-
# Add to both temporary and persistent storage
|
| 599 |
-
accumulated_tool.append(data_entry)
|
| 600 |
-
callback_func._persistent_data.append(data_entry)
|
| 601 |
|
| 602 |
# Immediate real-time UI update for any data: message
|
| 603 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 604 |
-
# Show data counter at the top
|
| 605 |
-
st.markdown(f"**π Total Data Messages: {callback_func._data_counter}**")
|
| 606 |
-
st.markdown("---")
|
| 607 |
-
# Show persistent data first, then current accumulated data
|
| 608 |
-
st.markdown("".join(callback_func._persistent_data))
|
| 609 |
-
st.markdown("---")
|
| 610 |
-
st.markdown("**π Current Stream:**")
|
| 611 |
st.markdown("".join(accumulated_tool))
|
| 612 |
else:
|
| 613 |
# Handle non-dict data objects
|
| 614 |
import time
|
| 615 |
timestamp = time.strftime("%H:%M:%S")
|
| 616 |
-
|
| 617 |
-
|
| 618 |
-
# Add to both temporary and persistent storage
|
| 619 |
-
accumulated_tool.append(data_entry)
|
| 620 |
-
callback_func._persistent_data.append(data_entry)
|
| 621 |
|
| 622 |
# Immediate real-time UI update
|
| 623 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 624 |
-
# Show data counter at the top
|
| 625 |
-
st.markdown(f"**π Total Data Messages: {callback_func._data_counter}**")
|
| 626 |
-
st.markdown("---")
|
| 627 |
-
# Show persistent data first, then current accumulated data
|
| 628 |
-
st.markdown("".join(callback_func._persistent_data))
|
| 629 |
-
st.markdown("---")
|
| 630 |
-
st.markdown("**π Current Stream:**")
|
| 631 |
st.markdown("".join(accumulated_tool))
|
| 632 |
except json.JSONDecodeError:
|
| 633 |
# If not valid JSON, check if it's streaming text content
|
|
@@ -652,27 +616,11 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 652 |
# Real-time UI update
|
| 653 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 654 |
st.markdown("".join(accumulated_tool))
|
| 655 |
-
|
| 656 |
-
|
| 657 |
-
import time
|
| 658 |
-
timestamp = time.strftime("%H:%M:%S")
|
| 659 |
-
accumulated_tool.append(f"\nπ‘ **Empty Data** [{timestamp}]: (empty or whitespace)\n")
|
| 660 |
-
|
| 661 |
-
# Immediate real-time UI update
|
| 662 |
-
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 663 |
-
st.markdown("".join(accumulated_tool))
|
| 664 |
-
except Exception as e:
|
| 665 |
# Fallback: treat as plain text, but only if it's meaningful
|
| 666 |
-
import time
|
| 667 |
-
timestamp = time.strftime("%H:%M:%S")
|
| 668 |
if line.strip() and len(line.strip()) > 1: # Only show non-trivial content
|
| 669 |
-
accumulated_tool.append(f"\nπ **Info
|
| 670 |
-
else:
|
| 671 |
-
accumulated_tool.append(f"\nβ οΈ **Error** [{timestamp}]: {str(e)}\n")
|
| 672 |
-
|
| 673 |
-
# Immediate real-time UI update for error cases
|
| 674 |
-
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 675 |
-
st.markdown("".join(accumulated_tool))
|
| 676 |
elif line.startswith('ping - '):
|
| 677 |
# Handle ping messages directly
|
| 678 |
timestamp = line.split('ping - ')[-1]
|
|
@@ -682,29 +630,8 @@ def get_streaming_callback(text_placeholder, tool_placeholder):
|
|
| 682 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 683 |
st.markdown("".join(accumulated_tool))
|
| 684 |
elif line and not line.startswith(':'):
|
| 685 |
-
# Other non-empty lines
|
| 686 |
-
|
| 687 |
-
timestamp = time.strftime("%H:%M:%S")
|
| 688 |
-
|
| 689 |
-
# Check if this line contains any meaningful data
|
| 690 |
-
if line.strip() and len(line.strip()) > 1:
|
| 691 |
-
# Try to detect if it's JSON-like content
|
| 692 |
-
if line.strip().startswith('{') or line.strip().startswith('['):
|
| 693 |
-
try:
|
| 694 |
-
# Try to parse as JSON for better formatting
|
| 695 |
-
import json
|
| 696 |
-
parsed_json = json.loads(line.strip())
|
| 697 |
-
accumulated_tool.append(f"\nπ‘ **JSON Data** [{timestamp}]:\n```json\n{json.dumps(parsed_json, indent=2)}\n```\n")
|
| 698 |
-
except:
|
| 699 |
-
# If not valid JSON, show as regular data
|
| 700 |
-
accumulated_tool.append(f"\nπ‘ **Data** [{timestamp}]: {line.strip()}\n")
|
| 701 |
-
else:
|
| 702 |
-
# Regular text data
|
| 703 |
-
accumulated_tool.append(f"\nπ **Info** [{timestamp}]: {line.strip()}\n")
|
| 704 |
-
|
| 705 |
-
# Immediate real-time UI update for any captured data
|
| 706 |
-
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 707 |
-
st.markdown("".join(accumulated_tool))
|
| 708 |
else:
|
| 709 |
# Regular tool response content
|
| 710 |
accumulated_tool.append(
|
|
|
|
| 301 |
if not hasattr(callback_func, '_data_counter'):
|
| 302 |
callback_func._data_counter = 0
|
| 303 |
|
| 304 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
| 305 |
|
| 306 |
|
| 307 |
|
|
|
|
| 469 |
accumulated_tool.append(f"\nπ **Task Started**: {content}\n")
|
| 470 |
# Real-time UI update for task start
|
| 471 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
|
|
|
|
|
|
|
|
|
| 472 |
st.markdown("".join(accumulated_tool))
|
| 473 |
elif "```bdd-long-task-end" in content:
|
| 474 |
# Extract task info
|
|
|
|
| 483 |
accumulated_tool.append(f"\nβ
**Task Completed**: {content}\n")
|
| 484 |
# Real-time UI update for task completion
|
| 485 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
|
|
|
|
|
|
|
|
|
| 486 |
st.markdown("".join(accumulated_tool))
|
| 487 |
elif "```bdd-resource-lookup" in content:
|
| 488 |
# Extract resource info
|
|
|
|
| 504 |
accumulated_tool.append(f"\nπ **Resources**: {content}\n")
|
| 505 |
# Real-time UI update for resources
|
| 506 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
|
|
|
|
|
|
|
|
|
| 507 |
st.markdown("".join(accumulated_tool))
|
| 508 |
elif "```bdd-chat-agent-task" in content:
|
| 509 |
# Extract chat agent task info
|
|
|
|
| 576 |
timestamp = time.strftime("%H:%M:%S")
|
| 577 |
|
| 578 |
# Format the data for display
|
|
|
|
| 579 |
if isinstance(data_content, str):
|
| 580 |
+
accumulated_tool.append(f"\nπ‘ **Data [{data_type}]** [{timestamp}]: {data_content}\n")
|
| 581 |
else:
|
| 582 |
+
accumulated_tool.append(f"\nπ‘ **Data [{data_type}]** [{timestamp}]:\n```json\n{json.dumps(data_obj, indent=2)}\n```\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 583 |
|
| 584 |
# Immediate real-time UI update for any data: message
|
| 585 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 586 |
st.markdown("".join(accumulated_tool))
|
| 587 |
else:
|
| 588 |
# Handle non-dict data objects
|
| 589 |
import time
|
| 590 |
timestamp = time.strftime("%H:%M:%S")
|
| 591 |
+
accumulated_tool.append(f"\nπ‘ **Raw Data** [{timestamp}]:\n```json\n{json_str}\n```\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 592 |
|
| 593 |
# Immediate real-time UI update
|
| 594 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 595 |
st.markdown("".join(accumulated_tool))
|
| 596 |
except json.JSONDecodeError:
|
| 597 |
# If not valid JSON, check if it's streaming text content
|
|
|
|
| 616 |
# Real-time UI update
|
| 617 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 618 |
st.markdown("".join(accumulated_tool))
|
| 619 |
+
|
| 620 |
+
except Exception:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 621 |
# Fallback: treat as plain text, but only if it's meaningful
|
|
|
|
|
|
|
| 622 |
if line.strip() and len(line.strip()) > 1: # Only show non-trivial content
|
| 623 |
+
accumulated_tool.append(f"\nπ **Info**: {line.strip()}\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 624 |
elif line.startswith('ping - '):
|
| 625 |
# Handle ping messages directly
|
| 626 |
timestamp = line.split('ping - ')[-1]
|
|
|
|
| 630 |
with tool_placeholder.expander("π§ Tool Call Information", expanded=True):
|
| 631 |
st.markdown("".join(accumulated_tool))
|
| 632 |
elif line and not line.startswith(':'):
|
| 633 |
+
# Other non-empty lines
|
| 634 |
+
accumulated_tool.append(f"\nπ **Info**: {line.strip()}\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 635 |
else:
|
| 636 |
# Regular tool response content
|
| 637 |
accumulated_tool.append(
|
config.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
| 8 |
},
|
| 9 |
"qa": {
|
| 10 |
"transport": "sse",
|
| 11 |
-
"url": "http://10.15.56.148:
|
| 12 |
},
|
| 13 |
"review_generate": {
|
| 14 |
"transport": "sse",
|
|
|
|
| 8 |
},
|
| 9 |
"qa": {
|
| 10 |
"transport": "sse",
|
| 11 |
+
"url": "http://10.15.56.148:9230/sse"
|
| 12 |
},
|
| 13 |
"review_generate": {
|
| 14 |
"transport": "sse",
|
runtime.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
python: 3.12
|