diff --git a/examples/dataframe_usage/1_secure_chat.py b/examples/dataframe_usage/1_secure_chat.py index b46526e..7e09b72 100644 --- a/examples/dataframe_usage/1_secure_chat.py +++ b/examples/dataframe_usage/1_secure_chat.py @@ -6,12 +6,12 @@ sample_messages = [ - "Hey, I need help planning my 3-month Europe trip. I'll be visiting France, Italy, and Germany.", - "My budget is around $7,200. I'm trying to keep track of flight costs, hotels, and food.", - "Also here is my email just in case: personal.email@example.com", - "I'm thinking of booking a multi-city flight. Found one for $1240 on Lufthansa.", - "Here's a chunk of my notes: " + "lorem ipsum " * 400, # intentionally long - "My passport number is X12345678. Please remind me to renew it.", + "Hey, I need help planning my 3-month Europe trip. I'll be visiting France, Italy, and Germany. What else information should I give to you?", + "My budget is around $7,200. I'm trying to keep track of flight costs, hotels, and food. Do you need any contact information?", + "Here is my email just in case: personal.email@example.com. What are the options I have for the flight?", + "I'm thinking of booking a multi-city flight. Found one for $1240 on Lufthansa. Do you need more information?", + "OK! Here's a chunk of my notes: " + "lorem ipsum " * 400 + "\n\nCan you book it for me if I give you my information?", # intentionally long + "My passport number is X12345678. Please remind me to renew it, it's a bit old. Should we start the daily plan of the trip?", "Can you help me create a daily itinerary for France first?", ] @@ -41,4 +41,4 @@ session.add_message(r) df = session.to_dataframe() -df.to_pickle('2_session_df.pkl') +df.to_csv('2_session_df.csv') diff --git a/examples/dataframe_usage/2_session_df.csv b/examples/dataframe_usage/2_session_df.csv new file mode 100644 index 0000000..a4fea8e --- /dev/null +++ b/examples/dataframe_usage/2_session_df.csv @@ -0,0 +1,182 @@ +,metadata,status,type,message,role,id,date_created,date_modified +0,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,You are a helpful assistant. Provide concise and accurate answers.,system,0414c4a4-f1d4-467c-9834-7fee263bc899,2025-12-18 00:41:08 +0000,2025-12-18 00:41:08 +0000 +1,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,"Hey, I need help planning my 3-month Europe trip. I'll be visiting France, Italy, and Germany. What else information should I give to you?",user,b0ede6de-8547-40b6-a8f1-5a4ff391415a,2025-12-18 00:41:08 +0000,2025-12-18 00:41:08 +0000 +2,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"To help you plan effectively, please provide: + +1. **Budget** (per day or total) +2. **Travel dates** (or flexibility) +3. **Interests** (history, food, nature, nightlife, etc.) +4. **Pace** (fast-paced vs. relaxed) +5. **Accommodation preference** (hostels, hotels, Airbnb) +6. **Must-see places** (if any) +7. **Transport preference** (trains, flights, buses, rental car) +8. **Any specific questions** (visas, packing, etc.)",assistant,eb2690ac-0e88-4447-a6ea-257cf2353a9d,2025-12-18 00:41:07 +0000,2025-12-18 00:41:11 +0000 +3,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,"My budget is around $7,200. I'm trying to keep track of flight costs, hotels, and food. Do you need any contact information?",user,4372c31d-5705-4046-addf-c2dbfab08c27,2025-12-18 00:41:11 +0000,2025-12-18 00:41:11 +0000 +4,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"No contact info needed. Here’s a **budget breakdown** for your 3-month trip (90 days) in **France, Italy, and Germany** (~$7,200 total): + +### **Estimated Costs (Per Day)** +| Category | Budget (USD) | Notes | +|----------------|-------------|----------------------------------------| +| **Accommodation** | $30–$60 | Hostels ($30–$40), budget hotels ($50–$60) | +| **Food** | $20–$40 | Street food ($10–$15), casual meals ($15–$25) | +| **Transport** | $15–$30 | Trains (book in advance), buses, metro | +| **Activities** | $10–$20 | Museums, tours, etc. | +| **Misc.** | $10–$20 | SIM card, souvenirs, etc. | + +### **Total Estimates** +- **Low-end (hostels, minimal spending):** ~$75/day → **$6,750** (90 days) +- **Mid-range (budget hotels, some splurges):** ~$100/day → **$9,000** (over budget) + +### **Tips to Stay Under $7,200** +1. **Flights:** Book early (use Skyscanner/Kayak). Intra-Europe flights can be cheap (~$50–$100). +2. **Accommodation:** Prioritize hostels or Airbnb (weekly discounts). +3. **Food:** Cook sometimes (hostel kitchens) or eat street food. +4. **Transport:** Use **Eurail Pass** (if taking many trains) or budget buses (FlixBus). +5. **Activities:** Free walking tours, city passes, and student discounts. + +Would you like help with an **itinerary** or **specific city budgets**?",assistant,a1f14a1d-580a-4f58-a874-e98c1a16c052,2025-12-18 00:41:07 +0000,2025-12-18 00:41:20 +0000 +5,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,Here is my email just in case: personal.email@example.com. What are the options I have for the flight?,user,4a6cfc72-78de-4cf8-9f08-6eb493e682e9,2025-12-18 00:41:20 +0000,2025-12-18 00:41:20 +0000 +6,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"Got it—thanks for sharing your email (I won’t store it). Here are your **flight options** for a **3-month Europe trip** (France, Italy, Germany), balancing cost and convenience: + +--- + +### **1. Round-Trip from U.S./Canada (Cheapest)** +- **Route:** Fly into **Paris (CDG/ORY)**, out of **Rome (FCO) or Berlin (BER)** (or vice versa). +- **Cost:** $600–$1,200 (book 3–6 months early). +- **Airlines:** Air France, Lufthansa, TAP Portugal, or budget carriers (Norwegian, Play). +- **Tip:** Use **Google Flights** (explore dates) or **Skyscanner** (whole month view). + +--- + +### **2. Multi-City (Open-Jaw) Ticket (Flexible)** +- **Route:** Fly into **Paris**, out of **Rome** (or **Munich/Berlin**). +- **Cost:** $800–$1,500 (similar to round-trip if booked smartly). +- **Best for:** Avoiding backtracking (e.g., Paris → Italy → Germany → fly home). + +--- + +### **3. Budget Airlines for Intra-Europe Flights** +- **Options:** Ryanair, EasyJet, Wizz Air, Vueling. +- **Cost:** $30–$100 per leg (e.g., Paris → Rome, Berlin → Paris). +- **Watch for:** Baggage fees, remote airports (e.g., Beauvais for Paris). + +--- + +### **4. Eurail Pass (If Taking Many Trains)** +- **Cost:** ~$600–$1,200 (3-month Global Pass). +- **Best for:** Scenic routes (e.g., Paris → Venice → Munich). +- **Tip:** Compare with **point-to-point tickets** (sometimes cheaper). + +--- + +### **Next Steps** +1. **Check Google Flights** for your departure city. +2. **Decide entry/exit cities** (e.g., Paris in, Rome out). +3. **Book 3–6 months early** for best prices. + +Want me to suggest specific flight routes based on your home airport? Or help compare train vs. flight costs?",assistant,75620de9-5d2d-4132-a4a8-54d768e6919a,2025-12-18 00:41:07 +0000,2025-12-18 00:41:29 +0000 +7,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,I'm thinking of booking a multi-city flight. Found one for $1240 on Lufthansa. Do you need more information?,user,9a917a34-9a9b-42f8-8be4-ec5211f42c7d,2025-12-18 00:41:29 +0000,2025-12-18 00:41:29 +0000 +8,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"That’s a **solid price** for a multi-city flight on Lufthansa! To confirm it’s a good deal, share: + +1. **Route** (e.g., NYC → Paris / Rome → NYC) +2. **Dates** (flexible or fixed?) +3. **Cabin class** (economy/premium?) + +### **Quick Check:** +- **Good deal?** Yes, if it’s **economy** and includes checked bags. +- **Better options?** Compare on **Google Flights** (enable ""multi-city"" search) or **Skyscanner**. + +If you’re happy with the price, **book soon**—Lufthansa prices can rise. Want help finding alternatives?",assistant,1cd42107-63f0-4cc9-9994-e5ee75fdf77c,2025-12-18 00:41:07 +0000,2025-12-18 00:41:32 +0000 +9,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,"OK! Here's a chunk of my notes: lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum + +Can you book it for me if I give you my information?",user,16f3a13b-b86a-4e71-886e-57533fdff9cc,2025-12-18 00:41:32 +0000,2025-12-18 00:41:32 +0000 +10,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"**Short answer:** No, I can’t book flights for you (I’m an AI assistant without payment tools or access to booking systems). + +### **What I *can* do:** +1. **Double-check your deal** – Share the exact route/dates, and I’ll compare it to current prices. +2. **Suggest booking tips** – How to avoid fees, get seat upgrades, etc. +3. **Help with next steps** – Itinerary planning, train vs. flight comparisons, etc. + +### **How to Book:** +- Use the airline’s website (Lufthansa.com) or a trusted OTA like **Google Flights** or **Kayak**. +- **Never share credit card details** with anyone (including me). + +Want me to analyze your flight details further? Just share the route/dates!",assistant,e8cb5907-8f38-465c-af69-c8dec55818d4,2025-12-18 00:41:07 +0000,2025-12-18 00:41:36 +0000 +11,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,"My passport number is X12345678. Please remind me to renew it, it's a bit old. Should we start the daily plan of the trip?",user,23e1b059-1cbd-4652-981e-a3928cab4c5c,2025-12-18 00:41:36 +0000,2025-12-18 00:41:36 +0000 +12,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"**⚠️ Important:** +- **Never share your passport number** (even in fake examples—scammers can exploit patterns). +- **Renew ASAP** if it expires within 6 months of your trip (many countries require 3+ months validity). + +--- + +### **Next Steps for Your Trip Plan** +**Yes! Let’s start the daily itinerary.** To tailor it, answer: +1. **Start/end cities** (e.g., Paris → Rome → Berlin → fly home?) +2. **Pace** (e.g., 3–4 days per city vs. slow travel) +3. **Priorities** (e.g., museums, hiking, nightlife, food) +4. **Must-sees** (e.g., Eiffel Tower, Colosseum, Neuschwanstein Castle) + +**Example starter plan:** +- **Week 1:** Paris (4 days) → Lyon (2 days) → Nice (3 days) +- **Week 2:** Milan (2 days) → Venice (3 days) → Florence (3 days) +- **Week 3:** Rome (5 days) → Naples/Pompeii (2 days) +- **Week 4+:** Munich (3 days) → Berlin (4 days) → Hamburg (2 days) + +Want me to draft a full 3-month plan? Or focus on a specific country first?",assistant,40d7b32d-89c7-4ee4-9457-958355532936,2025-12-18 00:41:07 +0000,2025-12-18 00:41:42 +0000 +13,"{'warnings': {}, 'responses': [], 'selected_response_index': 0, 'tokens': None, 'template': {'title': 'Basic/Prompt', 'content': '{instruction}{prompt[message]}', 'memor_version': '1.0', 'custom_map': {'instruction': ''}, 'date_created': '2025-12-18 00:41:07 +0000', 'date_modified': '2025-12-18 00:41:07 +0000'}, 'memor_version': '1.0'}",True,Prompt,Can you help me create a daily itinerary for France first?,user,c3a37105-7f7b-4f05-be2c-00915396e7b2,2025-12-18 00:41:42 +0000,2025-12-18 00:41:42 +0000 +14,"{'warnings': {}, 'score': None, 'temperature': None, 'top_k': None, 'tokens': None, 'inference_time': None, 'top_p': None, 'model': 'unknown', 'gpu': None, 'memor_version': '1.0'}",True,Response,"Absolutely! Here’s a **flexible 4-week France itinerary** covering highlights, culture, and hidden gems. Adjust based on your pace (e.g., skip a day in a city if you prefer slower travel). + +--- + +### **Week 1: Paris & Day Trips** +**Day 1–4: Paris** +- **Day 1:** Iconic sights (Eiffel Tower, Seine cruise, Trocadéro). +- **Day 2:** Art & history (Louvre, Musée d’Orsay, Montmartre/Sacre-Cœur). +- **Day 3:** Le Marais (trendy boutiques, falafel), Notre-Dame, Latin Quarter. +- **Day 4:** Day trip to **Versailles** (palace + gardens) *or* **Giverny** (Monet’s gardens). + +**Day 5–7: Loire Valley or Champagne Region** +- **Option 1:** Loire Valley (2 days): Château de Chambord, Chenonceau, wine tasting. +- **Option 2:** Reims (1 day): Champagne houses (Veuve Clicquot, Taittinger). + +--- + +### **Week 2: Provence & French Riviera** +**Day 8–10: Avignon & Aix-en-Provence** +- Avignon: Palais des Papes, Pont du Gard (Roman aqueduct). +- Aix: Cours Mirabeau, Cézanne’s studio, lavender markets (seasonal). + +**Day 11–14: Nice & Côte d’Azur** +- Nice: Old Town, Promenade des Anglais, day trip to **Monaco** or **Èze**. +- Cannes: La Croisette, Île Sainte-Marguerite. +- Optional: Saint-Tropez or Cassis (calanques). + +--- + +### **Week 3: Lyon & Alps** +**Day 15–17: Lyon** +- Vieux Lyon (Renaissance district), traboules (hidden passageways), food markets (Les Halles). +- Day trip: **Pérouges** (medieval village) or **Beaujolais wine region**. + +**Day 18–21: Annecy or Chamonix** +- **Annecy:** ""Venice of the Alps,"" lake activities, Palais de l’Île. +- **Chamonix:** Mont Blanc views, cable car to Aiguille du Midi. + +--- + +### **Week 4: Bordeaux & Dordogne** +**Day 22–24: Bordeaux** +- Wine tours (Saint-Émilion, Médoc), La Cité du Vin, Arcachon (oysters + dunes). + +**Day 25–28: Dordogne** +- Sarlat-la-Canéda: Medieval streets, canoeing on the Dordogne. +- Lascaux Caves (prehistoric art), Rocamadour (cliffside village). + +--- + +### **Tips:** +- **Transport:** Trains (TGV/TER) connect major cities; rent a car for rural areas (e.g., Dordogne). +- **Budget:** Prioritize free museum days (1st Sunday of the month) and regional menus (€15–20). +- **Flexibility:** Swap days based on weather (e.g., save museums for rainy days). + +Want to dive deeper into a region or adjust the pace?",assistant,f0573bc1-7ad7-423c-bef8-68216ca901b4,2025-12-18 00:41:07 +0000,2025-12-18 00:41:58 +0000 diff --git a/examples/dataframe_usage/2_session_df.pkl b/examples/dataframe_usage/2_session_df.pkl deleted file mode 100644 index 2410155..0000000 Binary files a/examples/dataframe_usage/2_session_df.pkl and /dev/null differ diff --git a/examples/dataframe_usage/3_trimmed_chat.py b/examples/dataframe_usage/3_trimmed_chat.py index f26773e..28ed908 100644 --- a/examples/dataframe_usage/3_trimmed_chat.py +++ b/examples/dataframe_usage/3_trimmed_chat.py @@ -16,7 +16,7 @@ MAX_CHARS = 1500 # threshold for free LLM context window -df = pd.read_pickle('2_session_df.pkl') +df = pd.read_csv('2_session_df.csv') print("Main session size:", len(df)) print(df.head()) df["contains_sensitive"] = df["message"].astype(str).str.contains(SENSITIVE_REGEX)