Skip to main content

OpenAI

OpenAI supports native JSON schema enforcement via response_format. Use OPENAI_DOCUMENT_SCHEMA for strict mode compatibility, or DOCUMENT_SCHEMA for standard mode.
from surfacedocs import SurfaceDocs, OPENAI_DOCUMENT_SCHEMA, SYSTEM_PROMPT
from openai import OpenAI

openai = OpenAI()
docs = SurfaceDocs()

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": "Write documentation for user authentication"},
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "surfacedocs_document",
            "strict": True,
            "schema": OPENAI_DOCUMENT_SCHEMA,
        },
    },
)

result = docs.save(response.choices[0].message.content)
print(f"Saved: {result.url}")
OPENAI_DOCUMENT_SCHEMA sets additionalProperties: false and marks all fields as required, which OpenAI’s strict mode requires. Use DOCUMENT_SCHEMA if you don’t need strict mode.

With standard mode

from surfacedocs import SurfaceDocs, DOCUMENT_SCHEMA, SYSTEM_PROMPT
from openai import OpenAI

openai = OpenAI()
docs = SurfaceDocs()

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": "Document the REST API authentication flow"},
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {"name": "document", "schema": DOCUMENT_SCHEMA},
    },
)

result = docs.save(response.choices[0].message.content)
print(f"Saved: {result.url}")