{"data":{"kind":"file","path":"README.md","version_id":"s1zmoi3qagzzi0ric8l8ntr9","entry":{"name":"README.md","path":"README.md","is_directory":false,"size":4544,"modified_at":"2025-12-22T00:30:14.834000","content_hash":"e9ddd92e568774d61cf882277565ff5979b09833e50bcbe97a1d56c16d44eb18"},"entries":[],"content":"# Self-Driving Negotiator\n\nAn LLM training and evaluation environment for social negotiation in autonomous driving. Built for Prime Intellect's Verifiers library.\n\n## Features\n\n- **7 negotiation scenarios** with game-theoretic foundations\n- **Text-based scene descriptions** for LLM reasoning\n- **Multi-dimensional scoring** (safety, social, efficiency, comfort, reasoning)\n- **Curriculum learning** with difficulty progression\n- **Dataset generation** for SFT and RLHF\n\n## Installation\n\n```bash\n# With uv (recommended)\nuv pip install -e .\n\n# With pip\npip install -e .\n```\n\n## Quick Start\n\n### Evaluation with Prime Intellect\n\n```bash\n# Set your API key\nexport PRIME_API_KEY=\"your-key\"\n\n# Run evaluation\nvf-eval self_driving_negotiator -p . \\\n  --model openai/gpt-4.1-mini \\\n  --api-base-url https://api.primeintellect.ai/api/v1 \\\n  --api-key-var PRIME_API_KEY \\\n  -n 10 --save-results\n\n# Analyze results\npython analyze_results.py outputs/evals/*/results.jsonl\n```\n\n### Python API\n\n```python\nfrom self_driving_negotiator import load_environment\n\n# Multi-turn environment for LLM evaluation\nenv = load_environment(\"yield_standoff\")\n\nmessages = env.reset()\n# [{\"role\": \"system\", \"content\": \"...\"}, {\"role\": \"user\", \"content\": \"...\"}]\n\n# LLM generates response\nresponse = '{\"reasoning\": \"...\", \"acceleration\": 0.5, \"steering\": 0.0, \"maneuver\": \"PROCEED\"}'\nmessages, reward, done, info = env.step(response)\n\n# Raw environment access\nenv = load_environment(\"yield_standoff\", multi_turn=False)\nobs = env.reset()\naction = {\"acceleration\": 0.5, \"steering\": 0.0, \"maneuver\": \"PROCEED\"}\nobs, reward, done, info = env.step(action)\n```\n\n## Scenarios\n\n| Scenario | Challenge | Game Theory |\n|----------|-----------|-------------|\n| `yield_standoff` | T-intersection negotiation | Chicken Game |\n| `contested_merge` | Highway merge with traffic | Coordination Game |\n| `pedestrian_feint` | Intent inference with pedestrians | Signaling Game |\n| `parking_lot` | Low-speed multi-agent navigation | Multi-player |\n| `four_way_stop` | Stop sign coordination | Turn-taking |\n| `uncertainty_reasoning` | Bayesian decision-making | Decision Theory |\n| `driving_theory_verifier` | Knowledge tests | N/A |\n\n## Scoring Dimensions\n\n| Dimension | Weight | Description |\n|-----------|--------|-------------|\n| Safety | 1.0 | Collision avoidance, TTC, proximity |\n| Social | 0.8 | Negotiation, Nash equilibrium, coordination |\n| Efficiency | 0.6 | Goal progress, time efficiency |\n| Comfort | 0.3 | Smooth driving, jerk minimization |\n| Reasoning | 0.2 | Quality of chain-of-thought |\n\n## Response Format\n\nLLMs respond with JSON:\n\n```json\n{\n    \"reasoning\": \"The other vehicle arrived first. I should yield to avoid collision.\",\n    \"acceleration\": -1.5,\n    \"steering\": 0.0,\n    \"maneuver\": \"YIELD\"\n}\n```\n\n**Maneuvers:** `PROCEED`, `YIELD`, `STOP`, `NUDGE_FORWARD`, `MAINTAIN_LANE`\n\n## Dataset Generation\n\n```python\nfrom integrations import DatasetGenerator, DatasetConfig\n\nconfig = DatasetConfig(\n    n_samples=1000,\n    scenarios=[\"yield_standoff\", \"contested_merge\"],\n    personalities=[\"aggressive\", \"cooperative\", \"timid\"]\n)\n\ngenerator = DatasetGenerator(config)\nsamples = generator.generate(policy=\"expert\")\ngenerator.save_dataset(samples, \"training_data.jsonl\")\n```\n\n## Configuration\n\n| Argument | Default | Description |\n|----------|---------|-------------|\n| `scenario_type` | `yield_standoff` | Scenario type |\n| `multi_turn` | `True` | MultiTurnEnv (LLM) or raw env |\n| `config_path` | `None` | Custom config.json path |\n| `other_agent_personality` | `cooperative` | Other agent behavior |\n\n**Personalities:** `aggressive`, `timid`, `cooperative`, `distracted`\n\n## Project Structure\n\n```\nself_driving_negotiator/\n├── self_driving_negotiator.py   # Main environment\n├── analyze_results.py           # Results analysis tool\n├── config.json                  # Scenario configuration\n├── core/                        # Types, dynamics, game theory\n├── scenarios/                   # Scenario implementations\n├── integrations/                # Verifiers integration\n│   ├── verifiers_env.py         # MultiTurnEnv wrapper\n│   ├── rubrics.py               # Scoring rubrics\n│   ├── scene_descriptions.py    # LLM-friendly descriptions\n│   ├── dataset_generator.py     # Training data generation\n│   └── llm_agent.py             # LLM utilities\n└── pyproject.toml               # Package configuration\n```\n\n## Testing\n\n```bash\npython test_verifiers_integration.py\n```\n\n## License\n\nMIT\n","encoding":"utf-8","truncated":false,"total_bytes":4544},"status":null}