Skip to main content

Python client for Tinfoil

Project description

Tinfoil Python Library

PyPI - Version SDK Test Documentation

A Python client for secure AI model inference through Tinfoil.

Installation

# With uv
uv add tinfoil

# With pip
pip install tinfoil

Usage

The Tinfoil SDK automatically selects a router enclave and verifies it against the official GitHub repository. You just need to provide your API key:

import os
from tinfoil import TinfoilAI

client = TinfoilAI(
    api_key=os.getenv("TINFOIL_API_KEY")
)

chat_completion = client.chat.completions.create(
    model="llama3-3-70b",
    messages=[
        {
            "role": "user",
            "content": "Hi",
        }
    ],
)
print(chat_completion.choices[0].message.content)

Audio Transcription with Whisper

You can transcribe audio files using OpenAI's Whisper model:

import os
from tinfoil import TinfoilAI

client = TinfoilAI(
    api_key=os.getenv("TINFOIL_API_KEY")
)

with open("audio.mp3", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        file=audio_file,
        model="whisper-large-v3-turbo",
    )
print(transcription.text)

Async Usage

Simply import AsyncTinfoilAI instead of TinfoilAI and use await with each API call:

import os
import asyncio
from tinfoil import AsyncTinfoilAI

client = AsyncTinfoilAI(
    api_key=os.getenv("TINFOIL_API_KEY")
)

async def main() -> None:
    stream = await client.chat.completions.create(
        model="llama3-3-70b",
        messages=[{"role": "user", "content": "Say this is a test"}],
        stream=True,
    )
    async for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content is not None:
            print(chunk.choices[0].delta.content, end="", flush=True)
    print()

asyncio.run(main())

Functionality between the synchronous and asynchronous clients is otherwise identical.

Low-level HTTP Endpoints

You can also perform arbitrary GET/POST requests that are verified:

import os
from tinfoil import NewSecureClient

api_key = os.getenv("TINFOIL_API_KEY")
tfclient = NewSecureClient()

# GET example
resp = tfclient.get(
    "https://example.com/health",
    headers={"Authorization": f"Bearer {api_key}"},
    params={"query": "value"},
    timeout=30,
)
print(resp.status_code, resp.text)

# POST example
payload = {"key": "value"}
resp = tfclient.post(
    "https://example.com/analyze",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    json=payload,
    timeout=30,
)
print(resp.status_code, resp.text)

Security

Please report security vulnerabilities by emailing security@tinfoil.sh.

We aim to respond to (legitimate) security reports within 24 hours.

Development

Install uv before following these instructions.

# Set up the development environment and install the package
uv sync

# Run all tests (requires the TINFOIL_API_KEY environment variable)
export TINFOIL_API_KEY="..."
uv run pytest

# Run unit tests
uv run pytest -m "not integration"

# Run integration tests (requires the TINFOIL_API_KEY environment variable)
export TINFOIL_API_KEY="..."
uv run pytest -m integration

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinfoil-0.13.1.tar.gz (666.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinfoil-0.13.1-py3-none-any.whl (92.8 kB view details)

Uploaded Python 3

File details

Details for the file tinfoil-0.13.1.tar.gz.

File metadata

  • Download URL: tinfoil-0.13.1.tar.gz
  • Upload date:
  • Size: 666.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tinfoil-0.13.1.tar.gz
Algorithm Hash digest
SHA256 f5df336f99792ce26f0c2c7b932ab01d6b47fda7c6e62d6bf236ef7c424206b6
MD5 6ded138c552e7cd254a38e69c6ff86cf
BLAKE2b-256 eb1ceb71a6432cc501c061b4777d46d83fd01317526caf19cdfaf6df10d77165

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinfoil-0.13.1.tar.gz:

Publisher: release.yml on tinfoilsh/tinfoil-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tinfoil-0.13.1-py3-none-any.whl.

File metadata

  • Download URL: tinfoil-0.13.1-py3-none-any.whl
  • Upload date:
  • Size: 92.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tinfoil-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3eb5d73f56a3ef017f589ac575123d721ed707dc6407474234b3fd5228e741b2
MD5 a2e2e2aefc920eb607c8d3f22402928d
BLAKE2b-256 e3efc929ecce495d8ff1a40fe52ce2c89c89f44c9dc23313d599c155a3dbc644

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinfoil-0.13.1-py3-none-any.whl:

Publisher: release.yml on tinfoilsh/tinfoil-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page