Structured Outputs

Sutro’s SDK allows you to enforce a JSON schema for the outputs of your inference job. This can be useful if you want to ensure that the outputs of your inference job are in a specific format, or if you want to extract specific information from the outputs. To specify a schema for the outputs of your inference job, you can pass a Pydantic Model or a JSON schema to the output_schema parameter in the SDK. If you pass a JSON schema, it must follow the json-schema.org specification. On rare occasions, the model may not adhere to the provided schema and will produce invalid JSON; in this case, Sutro will return the raw, unparsed text. If you need help improving JSON adherence, please contact us.

Example with Pydantic Model

import sutro as so
from pydantic import BaseModel

texts = [
    "The airplane is flying at an altitude of 30,000 feet.",
    "The capital of France is Paris.",
    "The best way to cook a steak is on a grill."
]

class AviationOutput(BaseModel):
    is_aviation_related: bool
    answer_justification: str

results = so.infer(texts, system_prompt="Is the following sentence aviation related? Please provide a justification for your answer.", output_schema=AviationOutput)

print(results)

Example with JSON Schema

import sutro as so

texts = [
    "The airplane is flying at an altitude of 30,000 feet.",
    "The capital of France is Paris.",
    "The best way to cook a steak is on a grill."
]

json_schema = {
    "type": "object",
    "properties": {
        "is_aviation_related": {
            "type": "boolean"
        },
        "answer_justification": {
            "type": "string"
        }
    },
    "required": ["is_aviation_related", "answer_justification"]
}

results = so.infer(texts, system_prompt="Is the following sentence aviation related? Please provide a justification for your answer.", output_schema=json_schema)

print(results)