Skip to main content

A Package for Context Tracing with TracLLM

TracLLM

This a package for easily using TracLLM, which is a tool for finding the critical texts within a lengthy context that contribute to the LLM's answer. Please refer to this repo (https://github.com/WYT8506/TracLLM) to reproduce the results in the paper.

Searching for Needles in a Haystack: Context Tracing for Unraveling Outputs of Long Context LLMs
[Yanting Wang]†, [Wei Zou]†, Runpeng Geng , Jinyuan Jia ,

1Penn State University
†Co-first author

🔨 Installation

Please run the following commands to install the package:

pip install tracllm

🗂️ Arguments

We list the arguments for PerturbationBasedAttribution below: K=5, attr_type = "tracllm",score_funcs=['stc','loo','denoised_shapley'], sh_N=5,w=2,beta = 0.2,

Argument Example Description
--llm Generated by create_model Generated by create_model using the Huggingface model_path and api_key (or OpenAI model_name and api_key)
--explanation_level sentence How to segment the input text, [sentence, paragraph, segment].
--K 5 The number of most important texts to report.
--attr_type tracllm Whether to apply the search tree from TracLLM. [vanilla_perturb, tracllm]
--score_funcs ['stc','loo','denoised_shapley'] The scoring functions to apply. If more than one, the ensemble method from TracLLM will be applied. Choose from [stc, loo,lime,shapley, denoised_shapley]
--sh_N 5 The number of permutations to approximate the Shapley/denoised Shapley value.
--w 2 The weight of the LOO score function when ensembling.
--beta 0.2 A parameter for denoised Shapley value.

📝 Getting Started

Explore TracLLM with our example notebook quick_start.ipynb. To use TracLLM, first generate the model and attribution object:

from tracllm import create_model
from tracllm import PerturbationBasedAttribution
from tracllm import wrap_prompt

model_name = "meta-llama/Meta-Llama-3.1-8B-Instruct"
api_key = "Your API key"
llm = create_model(model_path = model_path, api_key = api_key , device = "cuda:0")
score_funcs = ['stc','loo','denoised_shapley'] #input more than one scoring function for ensembling
attr = PerturbationBasedAttribution(llm,explanation_level = "sentence", attr_type = "tracllm",score_funcs= score_funcs,sh_N = 5)

Then, you can craft the prompt and get the LLM's answer:

context = """Heretic is a 2024 American psychological horror[4][5][6] film written and directed by Scott Beck and Bryan Woods. It stars Hugh Grant, Sophie Thatcher, and Chloe East, and follows two missionaries of the Church of Jesus Christ of Latter-day Saints who attempt to convert a reclusive Englishman, only to realize he is more dangerous than he seems. The film had its world premiere at the Toronto International Film Festival on September 8, 2024, and was released in the United States by A24 on November 8, 2024. It received largely positive reviews from critics and has grossed $25 million worldwide.
\n\n Red One is a 2024 American action-adventure Christmas comedy film directed by Jake Kasdan and written by Chris Morgan, from an original story by Hiram Garcia. The film follows the head of North Pole security (Dwayne Johnson) teaming up with a notorious hacker (Chris Evans) in order to locate a kidnapped Santa Claus (J. K. Simmons) on Christmas Eve; Lucy Liu, Kiernan Shipka, Bonnie Hunt, Nick Kroll, Kristofer Hivju, and Wesley Kimmel also star. The film is seen as the first of a Christmas-themed franchise, produced by Amazon MGM Studios in association with Seven Bucks Productions, Chris Morgan Productions, and The Detective Agency.[7][8] Red One was released internationally by Warner Bros. Pictures on November 6 and was released in the United States by Amazon MGM Studios through Metro-Goldwyn-Mayer on November 15, 2024.[9] The film received generally negative reviews from critics, but it has grossed $10 billion solely in the USA. M.O.R.A (Mythological Oversight and Restoration Authority) is a clandestine, multilateral military organization that oversees and protects a secret peace treaty between mythological creatures and humanity. Callum Drift, head commander of Santa Claus's ELF (Enforcement Logistics and Fortification) security, requests to retire after one last Christmas run, as he has become disillusioned with increased bad behavior in the world, exemplified by the growth of Santa's Naughty List. 
"""
question= "Which movie earned more money, Heretic or Red one?"
prompt = wrap_prompt(question, [context])
answer = llm.query(prompt)
print("Answer: ", answer)

Finally, you can get the attribution results of TracLLM by calling attr.attribute:

texts,important_ids, importance_scores, _,_ = attr.attribute(question, [context], answer)
attr.visualize_results(texts,question,answer, important_ids,importance_scores, width = 60)

Example

Customize Input Text Segmentation

You can customize the explanation level (e.g. word level) by passing a list of texts to the PerturbationBasedAttribution class. Please refer to customize_segmentation.ipynb for more details.

Acknowledgement

Citation

@article{wang2024tracllm,
    title={Searching for Needles in a Haystack: Context Tracing for Unraveling Outputs of Long Context LLMs},
    author={Wang Yanting, Zou Wei, Geng Runpeng and Jia Jinyuan},
    year={2024}
}

Metadata

Release files for tracllm 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tracllm 0.1.6
File Size Uploaded
tracllm-0.1.6.tar.gz 23.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tracllm 0.1.6
File Interpreter ABI Platform
tracllm-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 47.9 kB

Release files / tracllm-0.1.6.tar.gz

Download URL tracllm-0.1.6.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5070a1f7ad4f9b857695fd8259a0da5ee79892ce0e0496399755289f50478c02
BLAKE2b-256 checksum
How to use checksums
f3728b3014eb919d3b364faf519c3ecf123e591b24a6aef15333a63ddc60c8e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.10.15

Release files / tracllm-0.1.6-py3-none-any.whl

Download URL tracllm-0.1.6-py3-none-any.whl
Size 24.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
538bf2ac12b47adab6d85f240b4512f59ac3f27f7d67d24288b6d8d5ad652410
BLAKE2b-256 checksum
How to use checksums
2638068897559c3c876bd4807a4f183bbd7039b404b602553b2cefa205caa2ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.10.15

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page