GPTLiveModel: image input and backend-turn typed input parity with RealtimeModel
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- audio-video-rtc, backend-api-design
Direzione di ricerca
Start by comparing GPTLiveSession and GPTLiveModel with RealtimeModel's image-input path, then trace how RoomIO's text callback reaches GPTLiveSession._generate_reply. Read the linked Live delegation guide for the documented image and backend-turn inputs. Done means GPTLiveModel provides reliable image submission and an option to route typed text as a backend user turn; verify reconnect behavior and that commentary mode still works.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Feature Type
Would make my life easier
Feature Description
Use case. A voice agent in a live meeting where a participant shares their screen. The agent needs to (a) inspect a screenshot on demand and reason over it in the delegated backend, and (b) accept a typed message from a participant in the same session. GPT-Live's full-duplex voice with a delegated Responses backend is the right shape for this: the voice model stays responsive while the backend handles the screenshot and the task context. The two gaps below are what blocked it. Both are supported by OpenAI's protocol today (see the Live delegation guide); the plugin just has no application path to them.
GPTLiveModel (livekit-plugins-openai 1.8.1, delegation="responses") has no application path for two inputs that RealtimeModel handles natively:
-
Image input.
ImageContentin the chat context is not translated into a Responses backend input item; the renderer reads message text only. OpenAI's Live delegation guide documents this: with a vision-capable backend model the client queues "a supported Responses image input item withresponse.item.create". Today an app has to upload the file itself and callsend_eventdirectly, and becausesend_eventqueues locally and the plugin retains its outgoing queue across reconnects, the app cannot know whether the item reached the session it was authored for. Request:push_video/ImageContentsupport onGPTLiveSessionequivalent toRealtimeModel.push_video, or a documentedsubmit_backend_item()that returns a receipt bound to the current connection. -
Typed user turns.
RoomIO's default text callback callsgenerate_reply(user_input=...), whichGPTLiveSession._generate_replyturns intoappend_commentary(_ASK_TYPED ...)— an ask to the voice model to talk about the text — rather than a backend user turn. OpenAI's guide documents typed input as exactly this: aresponse.item.createwith amessageitem, roleuser, content{"type": "input_text", "text": ...}, followed byresponse.create"when ready to run or continue the backend". The plugin does not expose that path; it routes typed text to the voice model's commentary instead. Request: an option onGPTLiveModel(e.g.text_input="backend_turn" | "commentary") so apps do not have to reimplement turn admission and idle tracking against private event ordering.
Workarounds / Alternatives
We implemented both seams in-app (~1,100 lines: generation-lease bookkeeping, idle tracking on session.started / response.created / function_call, Files upload with expiry). It works but reimplements plugin-owned state and is fragile across reconnects (APIConnectOptions(max_retry=0) + max_session_duration=None to avoid queue replay). We have paused GPT-Live in our product until the plugin covers these.
Additional Context
Pinned: livekit-agents 1.8.1, livekit-plugins-openai 1.8.1, Python 3.12. Happy to share the fixture that reproduces queued-item replay across a reconnect.
- Lingua principale
- Python
- Stelle
- 14.6k
- Fork
- 3.9k
- Merge medio
- 2g 6h
- PR unite (30g)
- 153
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di livekit/agents
-
BM25SearchStrategy (the default) never matches underscore-joined terms in tool descriptions or param descriptionsForse già presa @BlueX888 l’ha presa 1 giorno fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
livekit/agents#7727 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Assistant markup is stripped from chat history when expressive mode is offForse già presa @ShivamSharma43 l’ha presa 4 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hostsForse di nuovo libera @AbarnaaSree l’ha presa 44 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
livekit/agents#7022 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Plugin] livekit-plugins-sherpa: local TTS on sherpa-onnx (Kokoro, Kitten, Piper)Forse già presa @mahimairaja l’ha presa 1 giorno fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di livekit/agents
Issue simili
-
Consolidate the now-identical CLI-native and composed tasks_packages guards (#5945 follow-up)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
spec-kitty/spec-kitty#6112 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter servedForse già presa @Mrun25 l’ha presa oggi. Apertabug llm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
BerriAI/litellm#46095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
uberdeveloper/fastbt#29 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
andrew-blake/melcloudhome#368 ·
I maintainer di solito rispondono entro 1 giorno
-
lane:discover
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SPARDiffData/differential-data-collection#33 ·
I maintainer di solito rispondono entro 1 giorno