Download prep_responses.py from trystine/Tell_Me: direct link, hf CLI and curl.
- Browser
- Download file 3.29 kB
-
https://huggingface.co/spaces/trystine/Tell_Me/resolve/main/prep_responses.py
- Command line
-
hf download hf://spaces/trystine/Tell_Me/prep_responses.py
-
curl -L -o prep_responses.py https://huggingface.co/spaces/trystine/Tell_Me/resolve/main/prep_responses.py
3.29 kB
| import os | |
| from dataclasses import dataclass | |
| from typing import Dict, List | |
| class Example: | |
| user_prompt: str | |
| answers_by_model: Dict[str, str] | |
| def load_model_responses(base_dir: str) -> List[Example]: | |
| model_dirs = [d for d in os.listdir(base_dir) if os.path.isdir(os.path.join(base_dir, d))] | |
| prompt_data = {} | |
| for model_name in model_dirs: | |
| model_path = os.path.join(base_dir, model_name) | |
| for fname in sorted(os.listdir(model_path)): | |
| if not fname.endswith(".txt"): | |
| continue | |
| prompt_idx = int(fname.replace("Prompt", "").replace(".txt", "")) | |
| fpath = os.path.join(model_path, fname) | |
| with open(fpath, "r", encoding="utf-8") as f: | |
| lines = [line.strip() for line in f if line.strip()] | |
| with open(fpath, "r", encoding="utf-8") as f: | |
| text = f.read() | |
| turns = [] | |
| current_speaker, buffer = None, [] | |
| for line in text.splitlines(): | |
| if line.startswith("User: "): | |
| if current_speaker and buffer: | |
| turns.append((current_speaker, "\n".join(buffer).strip())) | |
| current_speaker = "User" | |
| buffer = [line.replace("User: ", "", 1).strip()] | |
| elif line.startswith("Bot: "): | |
| if current_speaker and buffer: | |
| turns.append((current_speaker, "\n".join(buffer).strip())) | |
| current_speaker = "Bot" | |
| buffer = [line.replace("Bot: ", "", 1).strip()] | |
| else: | |
| if current_speaker: | |
| buffer.append(line.strip()) | |
| if current_speaker and buffer: | |
| turns.append((current_speaker, "\n".join(buffer).strip())) | |
| if len(turns) < 4: | |
| print(f"⚠️ Skipping {fpath} (not enough exchanges)") | |
| continue | |
| user_prompt = turns[2][1] | |
| bot_answer = turns[3][1] | |
| if prompt_idx not in prompt_data: | |
| prompt_data[prompt_idx] = {"user_prompt": user_prompt, "answers_by_model": {}} | |
| prompt_data[prompt_idx]["answers_by_model"][model_name] = bot_answer | |
| examples = [ | |
| Example(user_prompt=data["user_prompt"], answers_by_model=data["answers_by_model"]) | |
| for _, data in sorted(prompt_data.items()) | |
| ] | |
| return examples | |
| def save_examples_to_txt(examples: List[Example], out_file: str): | |
| with open(out_file, "w", encoding="utf-8") as f: | |
| for i, ex in enumerate(examples, start=1): | |
| f.write(f"Prompt {i}: {ex.user_prompt}\n") | |
| for model, ans in ex.answers_by_model.items(): | |
| f.write(f" {model}: {ans}\n") | |
| f.write("\n" + "-"*60 + "\n\n") | |
| print(f"✅ Saved final answers to {out_file}") | |
| if __name__ == "__main__": | |
| base_dir = "Results/with_rag/" # path to your folder | |
| examples = load_model_responses(base_dir) | |
| save_examples_to_txt(examples, "Results/final_answers.txt") | |
| # for ex in examples[:2]: | |
| # print("USER PROMPT:", ex.user_prompt) | |
| # for model, ans in ex.answers_by_model.items(): | |
| # print(f" {model}: {ans}") | |
| # print("-" * 40) | |