Skip to content

Chat (LLM)

Text-based conversation. Speaks the OpenAI chat/completions format directly — send a messages list, get a role-tagged response.

Available models

ModelUse forNote
verinova (recommended, fast)Telephony, IVR, short chatgpt-oss-20b Q8, reasoning off — replies snap back instantly
verinova-largeReports, analysis, docsQwen3-30B-A3B-Instruct Q8, reasoning on — step-by-step, richer answers
gpt-4oVia OpenAIIf an OpenAI-keyed channel exists
claude-3-5-sonnetVia AnthropicIf an Anthropic-keyed channel exists

Which one?

  • Latency-critical (telephony, real-time chat): verinova
  • Quality-critical (reports, PRDs, multi-step reasoning): verinova-large

curl

bash
curl https://app.qevron.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "verinova",
    "messages": [
      {"role": "system", "content": "Be concise."},
      {"role": "user",   "content": "What is 1 + 1?"}
    ]
  }'

Python (openai SDK)

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://app.qevron.ai/v1",
)

resp = client.chat.completions.create(
    model="verinova",
    messages=[
        {"role": "system", "content": "Be concise."},
        {"role": "user",   "content": "Write me a limerick"},
    ],
)
print(resp.choices[0].message.content)

Streaming

Add "stream": true — the server sends Server-Sent Events with partial chunks:

python
for chunk in client.chat.completions.create(
    model="verinova",
    messages=[{"role": "user", "content": "..."}],
    stream=True,
):
    print(chunk.choices[0].delta.content or "", end="", flush=True)

reasoning_effort (verinova-large)

Qwen3 30B by default emits <think>...</think> blocks with its internal reasoning. To suppress them and keep only the final answer:

json
{
  "model": "verinova-large",
  "messages": [...],
  "chat_template_kwargs": {"reasoning_effort": "none"}
}

Telephony?

Don't use verinova-large in CalleKit — response latency balloons. CalleKit hits verinova and reasoning is already off at the channel level.

Troubleshooting

  • "model not found" → match the table spelling exactly. Case-sensitive.
  • "connection refused" → the underlying channel may be down. Check the /capabilities page in the admin UI.
  • Response too slowverinova-large is naturally ~3–5× slower than verinova. First try streaming (stream:true), then cap max_tokens: 256–512.

Next: RAG: embedding + rerank · First chatbot

Qevron — AI gateway. Arpanet / OpenAI / Anthropic / Gemini compatible.