Custom OpenAI-Compatible APIs¶
Integrate any OpenAI-compatible API with Ondine, including Together.AI, vLLM, Ollama, and custom endpoints.
Basic Usage¶
from ondine import PipelineBuilder
pipeline = (
PipelineBuilder.create()
.from_csv("data.csv", input_columns=["text"], output_columns=["result"])
.with_prompt("Process: {text}")
.with_llm(
provider="openai", # Use openai provider
model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
api_base="https://api.together.xyz/v1", # Custom endpoint
api_key=os.getenv("TOGETHER_API_KEY")
)
.build()
)
result = pipeline.execute()
Provider Examples¶
Together.AI¶
.with_llm(
provider="openai",
model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
api_base="https://api.together.xyz/v1",
api_key=os.getenv("TOGETHER_API_KEY")
)
vLLM (Self-Hosted)¶
.with_llm(
provider="openai",
model="meta-llama/Llama-2-7b-chat-hf",
api_base="http://localhost:8000/v1",
api_key="dummy" # vLLM doesn't require auth
)
Ollama (Local)¶
.with_llm(
provider="openai",
model="llama2",
api_base="http://localhost:11434/v1",
api_key="ollama" # Any non-empty string
)
Custom Endpoint¶
.with_llm(
provider="openai",
model="your-model-name",
api_base="https://your-api.example.com/v1",
api_key=os.getenv("YOUR_API_KEY")
)
Using LLMSpec (Advanced)¶
For more control, use LLMSpec:
from ondine.core.specifications import LLMSpec
custom_spec = LLMSpec(
provider="openai",
model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
api_base="https://api.together.xyz/v1",
api_key=os.getenv("TOGETHER_API_KEY"),
temperature=0.7,
max_tokens=1000,
# Pricing (optional, for cost tracking)
input_cost_per_million=0.20,
output_cost_per_million=0.20
)
pipeline = (
PipelineBuilder.create()
...
.with_llm_spec(custom_spec)
.build()
)
Requirements¶
The custom API must be OpenAI-compatible, supporting:
- /v1/chat/completions endpoint
- Standard OpenAI request/response format
- Bearer token authentication
Troubleshooting¶
Connection Errors¶
Check that the API endpoint is accessible:
curl -X POST https://api.example.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"test","messages":[{"role":"user","content":"test"}]}'
Authentication Errors¶
Verify your API key is correct and has proper permissions.
Model Not Found¶
Ensure the model name matches what the API expects.