Skip to main content

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

  • Streamingstream=True is not yet supported in the Python client. Passing stream=True raises an APIError with a clear message. Submit a feature request at yachaymodels.com/support.
  • SDK-native fine-tuning methodsclient.jobs.* and client.datasets.* are not exposed on the Client object in v1. Use the yachay CLI (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

yachay-0.1.3.tar.gz (48.3 kB view details)

Uploaded Source

Built Distribution

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

yachay-0.1.3-py3-none-any.whl (57.3 kB view details)

Uploaded Python 3

File details

Details for the file yachay-0.1.3.tar.gz.

File metadata

  • Download URL: yachay-0.1.3.tar.gz
  • Upload date:
  • Size: 48.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for yachay-0.1.3.tar.gz
Algorithm Hash digest
SHA256 58d1b9bcfb7a410583ad5c3d8829d25d9c4f3a904a19ae76db1d435d3c4a7eb7
MD5 bc93a061289e8cdbbfcbcf3b1881c8c2
BLAKE2b-256 6e750459c321787b285a02bc10594e566a6d59f97a971335d454db5a9053a2f9

See more details on using hashes here.

File details

Details for the file yachay-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: yachay-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 57.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for yachay-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0ec184dca0fb851c41dbcdae8e95fbdafbdab3d2f81c3a6cb919fe906be65f2c
MD5 ca28b40aca9584ed4311f09c0f204c70
BLAKE2b-256 6687847cb0ac8631c8a85e41bac9f4c94b13f9d9a720e02f621169988360c330

See more details on using hashes here.

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