simodocs

Get started

Simo documentation

Simo answers typed questions about a situation (text, images or video) with a calibrated probability for every possible answer. When acting needs a value, it fills that in too. One request reads the situation once and answers every question you ask about it.

from simoai import Client, Noul

c = Client()   # reads $SIMO_API_KEY
r = c.ask("The customer says the parcel arrived broken and wants their money back.",
          {"refund": Noul("The customer asks for a refund")})

r["refund"].noul   # 0.99: the probability that the statement is true
r.cost_usd         # what the request cost

Why calibrated answers

A language model's text answer tells you what it thinks, not how sure it is. Simo returns a probability you can act on: when it says 0.8, it is right about 80% of the time. A threshold in your code means what it says.

Python
if r["refund"].noul > 0.95:
    auto_refund()          # confident: act
elif r["refund"].noul > 0.6:
    ask_a_person()         # unsure: escalate

Start here

What you can ask

Kind Types You get back
Decisions Noul (yes/no), Choice (one of several), Score (a level on a scale) A calibrated probability for every possible answer
Reads (preview) Fill (write a value), Extract (copy it from the input), Locate (find it in an image) A typed value: text, number, list or box coordinates

Ten questions about one input cost little more than one, because the cost is in reading the situation. Ask everything you need in one request.