abridged: speak the command word "Geyser" produces 30 gallons of water that gushes forth in a geyser 30 feet long and 1 foot wide. As a bonus action while holding the decanter, you can aim the geyser at a creature you can see within 30 feet of you. The water stops pouring out at the start of your next turn.
Doesn't seem like the decanter has thrust. To design something that thrusts would require your character to have a deep understanding of D&D physics (or maybe just some deadly experimentation?!)
Trying to mix mundane physics and universe book rules (i.e. peasant railgun) in a D&D universe sounds like a dangerous pastime for a character.
Cue the old SF story where Hitler wants to control a portal to other planets. Version 1 destroyed when other end moved into a red sun creating a radioactive lance, Version 2 destroyed when other end put into an ocean creating high pressure hose.
Do you want your character to magically refine Plutonium, Madame Curie?
I was referring to 3e, when the "simulation" aspect of the game was more heavily emphasized. See: https://www.dandwiki.com/wiki/SRD:Decanter_of_Endless_Water
> “Geyser” produces a 20-foot-long, 1-foot-wide stream at 30 gallons per round. ... The geyser effect causes considerable back pressure, requiring the holder to make a DC 12 Strength check to avoid being knocked down.
It was that last line that initially sparked the idea. Given the stated effects, this didn't seem like so much of a physics+rules stretch. The no-friction freedom of movement may have been more beyond the pale. Unfortunately 5e deliberately tried to close all the fun ways one could abuse various items.
So, if anybody else is frustrated and not finding anything online about this, here are a few things I learned, specifically for structured output generation (which is a main use case for batching) - the individual request JSON should resolve to this:
```json { "request": { "contents": [ { "parts": [ { "text": "Give me the main output please" } ] } ], "system_instruction": { "parts": [ { "text": "You are a main output maker." } ] }, "generation_config": { "response_mime_type": "application/json", "response_json_schema": { "type": "object", "properties": { "output1": { "type": "string" }, "output2": { "type": "string" } }, "required": [ "output1", "output2" ] } } }, "metadata": { "key": "my_id" } } ```
To get actual structured output, don't just do `generation_config.response_schema`, you need to include the mime-type, and the key should be `response_json_schema`. Any other combination will either throw opaque errors or won't trigger Structured Output (and will contain the usual LLM intros "I'm happy to do this for you...").
So you upload a .jsonl file with the above JSON, and then you try to submit it for a batch job. If something is wrong with your file, you'll get a "400" and no other info. If something is wrong with the request submission you'll get a 400 with "Invalid JSON payload received. Unknown name \"file_name\" at 'batch.input_config.requests': Cannot find field."
I got the above error endless times when trying their exact sample code: ``` BATCH_INPUT_FILE='files/123456' # File ID curl https://generativelanguage.googleapis.com/v1beta/models/gemi... \ -X POST \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -H "Content-Type:application/json" \ -d "{ 'batch': { 'display_name': 'my-batch-requests', 'input_config': { 'requests': { 'file_name': ${BATCH_INPUT_FILE} } } } }" ```
Finally got the job submission working via the python api (`file_batch_job = client.batches.create()`), but remember, if something is wrong with the file you're submitting, they won't tell you what, or how.