66 lines
3.1 KiB
Markdown
66 lines
3.1 KiB
Markdown
# TraderAI
|
|
|
|
Local Ollama-powered chat for UEX marketplace workflows.
|
|
|
|
## What It Does
|
|
|
|
- Searches active UEX marketplace listings through `GET /marketplace_listings/`.
|
|
- Reads authenticated marketplace negotiations and negotiation messages when `UEX_SECRET_KEY` or `UEX_BEARER_TOKEN` is set.
|
|
- Drafts negotiation messages and marketplace listings as pending actions.
|
|
- Requires browser approval before sending authenticated write requests to UEX.
|
|
- Maintains local SQLite memory with searchable recall for user facts, preferences, and prior chat context.
|
|
- Can create one-time or recurring wake jobs that prompt the assistant later and surface the result in the UI.
|
|
- Loads the configured UEX user profile from `GET /user` so the assistant knows the current account username, display name, timezone, language, and marketplace-relevant profile details.
|
|
|
|
## Setup
|
|
|
|
1. Install Python 3.11+.
|
|
2. Install Ollama and pull a tool-capable model, for example:
|
|
|
|
```powershell
|
|
ollama pull qwen3.5:9b
|
|
```
|
|
|
|
3. Create `.env` from `.env.example` and set `UEX_SECRET_KEY` and/or `UEX_BEARER_TOKEN` if you want authenticated actions.
|
|
4. Install and run:
|
|
|
|
```powershell
|
|
pip install -e .
|
|
uvicorn traderai.server:app --reload
|
|
```
|
|
|
|
5. Open `http://127.0.0.1:8000`.
|
|
|
|
## Notes
|
|
|
|
Ollama runs locally at `http://localhost:11434` by default. This app talks to Ollama's native chat API with tool schemas, then executes approved UEX calls in the FastAPI backend.
|
|
|
|
UEX marketplace posting and negotiation messages are guarded because they are account-affecting write actions. The model can draft them, but the UI approval button performs the final API call.
|
|
|
|
The assistant gets runtime context on every chat: current date/time, authenticated UEX identity when credentials are configured, remembered user profile, last interaction time, relevant memories, and recent conversation excerpts. Memory is stored locally at `TRADERAI_MEMORY_PATH`.
|
|
|
|
Wake jobs can be created from chat, for example:
|
|
|
|
```text
|
|
At 9 PM remind yourself to check my open Polaris Bit negotiations.
|
|
```
|
|
|
|
or:
|
|
|
|
```text
|
|
Every day at 9 AM, wake up and check whether I have marketplace followups.
|
|
```
|
|
|
|
The scheduler accepts one-time ISO datetimes and five-field cron expressions through the `schedule_wake_job` tool. When a wake job fires, the assistant receives context like the current time and last interaction time, then places its response into the UI notification queue.
|
|
|
|
## Sources Used
|
|
|
|
- UEX SwaggerHub OpenAPI v2.1: https://app.swaggerhub.com/apis-docs/dolejska-daniel/UEX-API/v2.1
|
|
- UEX marketplace listings docs: https://uexcorp.space/api/documentation/id/get_marketplace_listings/?is_kiosk=1
|
|
- UEX negotiation message docs: https://uexcorp.space/api/documentation/id/post_marketplace_negotiations_messages/?is_kiosk=1
|
|
- Ollama tool calling docs: https://docs.ollama.com/capabilities/tool-calling
|
|
- Ollama API streaming/tool-call reference: https://github.com/ollama/ollama/blob/main/docs/api.md
|
|
- SQLite FTS5 docs: https://www.sqlite.org/fts5.html
|
|
- APScheduler AsyncIO scheduler docs: https://apscheduler.readthedocs.io/en/stable/modules/schedulers/asyncio.html
|
|
- Letta/MemGPT memory hierarchy background: https://docs.letta.com/concepts/letta
|