OpenInference TypeSafe AI Instrumentation
Python auto-instrumentation library for the TypeSafe AI Python SDK (typesafe-sdk).
Calls to TypeSafeClient.system_one and AsyncTypeSafeClient.system_one are traced and exported as OpenInference LLM spans. A System One request sends a state plus a map of typed questions (Noul, Choice, Score) and returns one typed answer per question, so the span records:
input.value: the request body (state,model,questions) as JSONllm.invocation_parameters: the call configuration, meaning themodeland anyextra_bodyfieldsoutput.value: the response body (model,answers,usage) as JSONllm.request.model_name(for examplejev-latest) andllm.response.model_name(the resolved model, for examplejev-1.13.0)llm.token_count.prompt,llm.token_count.completion, andllm.token_count.total
A System One call is not a chat exchange, so the state and the answers are recorded only as input.value and output.value, not as llm.input_messages / llm.output_messages.
The state and the questions are recorded only in input.value, so TraceConfig(hide_inputs=True) keeps the whole request — caller data and question instructions alike — off the span, and hide_outputs=True does the same for the answers. llm.invocation_parameters holds no request content, only the model and any extra_body fields; mask it with hide_llm_invocation_parameters if those are sensitive.
These traces are fully OpenTelemetry compatible and can be sent to an OpenTelemetry collector for viewing, such as Arize Phoenix or Arize AX.
Supported Features
- Synchronous and asynchronous clients (
TypeSafeClientandAsyncTypeSafeClient) - All three question primitives, passed as SDK objects or raw dictionaries
- Suppressing tracing via
suppress_tracing() - Context attribute propagation (
using_session,using_user,using_attributes, metadata, tags) - Sensitive-data masking via
TraceConfig(e.g.hide_inputs,hide_outputs)
Requires typesafe-sdk >= 0.6.0.
Installation
pip install openinference-instrumentation-typesafe
Quickstart
pip install openinference-instrumentation-typesafe typesafe-sdk arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp
Start Phoenix as a collector (default http://localhost:6006), then:
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from openinference.instrumentation.typesafe import TypeSafeAIInstrumentor
endpoint = "http://127.0.0.1:6006/v1/traces"
tracer_provider = TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))
TypeSafeAIInstrumentor().instrument(tracer_provider=tracer_provider)
Make a System One call. Set the TYPESAFE_API_KEY environment variable with your key.
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
client = TypeSafeClient()
response = client.system_one(
state={"document": "I was charged twice. Please fix this ASAP."},
questions={
"billing": Noul(instructions="Is this ticket about billing?"),
"tone": Choice(
instructions="What is the customer's tone?",
criteria={"calm": None, "frustrated": None, "angry": None},
),
"urgency": Score(
instructions="How urgent is this ticket?",
criteria=["can wait", "this week", "today"],
),
},
)
print(response.nouls["billing"].noul)
print(response.choices["tone"].choice)
print(response.scores["urgency"].score)
Runnable examples, including async usage and context attributes, are in the examples/ directory.
More Info
Metadata
Release files for openinference-instrumentation-typesafe 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| openinference_instrumentation_typesafe-0.1.2.tar.gz | 11.2 kB | With provenance | Details for openinference_instrumentation_typesafe-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openinference_instrumentation_typesafe-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for openinference_instrumentation_typesafe-0.1.2-py3-none-any.whl |
Total release size: 24.9 kB
Release files / openinference_instrumentation_typesafe-0.1.2.tar.gz
| Download URL | openinference_instrumentation_typesafe-0.1.2.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79b98abb48c6cedb3c0a05adaed6cd57a2e05f38ab169a573f10594bd757a683
|
|
BLAKE2b-256 checksum How to use checksums |
76804608cf4b7b10591f79b2ab0842df10f86cfa900a8c7f57a7b6de7ac1136b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / openinference_instrumentation_typesafe-0.1.2-py3-none-any.whl
| Download URL | openinference_instrumentation_typesafe-0.1.2-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
49a3cb8ea0eb8f6563ba57f5d74d162d4ea7795904b82042e1db5a3007981519
|
|
BLAKE2b-256 checksum How to use checksums |
f71348f02300dee87ea72527651f9772c5fc16856d6c0ff45744049abef15e75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logSecurity for openinference-instrumentation-typesafe 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for openinference_instrumentation_typesafe-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.