Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from crewai.tasks.task_output import TaskOutput | |
| def streamlit_callback(step_output:TaskOutput): | |
| st.markdown("---") | |
| for step in step_output: | |
| if isinstance(step, tuple) and len(step) == 2: | |
| action, observation = step | |
| # Display action information | |
| if isinstance(action, dict) and all(key in action for key in ["tool", "tool_input", "log"]): | |
| st.markdown(f"**Tool:** {action['tool']}") | |
| st.markdown(f"**Tool Input:** {action['tool_input']}") | |
| st.markdown(f"**Log:** {action['log']}") | |
| if "Action" in action: | |
| st.markdown(f"# 📝 Processing Action...") | |
| st.markdown(f"**Action:** {action['Action']}") | |
| st.markdown(f"**Action Input:** ```json\n{action['tool_input']}\n```") | |
| elif isinstance(action, str): | |
| if action != 'log': | |
| continue | |
| st.markdown(f"# Action Result...") | |
| st.markdown(f"**Action:** {action}") | |
| else: | |
| st.markdown(f"**Action:** {str(action)}") | |
| # Display observation information | |
| st.markdown(f"**Thought**") | |
| if isinstance(observation, str): | |
| observation_lines = observation.split('\n') | |
| for line in observation_lines: | |
| if line.startswith('Title: '): | |
| st.markdown(f"**Title:** {line[7:]}") | |
| elif line.startswith('Link: '): | |
| st.markdown(f"**Link:** {line[6:]}") | |
| elif line.startswith('Snippet: '): | |
| st.markdown(f"**Snippet:** {line[9:]}") | |
| elif line.startswith('-'): | |
| st.markdown(line) | |
| else: | |
| st.markdown(line) | |
| else: | |
| st.markdown(str(observation)) | |
| else: | |
| st.markdown(step) |