Metadata-Version: 2.4
Name: SimVX-AI
Version: 0.0.0.dev1496+gc464d742
Summary: LLM / agent layer for SimVX: provider-agnostic OpenAI-compatible client and the in-game AI contract
Author: SimVX Team
Author-email: SimVX Team <simvx@simvx.com>
License-Expression: AGPL-3.0-or-later
Classifier: Development Status :: 1 - Planning
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: simvx-core==0.0.0.dev1496+gc464d742
Requires-Dist: httpx>=0.27
Requires-Python: >=3.14
Project-URL: Homepage, https://simvx.com
Project-URL: Source, https://fezzik.dev/Fezzik/simvx
Description-Content-Type: text/markdown

# SimVX-AI

The LLM / agent layer for SimVX.

This package holds everything that talks to a language model, kept out of
`simvx.core` so the engine core stays dependency-light (numpy + freetype). The
dependency-free AI *contract* (`Brain`, `Blackboard`, `Sensor`) lives in
`simvx.core.ai`; the LLM client, the in-game `LLMBrain`, the live-control agent
session, and node generation build on it here.

## Provider

One provider-agnostic client targeting any OpenAI-compatible
`/chat/completions` endpoint: a self-hosted OpenWebUI / vLLM / llama.cpp
server, or a hosted OpenAI-compatible API. Bring your own key.

```python
from simvx.ai import OpenAICompatibleClient

client = OpenAICompatibleClient.from_env()  # SIMVX_LLM_BASE_URL / _API_KEY / _MODEL
resp = await client.complete([{"role": "user", "content": "Hello"}])
print(resp.text)
```

`base_url` includes the path prefix up to (not including) `/chat/completions`,
e.g. `http://rig:8000/v1` or an OpenWebUI `http://host:3000/api`.

## Deterministic tests

`CachingClient` wraps any client with an on-disk record/replay fixture cache,
so LLM-touching code is testable without a network and without relying on
temperature 0 (which is not reproducible).

See `design/llm_ai_interaction_layer.md` for the full roadmap.
