CoolFace
Modelpublic

clarkkitchen22/PaintbotMistral-7b

sourceHugging Faceapache-2.0updated 11mo agoView on Hugging Face
1likes9downloads
README.md425 linesDownload Raw Back to root
1---2language: en3license: apache-2.04library_name: transformers5pipeline_tag: text-generation6tags:7  - mistral8  - lora9  - merged10  - gguf11  - text-generation12base_model: mistralai/Mistral-7B-Instruct-v0.213---14 15 16 17 18 19 20 21 22# ๐ŸŒ Geopolitical Analysis Agent23 24**Advanced strategic forecasting and simulation engine combining RAG, SQLite, ChromaDB, and Claude AI**25 26## What Is This?27 28A production-ready geopolitical analysis system that:29- **Answers complex "what-if" questions** about world events30- **Models quantitative scenarios** (tank stocks, production rates, timelines)31- **Combines structured data + unstructured knowledge** via RAG32- **Provides rigorous analysis** like a think tank war games coordinator33- **Prepares training data** for fine-tuning specialized models34 35## Key Features36 37### ๐Ÿง  Intelligent RAG Architecture38- **Vector search** with ChromaDB for semantic retrieval39- **Structured database** with SQLite for facts, metrics, inventories40- **Hybrid retrieval** combining both sources for comprehensive context41 42### ๐Ÿ“Š Quantitative Modeling43- Project military inventories over time44- Calculate attrition rates and production capacities45- Model economic sustainability scenarios46- Compare alternative pathways47 48### ๐Ÿ’พ Production-Ready Stack49- FastAPI backend with async support50- SQLAlchemy ORM for database management51- Sentence Transformers for embeddings52- Claude Sonnet 4 for analysis53- Clean HTML/JS frontend54 55### ๐ŸŽฏ Example Queries56 57```58"Where will Russia's tank stock be in 5 years with 15% annual 59losses and 200 tanks/year production?"60 61"What's China's timeline to semiconductor parity with Taiwan 62if sanctions continue vs. if they're lifted?"63 64"How long can Iran sustain its proxy network at $60/barrel 65vs $100/barrel oil prices?"66 67"Model European energy security in 2030 under three scenarios: 68diversified LNG, accelerated renewables, or partial Russian 69reconciliation"70```71 72## Quick Start73 74### 1. Install75 76```bash77cd geopolitical-agent/backend78python3 -m venv venv79source venv/bin/activate80pip install -r requirements.txt81```82 83### 2. Configure84 85Create `.env` file:86```bash87ANTHROPIC_API_KEY=your_key_here88```89 90### 3. Initialize91 92```bash93python -c "from models.database import init_db; init_db()"94```95 96### 4. Run97 98```bash99python app.py100```101 102Server starts on http://localhost:8000103 104### 5. Open Frontend105 106Open `frontend/index.html` in browser or:107```bash108cd frontend109python -m http.server 8080110```111 112### 6. Load Sample Data113 114Click "Load Sample Data" button in UI or:115```bash116curl -X POST http://localhost:8000/api/data/load-sample-data117```118 119## Architecture120 121```122โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”123โ”‚              Frontend (HTML/JS)                 โ”‚124โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜125                  โ”‚ REST API126โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”127โ”‚           FastAPI Backend                       โ”‚128โ”‚                                                 โ”‚129โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚130โ”‚  โ”‚      Analysis Service (Claude + RAG)     โ”‚  โ”‚131โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚132โ”‚            โ”‚                    โ”‚               โ”‚133โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚134โ”‚   โ”‚  RAG Service    โ”‚   โ”‚  Data Ingestion  โ”‚   โ”‚135โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚136โ”‚            โ”‚                    โ”‚               โ”‚137โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚138โ”‚   โ”‚   ChromaDB      โ”‚   โ”‚     SQLite       โ”‚   โ”‚139โ”‚   โ”‚  (Vectors)      โ”‚   โ”‚   (Structured)   โ”‚   โ”‚140โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚141โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜142```143 144## Project Structure145 146```147geopolitical-agent/148โ”œโ”€โ”€ backend/149โ”‚   โ”œโ”€โ”€ app.py                    # Main FastAPI app150โ”‚   โ”œโ”€โ”€ config.py                 # Configuration151โ”‚   โ”œโ”€โ”€ requirements.txt          # Dependencies152โ”‚   โ”œโ”€โ”€ models/153โ”‚   โ”‚   โ”œโ”€โ”€ database.py          # SQLAlchemy models154โ”‚   โ”‚   โ””โ”€โ”€ embeddings.py        # ChromaDB manager155โ”‚   โ”œโ”€โ”€ services/156โ”‚   โ”‚   โ”œโ”€โ”€ rag_service.py       # RAG orchestration157โ”‚   โ”‚   โ”œโ”€โ”€ analysis_service.py  # Analysis engine158โ”‚   โ”‚   โ””โ”€โ”€ data_ingestion.py    # Data loading159โ”‚   โ”œโ”€โ”€ routes/160โ”‚   โ”‚   โ”œโ”€โ”€ query.py             # Query endpoints161โ”‚   โ”‚   โ””โ”€โ”€ data.py              # Data endpoints162โ”‚   โ””โ”€โ”€ data/163โ”‚       โ”œโ”€โ”€ geopolitical.db      # SQLite database164โ”‚       โ””โ”€โ”€ chroma_db/           # Vector store165โ”œโ”€โ”€ frontend/166โ”‚   โ””โ”€โ”€ index.html               # Web interface167โ”œโ”€โ”€ data/168โ”‚   โ”œโ”€โ”€ sample_data/             # Sample datasets169โ”‚   โ””โ”€โ”€ training/                # Fine-tuning prep170โ””โ”€โ”€ docs/171    โ”œโ”€โ”€ SETUP.md                 # Setup guide172    โ””โ”€โ”€ API.md                   # API documentation173```174 175## Database Schema176 177### Countries178- Basic country attributes179- GDP, population, military budget180- Regional categorization181 182### Military Assets183- Equipment inventories (tanks, aircraft, etc.)184- Operational rates185- Production and attrition rates186 187### Geopolitical Events188- Timeline of significant events189- Impact scoring190- Related countries tracking191 192### Metrics Time Series193- Economic indicators194- Production statistics195- Any quantitative metric over time196 197### Knowledge Sources198- Document provenance tracking199- Credibility scoring200- Source metadata201 202## API Examples203 204### Analyze Query205```bash206curl -X POST http://localhost:8000/api/query/analyze \207  -H "Content-Type: application/json" \208  -d '{209    "query": "Your geopolitical question here",210    "use_cache": true211  }'212```213 214### Add Knowledge215```bash216curl -X POST http://localhost:8000/api/data/add-document \217  -H "Content-Type: application/json" \218  -d '{219    "text": "Your geopolitical knowledge document",220    "metadata": {"type": "report", "country": "China"}221  }'222```223 224Full API documentation: `docs/API.md`225 226## Fine-Tuning Preparation227 228### Export Training Data229 230```python231from models.database import SessionLocal, AnalysisCache232import json233 234db = SessionLocal()235analyses = db.query(AnalysisCache).all()236 237training_data = []238for analysis in analyses:239    training_data.append({240        "messages": [241            {242                "role": "system",243                "content": "You are a geopolitical analysis expert..."244            },245            {246                "role": "user",247                "content": analysis.query_text248            },249            {250                "role": "assistant",251                "content": analysis.analysis_result252            }253        ]254    })255 256with open("training_data.jsonl", "w") as f:257    for item in training_data:258        f.write(json.dumps(item) + "\n")259```260 261### LoRA Training262 263Use the exported data to fine-tune a LoRA adapter on geopolitical data:264 2651. Export queries/responses from `analysis_cache` table2662. Format as JSONL for LoRA training2673. Train LoRA adapter on domain-specific data2684. Deploy fine-tuned model for specialized analysis269 270## Extending the System271 272### Add New Countries273 274```python275from models.database import SessionLocal, Country276 277db = SessionLocal()278country = Country(279    name="Pakistan",280    iso_code="PAK",281    region="South Asia",282    population=235000000,283    gdp_usd=376000000000,284    military_budget_usd=11000000000285)286db.add(country)287db.commit()288```289 290### Add Military Assets291 292```python293from models.database import MilitaryAsset294 295asset = MilitaryAsset(296    country_id=country.id,297    asset_type="Fighter Aircraft",298    asset_name="JF-17 Thunder",299    quantity=150,300    operational_rate=0.75,301    production_rate_yearly=25,302    attrition_rate_yearly=0.05303)304db.add(asset)305db.commit()306```307 308### Add Knowledge Documents309 310```python311from services.data_ingestion import DataIngestionService312 313service = DataIngestionService()314service.add_knowledge_document(315    text="Your geopolitical analysis or fact...",316    metadata={317        "type": "intelligence_assessment",318        "country": "Iran",319        "classification": "open_source"320    }321)322```323 324## Configuration325 326Edit `backend/config.py`:327 328```python329# Embedding model (smaller = faster, larger = better)330EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2"331 332# RAG retrieval settings333TOP_K_RESULTS = 5              # Number of relevant chunks334SIMILARITY_THRESHOLD = 0.7      # Minimum relevance score335 336# Claude settings337DEFAULT_MODEL = "claude-sonnet-4-20250514"338MAX_TOKENS = 4000339TEMPERATURE = 0.3               # Lower = more analytical340```341 342## Performance Tips343 3441. **Adjust retrieval**: Tune `TOP_K_RESULTS` and `SIMILARITY_THRESHOLD`3452. **Enable caching**: Set `use_cache=true` for repeated queries3463. **Batch document ingestion**: Use bulk-add for multiple documents3474. **Index optimization**: Add SQLite indexes for frequent queries348 349## Use Cases350 351### Strategic Planning352- War games scenario modeling353- Resource sustainability analysis354- Timeline projections355 356### Intelligence Analysis357- Capability gap assessments358- Economic constraint modeling359- Production capacity tracking360 361### Academic Research362- Geopolitical trend analysis363- Historical pattern recognition364- Comparative case studies365 366### Policy Analysis367- Sanction impact modeling368- Alliance dynamics assessment369- Economic leverage analysis370 371## Roadmap372 373- [ ] Real-time data ingestion from news sources374- [ ] Multi-agent debate for competing analyses375- [ ] Temporal reasoning for historical patterns376- [ ] Export to PDF reports377- [ ] WebSocket streaming for long analyses378- [ ] Named Entity Recognition for auto-tagging379- [ ] Graph database for relationship modeling380 381## Contributing382 383Areas for contribution:3841. **Data**: Add domain-specific geopolitical datasets3852. **Models**: Integrate specialized embedding models3863. **Analysis**: Enhance quantitative modeling functions3874. **UI**: Improve frontend visualization3885. **Documentation**: Add tutorials and examples389 390## License391 392MIT License - See LICENSE file393 394## Citation395 396If you use this system in research:397 398```bibtex399@software{geopolitical_analysis_agent,400  title={Geopolitical Analysis Agent: RAG-based Strategic Forecasting},401  author={[Your Name]},402  year={2025},403  url={https://github.com/yourusername/geopolitical-agent}404}405```406 407## Support408 409- Documentation: `docs/`410- API Reference: `docs/API.md`411- Setup Guide: `docs/SETUP.md`412- Issues: GitHub Issues413 414## Acknowledgments415 416Built with:417- [FastAPI](https://fastapi.tiangolo.com/)418- [ChromaDB](https://www.trychroma.com/)419- [Anthropic Claude](https://www.anthropic.com/)420- [Sentence Transformers](https://www.sbert.net/)421 422---423 424**Ready to analyze the world? Start with `python app.py`** ๐Ÿš€425