Install & Configure
pip install portkey-ai openai purpleflea
from portkey_ai import Portkey
client = Portkey(
api_key="YOUR_PORTKEY_KEY",
virtual_key="OPENAI_VIRTUAL_KEY"
)
import purpleflea as pf
pf_client = pf.Client(api_key="YOUR_PF_KEY")
Add Guardrails for Trading
from portkey_ai import Portkey, Config, Guardrails
guardrails = Guardrails(
on_request=[
{
"id": "no-large-bets",
"type": "regex",
"config": {
"pattern": r'"size":\s*([5-9]\d+|\d{3,})',
"action": "block",
"message": "Position size too large, capped at 4"
}
}
]
)
config = Config(
provider="openai",
api_key="...",
guardrails=guardrails,
cache={"mode": "semantic"}
)
client = Portkey(config=config)
Observable Trading Agent
import json, purpleflea as pf
pf_client = pf.Client(api_key="YOUR_PF_KEY")
trading_tools = [
{"type": "function", "function": {
"name": "open_trade",
"description": "Open perpetual futures position",
"parameters": {
"type": "object",
"properties": {
"symbol": {"type": "string"},
"side": {"type": "string", "enum": ["long", "short"]},
"size": {"type": "number"},
"leverage": {"type": "integer"}
}, "required": ["symbol", "side", "size"]
}
}}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Trade BTC"}],
tools=trading_tools,
metadata={"agent_id": "trader-001", "session": "morning-run"}
)
for tc in response.choices[0].message.tool_calls or []:
args = json.loads(tc.function.arguments)
result = pf_client.trading.open_trade(**args)
print(f"Trade opened: {result['position_id']}")
Multi-Provider Fallback
from portkey_ai import Portkey, Config
config = Config(
strategy={"mode": "fallback"},
targets=[
{
"provider": "openai",
"virtual_key": "openai-vkey"
},
{
"provider": "anthropic",
"virtual_key": "claude-vkey"
},
{
"provider": "google",
"virtual_key": "gemini-vkey"
}
]
)
client = Portkey(api_key="pk-...", config=config)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Analyze BTC"}],
tools=trading_tools
)