docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hosts
Maintainers usually reply within 1 day
@AbarnaaSree is already working on this.
Since Aug 29, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- python, typescript
- Domain
- documentation
Research direction
Start with the OpenAI-compatible LLM docs at https://docs.livekit.io/agents/models/llm/openai-compatible-llms/ and compare the existing custom base_url guidance with the Chat Completions and Responses helpers. Clarify that generic HTTP OpenAI-compatible hosts should use openai.LLM(), while openai.responses.LLM() is WebSocket-oriented; the existing Python and Node examples show the relevant constructors. Done when readers can tell which class to choose without mistaking HTTP /v1/responses for the LiveKit Responses WebSocket path.
Written by the indexing model from the issue text.
Description
Feature Type
Would make my life easier
Feature Description
LiveKit docs already cover custom base_url on openai.LLM() (Chat Completions). The trap is using openai.responses.LLM() against a host that only speaks HTTP Chat Completions / HTTP POST /v1/responses. The Responses helper is WebSocket-oriented and is the wrong class for a generic OpenAI-compat inference API.
PZERO is a live Chat Completions host (POST /v1/chat/completions). Public catalog: GET https://api.pzero.studio/v1/models. Default text id: deepseek-v4-flash. Prepaid Bearer key (pzero_…). Use chat openai.LLM(), not openai.responses.LLM(). Do not point STT or TTS at this host.
from livekit.plugins import openai
llm = openai.LLM(
model="deepseek-v4-flash",
base_url="https://api.pzero.studio/v1",
api_key="pzero_…",
)
Node:
import * as openai from '@livekit/agents-plugin-openai';
const llm = new openai.LLM({
model: 'deepseek-v4-flash',
baseURL: 'https://api.pzero.studio/v1',
apiKey: 'pzero_…',
});
Docs: https://docs.livekit.io/agents/models/llm/openai-compatible-llms/
No first-party with_pzero() helper asked.
Workarounds / Alternatives
The generic openai.LLM({ base_url }) constructor already works. This issue is the class-choice gotcha vs openai.responses.LLM().
Additional Context
PZERO POST /v1/responses exists over HTTP (401 without a key, not 404). That is not the LiveKit Responses WebSocket path.
- Dominant language
- Python
- Stars
- 14.6k
- Forks
- 3.9k
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 159
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from livekit/agents
-
Gemini Live: agent stays "speaking" without audio outputPossibly taken @Luke-salinero claimed this 3 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Assistant markup is stripped from chat history when expressive mode is offPossibly taken @ShivamSharma43 claimed this 11 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
krisp VIVA: native filter is built on the event loop on the first audio frame (200-800 ms block)Open
Difficulty 4/5 3-5 days Newbie friendliness 45/100
Maintainers usually reply within 1 day
-
SpeakingRateStream blocks event loop 100–200ms on TTS audio bursts (TranscriptSynchronizer)Possibly taken @ninglinLiu claimed this 1 day ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 20/100
Maintainers usually reply within 1 day
-
Gemini Live: updates inside a tool miss its replyPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
mohitmishra786/readprism#322 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
API-key credentials accept a blank key: empty via the API, spaces-only via the builder's Add API key dialogPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Significant-Gravitas/AutoGPT#15727 ·
Maintainers usually reply within 1 day