Jippity is a tool for testing game integration with the Neuro-sama Game API.
Jippity is designed to be a more "realistic" alternative to Randy. He accomplishes this by offloading his thinking to OpenAI, as their models are more intelligent and less reliable than a random number generator.
Jippity has the following advantages over Randy:
- he can intelligently choose to take actions without being forced
- he can choose to not take any actions
- he can send actions with invalid data
- he pretends to be a streamer and is lonely because he has no viewers
If you have any problems with Jippity, please create a GitHub issue or message me on Discord: @EnterpriseScratchDev
Warning
I'm not actively working on this project, but I'll try to address any issues that come up if you create a GitHub issue and/or message me on Discord. This project has some jankiness built into it at a foundational level, so please don't expect perfection.
- Clone or download this repository
- Run
cd backend
to enter the backend directory - Run
npm install
to install dependencies - Run
npm start
to start the program
If you are contributing to Jippity, please lint and format your code using npm run lint
and npm run format
.
Jippity sends messages to all connected websockets, so a tool like Insomnia can be used to see what he's sending if there's a problem with your game.
This tool is configured exclusively with environment variables.
Environment variables will be loaded from the .env
file in the backend folder, if present.
A config file may be added in the future.
Environment Variable | Description | Required | Example |
---|---|---|---|
OPENAI_API_KEY |
Your OpenAI API key. You'll still use this property even if you use a different provider. | Yes | sk-anVzdCB1c2UgeW91ciBtb20ncyBjcmVkaXQgY2FyZCBsbWFv |
OPENAI_BASE_URL |
The base URL of the OpenAI API. Defaults to https://api.openai.com/v1 . Setting a different base URL allows you to use other providers, such as Anthropic. |
No | https://api.anthropic.com/v1/ |
OPENAI_MODEL |
The OpenAI model to use. Must support tools (formerly functions). | No | gpt-4o-mini |
OPENAI_ORG_ID |
Your OpenAI organization ID. Defaults to null . |
No | |
OPENAI_PROJECT_ID |
Your OpenAI project ID. Defaults to null . |
No | |
WSS_PORT |
The port the websocket server will listen on. Defaults to 8000 . |
No | 8000 |
LOG_LEVEL |
The level of logs to display. The options are error , warn , info , and debug . Defaults to info . |
No | info |
JIPPITY_INTERVAL_MS |
The interval in milliseconds before Jippity will say/do something unprompted. Defaults to 10 seconds, has a hard-coded minimum of 1 second. | No | 10000 |
- Old messages are not cleared from the AI's "memory", so the context window will eventually fill up, leading to a crash. The token limit is currently hard-coded to 2048.
- Multiple websocket clients (i.e. games) can connect to Jippity at the same time. Jippity can receive messages from any client and will send messages to all clients. This behavior matches Randy.
- There is no guarantee that Jippity will respond to an
actions/force
message in a timely manner. - When a forced action has a non-success result, Jippity won't necessarily retry it. The specification says that Neuro will immediately retry in this scenario.
- The
ephemeral_context
property of force action messages is treated as if it was alwaysfalse
. This may result in the AI getting confused if it's important for context to be hidden after the action is taken.