A free model endpoint is only trustworthy when you can separate server warm-up from model behavior.
The trap: free server options remove cost but add cold starts, route changes, and retries. A slow first response looks like a bad model. It may only be a cold instance.
Measure four fields:
- total request time
- response
model - request ID
- status code or retry pattern
Disclosure: This article was prepared as part of MonkeyCode's product outreach. MonkeyCode's free model access and free server option are useful here because they make cold starts visible without a credit card. The probe below works with any OpenAI-compatible endpoint.
Reproducible probe
import time
import requests
ENDPOINT = 'https://your-endpoint/v1/chat/completions'
API_KEY = 'your-key'
PAYLOAD = {
'model': 'model-you-chose',
'messages': [{'role': 'user', 'content': 'Return exactly: ok'}],
'max_tokens': 5,
}
def call(label):
t0 = time.monotonic()
r = requests.post(
ENDPOINT,
headers={'Authorization': f'Bearer {API_KEY}'},
json=PAYLOAD,
timeout=30,
)
r.raise_for_status()
total = time.monotonic() - t0
body = r.json()
model = body.get('model')
req_id = body.get('id') or r.headers.get('x-request-id')
text = body['choices'][0]['message']['content']
print(f'{label} total={total:.3f}s model={model} req={req_id} text={text!r}')
return total
# cold: idle gaps, expect possible start-up cost
for i in range(3):
call(f'cold-{i}')
time.sleep(20)
# warm: back-to-back, expect less variance
for i in range(5):
call(f'warm-{i}')
Read it
Build a small table:
| Sample | p50 | p95 |
|---|---|---|
| cold | 2.10s | 4.80s |
| warm | 0.65s | 1.10s |
Example numbers only. Your medians depend on region, model, and free-tier routing.
What to conclude:
- Different
modelacross calls: route drift, not model drift. - Same
model, differentreq_idpattern: possible retries or load balancer changes. - Cold p50 close to warm p50: endpoint is stable enough for quick eval.
- Cold p95 far from warm p95: do not compare model outputs from mixed samples.
Limitations
- Cold start is outside your control.
- A single day of measurements is not a guarantee.
- Network noise from your machine affects total time.
- Free tiers may throttle, queue, or route to different regions.
- This measures serving, not model quality.
Who should skip this
- You have a strict SLO or production workload.
- You only compare model quality and plan to call long-running jobs.
- You need stable latency over hours or days.
- You cannot tolerate rate limits or route changes.
If you run it, record p50 and p95 before trusting any eval.
Top comments (0)