A Python client for secure AI model inference through Tinfoil.
pip install tinfoilThe 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)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)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.
You can also perform arbitrary GET/POST requests that are verified:
import os
from tinfoil import NewSecureClient
tfclient = NewSecureClient(
enclave="df-demo.model.tinfoil.sh",
repo="tinfoilsh/confidential-df-demo",
api_key=os.getenv("TINFOIL_API_KEY"),
)
# GET example
resp = tfclient.get(
"https://df-demo.model.tinfoil.sh/health",
params={"query": "value"},
timeout=30,
)
print(resp.status_code, resp.text)
# POST example
payload = {"key": "value"}
resp = tfclient.post(
"https://df-demo.model.tinfoil.sh/analyze",
headers={"Content-Type": "application/json"},
json=payload,
timeout=30,
)
print(resp.status_code, resp.text)- Python 3.10 through 3.13
Run unit and integration tests:
pytest -qIntegration tests require the TINFOIL_API_KEY environment variable:
export TINFOIL_API_KEY="..."
pytest -q -m integration