Python SDK for Yachay — Condor Models inference API (OpenAI-compatible)
Project description
Yachay Python SDK
Python client for Yachay — Condor Models inference API. Designed to feel like the OpenAI SDK so migrating existing code takes minutes.
Install
pip install yachay
Requires Python 3.9+.
Quickstart
import yachay
client = yachay.Client() # reads YACHAY_API_KEY from environment
response = client.chat.completions.create(
model="llama-3.1-8b",
messages=[{"role": "user", "content": "Explain gradient descent in one paragraph."}],
)
print(response.choices[0].message.content)
Authentication
Create a customer API key in the Yachay dashboard.
Keys are prefixed yck_.
Recommended — environment variable:
export YACHAY_API_KEY="yck_your_key_here"
Or pass directly:
client = yachay.Client(api_key="yck_your_key_here")
Available models
Run the CLI or call the SDK to see the current catalog (the list changes as new models are added):
yachay models list
models = client.models.list()
for model in models.data:
print(model.id, model.display_name)
CLI
The yachay command ships with the package and covers the full developer workflow — authentication, fine-tuning jobs, inference, datasets, endpoints, and account management.
Authentication
# Sign in via browser (credentials saved to the OS keychain; auto-refreshed)
yachay login
# Check who you're signed in as
yachay auth status
# CI/non-interactive: pass a key directly (or set YACHAY_API_KEY)
YACHAY_API_KEY=yck_... yachay jobs list
Command groups
| Group | Example | Description |
|---|---|---|
auth |
yachay auth status |
Sign in/out and check credentials |
models |
yachay models list |
List available inference models |
jobs |
yachay jobs submit --model llama-3.1-8b --model-name my-bot --dataset train.jsonl --agreed-max-usd 10 |
Submit and manage fine-tuning jobs |
jobs |
yachay jobs list, yachay jobs status <id>, yachay jobs download <id> |
Track and retrieve jobs |
jobs |
yachay jobs estimate --model llama-3.1-8b --dataset-size-mb 5 |
Cost/ETA estimate before submitting |
jobs |
yachay jobs cancel <id>, yachay jobs metrics <id>, yachay jobs extend-storage <id> |
Manage active jobs |
datasets |
yachay datasets generate --task-type chat --source "..." |
AI-assisted dataset generation |
datasets |
yachay datasets upload <file.jsonl> --model llama-3.1-8b --model-name my-bot --agreed-max-usd 10 |
Upload a BYO dataset |
infer |
yachay infer playground --model llama-3.1-8b --prompt "Hello" |
Run a prompt through the inference playground |
endpoints |
yachay endpoints deploy --job-id <id> --name my-endpoint |
Deploy a fine-tuned adapter to hosted inference |
account |
yachay account me, yachay account prefs |
Account summary and notification preferences |
billing |
yachay billing |
Show billing summary |
chat |
yachay chat --model llama-3.1-8b --prompt "Hi" |
One-shot or interactive chat REPL |
Useful flags
| Flag | Effect |
|---|---|
--json |
Machine-readable JSON output on stdout (errors on stderr) |
--yes / -y |
Skip confirmation prompts (CI/scripted use) |
--api-key KEY |
Override stored credentials (also YACHAY_API_KEY env var) |
Credential storage
Login credentials (refresh token) are stored in the OS keychain (macOS Keychain, Linux Secret Service, Windows Credential Manager). Run yachay logout to remove them.
Chat completions
response = client.chat.completions.create(
model="deepseek-r1-distill-llama-8b",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of Peru?"},
],
max_tokens=256,
temperature=0.7,
)
# Access the generated text
print(response.choices[0].message.content)
# Access token usage
print(f"Tokens used: {response.usage.total_tokens}")
Context manager
with yachay.Client() as client:
response = client.chat.completions.create(
model="llama-3.1-8b",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
# HTTP connection pool is closed automatically
Migrating from OpenAI
The client mirrors the OpenAI SDK's nested-namespace pattern. Replace:
# Before
import openai
client = openai.OpenAI(api_key="sk-...")
response = client.chat.completions.create(model="gpt-4o", messages=[...])
with:
# After
import yachay
client = yachay.Client(api_key="yck_...")
response = client.chat.completions.create(model="llama-3.1-8b", messages=[...])
Response objects share the same shape: .choices[0].message.content, .usage.total_tokens, etc.
Error handling
from yachay import AuthError, RateLimitError, APIError
try:
response = client.chat.completions.create(...)
except AuthError:
print("Invalid API key")
except RateLimitError:
print("Slow down — you are being rate-limited")
except APIError as e:
print(f"API error {e.status}: {e.body}")
All errors are subclasses of yachay.YachayError.
Custom base URL and timeout
client = yachay.Client(
api_key="yck_...",
base_url="https://api.yachaymodels.com/v1", # default; override for testing
timeout=30.0, # seconds
)
What v1 does NOT include
- Streaming —
stream=Trueis not yet supported in the Python client. Passingstream=Trueraises anAPIErrorwith a clear message. Submit a feature request at yachaymodels.com/support. - SDK-native fine-tuning methods —
client.jobs.*andclient.datasets.*are not exposed on theClientobject in v1. Use theyachayCLI (see the CLI section above) for the full fine-tuning and dataset workflow. - Embeddings — not available in v1.
Documentation
Full API reference and guides at yachaymodels.com/docs.
License
MIT — see LICENSE for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yachay-0.1.4.tar.gz.
File metadata
- Download URL: yachay-0.1.4.tar.gz
- Upload date:
- Size: 49.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a433339ecfe73fcc2eaf7f1cd59156b1560d567a49e6dc956ce742158c876894
|
|
| MD5 |
647a20cefd106b0f261bd1dd641c414e
|
|
| BLAKE2b-256 |
1ab95f01883e6c447e59a8bd086d973371e60716081a0761aa37b73862b7c711
|
File details
Details for the file yachay-0.1.4-py3-none-any.whl.
File metadata
- Download URL: yachay-0.1.4-py3-none-any.whl
- Upload date:
- Size: 58.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
052b943cac84fd25aae7c25700562d867a71afc1383622bac5601c81b77615a6
|
|
| MD5 |
bc6df82b035003797678075c89db91c7
|
|
| BLAKE2b-256 |
3097ce059c96112cb6b53a51c2300f943c8f6fe8f208ab167eb49f8a688f9aac
|