Spaces:
Running
on
Zero
Running
on
Zero
Commit
·
9006816
1
Parent(s):
7279d70
update
Browse files
app.py
CHANGED
@@ -19,7 +19,7 @@ from examples import run_example_1, run_example_2, run_example_3, run_example_4,
|
|
19 |
from functools import partial
|
20 |
|
21 |
# Load original app constants
|
22 |
-
APP_TITLE = '<div class="app-title"><span class="brand">AttnTrace</span><span class="subtitle">Attention-based Context Traceback for Long-Context LLMs</span></div>'
|
23 |
APP_DESCRIPTION = """AttnTrace traces a model's generated statements back to specific parts of the context using attention-based traceback. Try it out with Meta-Llama-3.1-8B-Instruct here! See the [[paper](https://arxiv.org/abs/2506.04202)] and [[code](https://github.com/Wang-Yanting/TracLLM-Kit)] for more!
|
24 |
Maintained by the AttnTrace team."""
|
25 |
# NEW_TEXT = """Long-context large language models (LLMs), such as Gemini-2.5-Pro and Claude-Sonnet-4, are increasingly used to empower advanced AI systems, including retrieval-augmented generation (RAG) pipelines and autonomous agents. In these systems, an LLM receives an instruction along with a context—often consisting of texts retrieved from a knowledge database or memory—and generates a response that is contextually grounded by following the instruction. Recent studies have designed solutions to trace back to a subset of texts in the context that contributes most to the response generated by the LLM. These solutions have numerous real-world applications, including performing post-attack forensic analysis and improving the interpretability and trustworthiness of LLM outputs. While significant efforts have been made, state-of-the-art solutions such as TracLLM often lead to a high computation cost, e.g., it takes TracLLM hundreds of seconds to perform traceback for a single response-context pair. In this work, we propose {\name}, a new context traceback method based on the attention weights produced by an LLM for a prompt. To effectively utilize attention weights, we introduce two techniques designed to enhance the effectiveness of {\name}, and we provide theoretical insights for our design choice. %Moreover, we perform both theoretical analysis and empirical evaluation to demonstrate their effectiveness.
|
@@ -839,153 +839,7 @@ def load_custom_css():
|
|
839 |
return css_content
|
840 |
except FileNotFoundError:
|
841 |
print("Warning: CSS file not found, using minimal CSS")
|
842 |
-
return ""
|
843 |
-
/* Add global page margins */
|
844 |
-
.gradio-container {
|
845 |
-
padding-left: 12rem !important;
|
846 |
-
padding-right: 12rem !important;
|
847 |
-
}
|
848 |
-
|
849 |
-
/* App title styling */
|
850 |
-
.app-title {
|
851 |
-
text-align: center !important;
|
852 |
-
margin: 2rem 0 !important;
|
853 |
-
}
|
854 |
-
|
855 |
-
.app-title .brand {
|
856 |
-
color: #333333 !important;
|
857 |
-
font-weight: 700 !important;
|
858 |
-
font-size: 3rem !important;
|
859 |
-
margin-right: 12px !important;
|
860 |
-
}
|
861 |
-
|
862 |
-
.app-title .subtitle {
|
863 |
-
color: #666666 !important;
|
864 |
-
font-weight: 400 !important;
|
865 |
-
font-size: 1.6rem !important;
|
866 |
-
display: block !important;
|
867 |
-
margin-top: 12px !important;
|
868 |
-
}
|
869 |
-
|
870 |
-
/* App description styling */
|
871 |
-
.app-description p {
|
872 |
-
font-size: 1.25rem !important;
|
873 |
-
color: #555555 !important;
|
874 |
-
line-height: 1.6 !important;
|
875 |
-
}
|
876 |
-
|
877 |
-
/* Feature highlights */
|
878 |
-
.feature-highlights {
|
879 |
-
font-size: 1.1rem !important;
|
880 |
-
color: #444444 !important;
|
881 |
-
line-height: 1.5 !important;
|
882 |
-
}
|
883 |
-
|
884 |
-
/* Example title */
|
885 |
-
.example-title {
|
886 |
-
text-align: center !important;
|
887 |
-
margin: 2rem 0 1rem 0 !important;
|
888 |
-
font-size: 1.5rem !important;
|
889 |
-
font-weight: 600 !important;
|
890 |
-
color: #333333 !important;
|
891 |
-
}
|
892 |
-
|
893 |
-
/* Example button container */
|
894 |
-
.example-button-container {
|
895 |
-
display: flex !important;
|
896 |
-
justify-content: center !important;
|
897 |
-
align-items: center !important;
|
898 |
-
gap: 1rem !important;
|
899 |
-
margin: 1rem 0 !important;
|
900 |
-
flex-wrap: wrap !important;
|
901 |
-
}
|
902 |
-
|
903 |
-
/* Example buttons */
|
904 |
-
.example-button button {
|
905 |
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
|
906 |
-
color: white !important;
|
907 |
-
border: none !important;
|
908 |
-
border-radius: 10px !important;
|
909 |
-
padding: 12px 20px !important;
|
910 |
-
font-size: 0.9rem !important;
|
911 |
-
font-weight: 600 !important;
|
912 |
-
cursor: pointer !important;
|
913 |
-
transition: all 0.3s ease !important;
|
914 |
-
box-shadow: 0 4px 15px rgba(0,0,0,0.1) !important;
|
915 |
-
min-width: 200px !important;
|
916 |
-
text-align: center !important;
|
917 |
-
}
|
918 |
-
|
919 |
-
.example-button button:hover {
|
920 |
-
transform: translateY(-2px) !important;
|
921 |
-
box-shadow: 0 6px 20px rgba(0,0,0,0.15) !important;
|
922 |
-
}
|
923 |
-
|
924 |
-
/* Color legend classes */
|
925 |
-
.color-red {
|
926 |
-
background-color: #FF4444 !important;
|
927 |
-
color: black !important;
|
928 |
-
padding: 2px 6px !important;
|
929 |
-
border-radius: 4px !important;
|
930 |
-
font-weight: 600 !important;
|
931 |
-
}
|
932 |
-
|
933 |
-
.color-orange {
|
934 |
-
background-color: #FF8C42 !important;
|
935 |
-
color: black !important;
|
936 |
-
padding: 2px 6px !important;
|
937 |
-
border-radius: 4px !important;
|
938 |
-
font-weight: 600 !important;
|
939 |
-
}
|
940 |
-
|
941 |
-
.color-golden {
|
942 |
-
background-color: #FFD93D !important;
|
943 |
-
color: black !important;
|
944 |
-
padding: 2px 6px !important;
|
945 |
-
border-radius: 4px !important;
|
946 |
-
font-weight: 600 !important;
|
947 |
-
}
|
948 |
-
|
949 |
-
.color-yellow {
|
950 |
-
background-color: #FFF280 !important;
|
951 |
-
color: black !important;
|
952 |
-
padding: 2px 6px !important;
|
953 |
-
border-radius: 4px !important;
|
954 |
-
font-weight: 600 !important;
|
955 |
-
}
|
956 |
-
|
957 |
-
.color-light {
|
958 |
-
background-color: #FFF9C4 !important;
|
959 |
-
color: black !important;
|
960 |
-
padding: 2px 6px !important;
|
961 |
-
border-radius: 4px !important;
|
962 |
-
font-weight: 600 !important;
|
963 |
-
}
|
964 |
-
|
965 |
-
/* Responsive design */
|
966 |
-
@media (max-width: 768px) {
|
967 |
-
.gradio-container {
|
968 |
-
padding-left: 1rem !important;
|
969 |
-
padding-right: 1rem !important;
|
970 |
-
}
|
971 |
-
|
972 |
-
.app-title .brand {
|
973 |
-
font-size: 2rem !important;
|
974 |
-
}
|
975 |
-
|
976 |
-
.app-title .subtitle {
|
977 |
-
font-size: 1.2rem !important;
|
978 |
-
}
|
979 |
-
|
980 |
-
.example-button-container {
|
981 |
-
flex-direction: column !important;
|
982 |
-
}
|
983 |
-
|
984 |
-
.example-button button {
|
985 |
-
min-width: 100% !important;
|
986 |
-
}
|
987 |
-
}
|
988 |
-
"""
|
989 |
except Exception as e:
|
990 |
print(f"Error loading CSS: {e}")
|
991 |
return ""
|
@@ -1087,7 +941,7 @@ with gr.Blocks(theme=theme, css=custom_css) as demo:
|
|
1087 |
)
|
1088 |
|
1089 |
gr.Markdown(
|
1090 |
-
'**Color Legend for Context Traceback (by ranking):** <span
|
1091 |
)
|
1092 |
|
1093 |
|
|
|
19 |
from functools import partial
|
20 |
|
21 |
# Load original app constants
|
22 |
+
APP_TITLE = '<div class="app-title"><span class="brand">AttnTrace: </span><span class="subtitle">Attention-based Context Traceback for Long-Context LLMs</span></div>'
|
23 |
APP_DESCRIPTION = """AttnTrace traces a model's generated statements back to specific parts of the context using attention-based traceback. Try it out with Meta-Llama-3.1-8B-Instruct here! See the [[paper](https://arxiv.org/abs/2506.04202)] and [[code](https://github.com/Wang-Yanting/TracLLM-Kit)] for more!
|
24 |
Maintained by the AttnTrace team."""
|
25 |
# NEW_TEXT = """Long-context large language models (LLMs), such as Gemini-2.5-Pro and Claude-Sonnet-4, are increasingly used to empower advanced AI systems, including retrieval-augmented generation (RAG) pipelines and autonomous agents. In these systems, an LLM receives an instruction along with a context—often consisting of texts retrieved from a knowledge database or memory—and generates a response that is contextually grounded by following the instruction. Recent studies have designed solutions to trace back to a subset of texts in the context that contributes most to the response generated by the LLM. These solutions have numerous real-world applications, including performing post-attack forensic analysis and improving the interpretability and trustworthiness of LLM outputs. While significant efforts have been made, state-of-the-art solutions such as TracLLM often lead to a high computation cost, e.g., it takes TracLLM hundreds of seconds to perform traceback for a single response-context pair. In this work, we propose {\name}, a new context traceback method based on the attention weights produced by an LLM for a prompt. To effectively utilize attention weights, we introduce two techniques designed to enhance the effectiveness of {\name}, and we provide theoretical insights for our design choice. %Moreover, we perform both theoretical analysis and empirical evaluation to demonstrate their effectiveness.
|
|
|
839 |
return css_content
|
840 |
except FileNotFoundError:
|
841 |
print("Warning: CSS file not found, using minimal CSS")
|
842 |
+
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
843 |
except Exception as e:
|
844 |
print(f"Error loading CSS: {e}")
|
845 |
return ""
|
|
|
941 |
)
|
942 |
|
943 |
gr.Markdown(
|
944 |
+
'**Color Legend for Context Traceback (by ranking):** <span style="background-color: #FF4444; color: black; padding: 2px 6px; border-radius: 4px; font-weight: 600;">Red</span> = 1st (most important) | <span style="background-color: #FF8C42; color: black; padding: 2px 6px; border-radius: 4px; font-weight: 600;">Orange</span> = 2nd | <span style="background-color: #FFD93D; color: black; padding: 2px 6px; border-radius: 4px; font-weight: 600;">Golden</span> = 3rd | <span style="background-color: #FFF280; color: black; padding: 2px 6px; border-radius: 4px; font-weight: 600;">Yellow</span> = 4th-5th | <span style="background-color: #FFF9C4; color: black; padding: 2px 6px; border-radius: 4px; font-weight: 600;">Light</span> = 6th+'
|
945 |
)
|
946 |
|
947 |
|