state string instead, and your agent sends it back on the next call.
That string is the whole conversation as Kviria needs it.
Carry the state gives the steps.
What it holds
The state holds:- the user’s position;
- the places Kviria just listed, up to 5;
- the place waiting for a yes or no;
- the places settled earlier, up to 5, the most recent first;
- the street being discussed.
It is signed, not encrypted
- Kviria signs the state. A state that was changed, cut short or made up
is refused with
400 invalid_stateand an emptystate, and the conversation starts again. - The state is not encrypted. It carries the user’s position and the ids of places. If your platform logs tool calls, it logs the position in the state as well as in the request.
The position
The first call’sanchor goes into the state. A later call that sends
anchor replaces it, because the user has moved. A call without one uses
the position in the state.
One exception: a sent position that is the coordinate of a place, a door
or a street corner from the area (within 0.1 m) is not taken as the
user’s. Agents sometimes copy a coordinate from an answer into anchor,
and that would move the search onto that place. Kviria keeps the earlier
position instead, and the answer’s evidence ends with an
anchor_is_area_point entry.
Turns that find nothing new
When a turn runs no search, its response returns the state you sent, with the position updated. That happens on a request too vague to search (unclear), on a kind of place the area has none of (none) and on a
position outside coverage. The conversation then carries on from where it
was.