OpenAIProxy / .opencode /AGENTS.md
Wimmboo
chore: remove Google provider entirely
09e4b39
|
Raw
History Blame Contribute Delete
2.75 kB
## graphify
This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.
When the user types `/graphify`, invoke the `skill` tool with `skill: "graphify"` before doing anything else.
Rules:
- For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
- Dirty graphify-out/ files are expected after hooks or incremental updates; dirty graph files are not a reason to skip graphify. Only skip graphify if the task is about stale or incorrect graph output, or the user explicitly says not to use it.
- If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
- After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
## OpenAI API Proxy
FastAPI proxy that routes OpenAI-compatible chat requests to NVIDIA NIM based on the `sk-nvidia` key the client uses.
### Setup & run
- Install: `pip install -r requirements.txt`
- Copy `.env.example` to `.env` and fill in real provider API keys + proxy keys
- Run: `python main.py` (uvicorn, http://127.0.0.1:8000)
- Client calls `POST /v1/chat/completions` with `Authorization: Bearer sk-{provider}-...`
### Architecture
- `config.py` — loads `.env`, exposes `PROVIDER_KEYS` (proxy→real key mapping) and `REAL_KEYS`
- `proxy/providers.py``Provider` dataclass registry; adds `env_real_key` field name, `auth_header`, `handles_202` flag
- `proxy/auth.py``resolve_provider()` matches Bearer token against `PROVIDER_KEYS`; `get_real_key()` reads the real API key from env
- `proxy/client.py``forward_request()` streams or polls upstream; NVIDIA returns HTTP 202 then polls `/v1/status/{id}`
- `proxy/router.py` — FastAPI router with `/v1/models`, `/v1/chat/completions`, `/v1/health`, `/v1/keys`; `create_app()` factory mounts static files
### Provider quirks
- **NVIDIA**: Bearer token auth, async (202→poll), base URL `https://integrate.api.nvidia.com`
### Adding a new provider
1. Add `Provider(...)` to `proxy/providers.py:PROVIDERS` dict
2. Add `REAL_*_KEY` and `SK_*_KEY` env vars in `config.py` and `.env.example`
3. Add model list to `MODELS` dict in `proxy/router.py`
### Constraints
- No tests, no CI, no linter/formatter config — not yet set up
- No database — pure HTTP proxy
- Timeouts: connect=10s, read=180s; NVIDIA poll interval=2s, max 60 attempts