Interaktív nézetek használata csevegési válaszokon belül
Nyisd meg a Complexity felületet, és az eszközválasztóban engedélyezd az Interactive view vagy a Markdown document lehetőséget. A kisebb interaktív elemek közvetlenül a válaszon belül jelennek meg streamelés közben. A rövid magyarázatokhoz, néhány értékhez, képletekhez vagy kis vezérlőkhöz nincs szükség oldalsávra.
Egy kért műszerfal vagy terjedelmesebb adatmegjelenítés használhatja az oldalsávot. Az előnézeti tartalom fokozatosan jelenik meg. A vezérlők addig letiltottak, amíg a rendszer nem érvényesíti a teljes kimenetet. A többi befejezett kimenet aktív maradhat a generálás alatt.
Egy befejezett nézet helyi interakciója nem indít modellhívást. Egy válasz tartalmazhat külön Markdown- és OpenUI-kimeneteket. Ahol a vezérlők elérhetők, a befejezett eredményeket áthelyezheted, rögzítheted vagy lecsatolhatod. A meglévő oldalsávos kimenetek nem váltanak automatikusan válaszon belüli elhelyezésre.
A válasz olvasása
Az inline OpenUI-nézetek, Markdown-dokumentumok és a szokásos megjelenítő toolok eredményei keret nélküli szakaszokként jelennek meg a válaszban. Az oldalsáv és a lecsatolt ablak eredményei megtartják a kártyáikat. A válaszszöveg és a megjelenített eredmények sorrendje változatlan.
A lezárt toolhívások a válasz fölötti, alapból összecsukott Toolhívások (Tool calls) összesítőben jelennek meg. Nyisd ki az egyes hívások megtekintéséhez. Sikertelen hívásnál az összesítő hibajelzést mutat. Az aktív hívások megtartják az állapotjelzésüket.
Ha a provider reasoning szöveget küld, a kész válasz ezt külön, kinyitható Következtetés (Reasoning) részben mutatja a végső válaszszöveg fölött. Nyisd ki a kapott szöveg elolvasásához. A reasoning külön marad a toolhívásoktól és a válaszszövegtől.
Az inline megjelenítés megtartja a nézet kanonikus forrását, revízióját, mentett mezőállapotát és elhelyezési vezérlőit. A szükséges jóváhagyások és jogosultság-ellenőrzések továbbra is érvényesek.
Native preview
Generálás közben a native preview megtartja a kész, statikus szakaszok elrendezését: szöveget, képleteket, táblákat, chartokat, safe SVG-t és a disclosure tartalmát. A kész nézetben az egymást követő disclosure elemek közös keretet kapnak egy függőleges containerben. Mindegyik megtartja a saját mentett nyitott állapotát.
A félkész szakaszok és a state-et vagy számítást igénylő értékek helyén placeholder marad. Az űrlapvezérlők üresen és letiltva jelennek meg, forrásbeli, alapértelmezett vagy mentett értékek nélkül. A tabok kiválasztott fül nélkül mutatják a címkéiket. Minden tabpanel és mindkét feltételes ág külön jelenik meg. Az ismétlődő tartalom egyetlen korlátozott sablont mutat az adatok beolvasása nélkül.
A preview tartalma inert. Nem menthet értéket, nem küldhet inputot, és nem indíthat host actiont. A mentett state betöltése ugyanezeket az üres vezérlőket és statikus elrendezést használja a hydration végéig.
Egyedi React-nézetek
Ha az adminisztrátor engedélyezi az opcionális runtime-ot, az Interactive view egyedi React-nézeteket is készíthet. Ezek a displayOpenUI 4-es verzióját használják. A native 1–3-as verziók továbbra is támogatottak.
A custom nézetek megtartják az inline, oldalsávos és lecsatolt ablakos elhelyezés vezérlőit. Generálás közben megjelenhet egy teljes backend preview. A vezérlői letiltottak maradnak a nézet befejezéséig és a mentett értékek betöltéséig. A félkész forrás nem fut a böngészőben.
Az elérhető elemek szöveges containerek, gombok, SVG-körök és korlátozott canvas. A canvas statikus körrajzoló parancsokat támogat, nem tetszőleges rajzoló scripteket vagy külső képeket. Csere vagy hiba közben az előző kész frame látható maradhat, letiltott vezérlőkkel.
60 másodperc után a custom session normál módon szünetel. A host az Ez az interaktív munkamenet véget ért. Az újbóli használathoz folytasd a nézetet. (This interactive session ended. Resume to interact again.) állapotot mutatja. Az utolsó kész kimenet olvasható marad, letiltott vezérlőkkel. Kattints az Interaktív nézet folytatása (Resume interactive view) gombra ugyanannak a revíziónak és a mentett, nem titkos értékeknek az újratöltéséhez. A lejárat nem újítja meg automatikusan a sessiont, és a lejárat utáni újracsatlakozás sem folytatja azt vagy indít modellválaszt.
Navigáció vagy újratöltés közben az oldal kéri a saját custom sessionjeinek lezárását. A böngésző általi befagyasztás előtt az oldal törli a secretbevitelt és a kitöltési státuszt. Ha a böngésző back-forward cache-éből térsz vissza, kattints az Interaktív nézet folytatása (Resume interactive view) gombra az újbóli használathoz. A lezárás best-effort keepalive kérést használ, ezért a böngésző leállása, hálózati hiba vagy késedelmes kézbesítés a 60 másodperces élettartam végéig fenntarthatja a workert. Az új oldal nem tud lezárni olyan workert, amelynek a sessionazonosítója még nem jutott el az előző oldalhoz. Ezért az újratöltés utáni azonnali elérhetőség nem garantált.
Elérhetetlen session esetén használd az Újrapróbálás (Try again) gombot. Ha egy másik ablak módosította a mentett értékeket, válaszd a Mentett értékek használata (Use saved values) lehetőséget. Ezek a vezérlők újratöltik a sessiont és a mentett state-et. Nem indítanak modellválaszt. A hoststátuszok és vezérlők a kiválasztott angol vagy magyar felületi nyelvet használják.
Csak deklarált, nem titkos értékek menthetők a nézet pontos revíziójához. Egy sikeres, kifejezett felhasználói interakció mentheti őket. A megnyitás, a preview, az újratöltés vagy az újracsatlakozás nem menti őket. A verzióellenőrzés elutasítja az ütköző írásokat. A mentett értékek nem kerülnek automatikusan a modell kontextusába.
Ha a runtime v2 elérhető, a deklarált secret mezők megbízható hostfelületen jelennek meg a generált nézeten kívül. A Megadottnak jelölés (Mark as provided) azonnal törli és eldobja a beírt értéket. A generált nézet csak egy nem ellenőrzött kitöltési boolean értéket kap. Ez nem tárol hitelesítő adatot, nem ellenőrzi azt, nem adja át fogyasztónak, és nem ad jogosultságot.
A secretbevitel legfeljebb 60 másodpercig él a sessionben. A lejárat törli a befejezetlen secretbevitelt és a kitöltési státuszt, a folytatás pedig minden kitöltési státuszt false értékkel indít. A zárolás, a bezárás vagy az újratöltés szintén törli a bevitelt és a kitöltési státuszt. Az aktív session újracsatlakozása minden kitöltési státuszt false értékkel indít. A runtime v1 és a nem támogatott sessionök az Ebben a nézetben nem lehet titkos adatot megadni. (Secret entry is unavailable for this view.) üzenetet mutatják. A custom guest gombjai nem hajthatnak végre Levél megnyitása (Open mail) vagy Piszkozat létrehozása (Create draft) műveletet.
A Markdown másolása (Copy Markdown) a befejezett custom forrást pontosan, tsx kódblokkban másolja. Finomításnál a teljes elkészült forrást adja hozzá. A másolás nem exportálja a mentett state-et. A native nézetek továbbra is openui blokkokat használnak.
Lásd a runtime setupját és a deployment követelményeit.
Canvas-eseménykoordináták
Custom forrásban az onClick és az onPointerDown handlerek a célhoz viszonyított logikai pixelekben kapják meg az {x, y} értékeket. Ezek nem 0..1 arányok vagy viewport-koordináták. A célméretek tartománya width=1..512 és height=1..256, az alapértelmezett méret pedig 512×256.
A host figyelembe veszi a CSS-méretezést:
x = (clientX - left) * width / CSSWidth
y = (clientY - top) * height / CSSHeight
Itt a left, a top, a CSSWidth és a CSSHeight a megjelenített céltéglalapot írja le. A host az x értéket 0..512, az y értéket pedig 0..256 közé korlátozza. Egy 256×128 CSS-pixelben megjelenített 512×256 méretű canvas például negyed szélességnél és magasságnál {x: 128, y: 64} értéket ad. A custom billentyűzet-handleren keresztüli aktiválás – beleértve a canvast és a nem native célokat – a cél középpontját adja át: {x: width / 2, y: height / 2}. A native onClick gombok a native kattintási koordináta-leképezést használják, amely gyakran {x: 0, y: 0}. Ne támaszkodj a native gombok koordinátáira a billentyűzetes aktiválás helyének meghatározásához.
Arányok számításához oszd el az event.x értéket a cél logikai szélességével, az event.y értéket pedig a logikai magasságával. Egy -10..10 tartományra leképezett, width={320} méretű csúszkához használd a Math.round(-10 + (event.x / 320) * 20) képletet. A 80-as x érték -5-öt ad. A 240-es x érték 5-öt ad.
Levelezési műveletek befejezett nézetből
A befejezett native és custom nézetek külön műveletsort mutathatnak, amelyet a megbízható host ad. A Levél megnyitása (Open mail) művelethez a megfelelő toolnak az eredeti válaszban engedélyezettnek és továbbra is kiválasztottnak kell lennie. Az aktuális műveleti engedélynek és postafiók-hozzáférésnek is engednie kell a műveletet. A tool kiválasztása nem ad jogosultságot. Lásd az eszközjogosultságokat.
Kattints a sorban a Levél megnyitása gombra, hogy az üzenet a szokásos levélolvasóban nyíljon meg. Ez nem indít újabb modell-döntési kört. A nézet megnyitása, az előzmények visszajátszása vagy az oldal újratöltése nem hajtja végre a műveletet, és nem nyitja meg az olvasót. A custom guest gombjai nem hajthatnak végre host actionöket.
Ha az eredmény ismeretlen, kattints a Művelet állapotának ellenőrzése (Check action status) gombra. Ez ugyanazt a műveleti szándékot ellenőrzi, új végrehajtás nélkül. Ismert, végleges failed vagy cancelled állapotú levélmegnyitásnál a Művelet újrapróbálása (Retry action) jelenik meg. Új próbálkozást csak újabb kifejezett kattintás indít. Az állapotellenőrzéshez és az újrapróbáláshoz is kell az aktuális jogosultság és postafiók-hozzáférés.
A Piszkozat létrehozása (Create draft) a kanonikus draft writert használja, ha a host felkínálja a műveletet, és az aktuális jogosultságok engedik. A szokásos sikeres mentés külön jóváhagyás nélkül megnyitja a mentett draftot. Egy ütköző vagy késve érkező javaslat külön hostoldali review-t igényelhet. A Javaslat alkalmazása (Apply proposal) vagy a Javaslat elvetése (Cancel proposal) gombot csak a javaslat áttekintése után használd. Az elvetés nem törli a meglévő draftot.
A nézet újratöltése vagy megnyitása egy másik fülön hitelesített recoveryvel kéri le a meglévő actionstátuszt. Nem futtatja újra a writert, és nem nyitja meg automatikusan a szerkesztőt. A verzióellenőrzések és a bizonytalan eredmények kezeléséhez lásd a piszkozat-ellenőrzést és helyreállítást.
Panel bezárása vagy visszahelyezése
A felhasználói beállításokban Az oldalpanel bezárásakor (Closing the side panel) beállítás két lehetőséget kínál:
| Lehetőség | Működés |
|---|---|
Nézetek visszahelyezése a chatbe (Return views to chat, alapértelmezett) | A panel bezárása visszahelyezi a generált interaktív nézeteket és Markdown-dokumentumokat a saját válaszaikba. |
Nézetek elrejtése (Hide views) | A panel bezárása elrejti a panelt, és megtartja a jelenlegi elhelyezést. |
A mobilos panel bezárása ugyanezt a beállítást követi. A Megjelenítés a chatben (Show in chat) közvetlenül visszahelyez egy generált nézetet, a bezárási beállítástól függetlenül. Használd a panelen vagy a nézet válaszbeli csatolmányán. Ehhez nem kell újranyitnod egy elrejtett panelt.
A nézet visszahelyezése csak az elhelyezést módosítja. Megtartja ugyanazt a választ, kimeneti revíziót, generált forrást és mentett mezőállapotot. Nem indítja újra a generálást. A többi paneles tool megtartja a saját elhelyezési működését.
Válasz másolása
A Markdown másolása (Copy Markdown) sorrendben lemásolja a válasz szövegét és a másolható megjelenített eredményeket. Egy befejezett, érvényesített native interaktív nézet a pontos kanonikus OpenUI-forrását is hozzáadja egy openui kódblokkban. Egy finomított nézet a teljes elkészült forrást adja hozzá, nem a patchet. A forrás változatlan marad a blokkon belül.
A panelen vagy lecsatolt ablakban lévő nézet a válaszbeli csatolmány pozíciójánál adja hozzá a forrását. Az előnézeti, sikertelen és leállított nézetek nem adnak hozzá befejezett forrásblokkot. A formázott másolás HTML-ként viszi át a megjelenített tartalmat. A sima szöveges változata a Markdownt és a forrást tartalmazza. A másolat nem tartalmazza a provider reasoning szövegét és a toolhívások állapotjelzéseit. A másolás nem menti a mezőállapotot vagy a panel elhelyezését.
Sikertelen vagy leállított nézetek
Az érvénytelen interaktív nézet Az interaktív nézet nem jeleníthető meg. (The interactive view could not be displayed.) üzenetet mutatja. A leállított nézet Az interaktív nézet a befejezés előtt leállt. (The interactive view stopped before it was complete.) üzenetet jeleníti meg. Ezek a tömör állapotjelzések helyettesítik a használhatatlan interaktív kártyát. Egy nézet hibája nem tiltja le a mellette lévő befejezett nézeteket.
Hibás, leállított vagy megszakított futásnál az Újrapróbálás (Retry) akkor jelenik meg, ha a megfelelő válasz elérhető. A művelethez chatjogosultság kell, és a gomb letiltott marad, amíg az alkalmazás foglalt. Az Újrapróbálás új választ indít. Nem alakítja át a részleges választ befejezett nézetté.
Ha a mentett értékek betöltése sikertelen, a nézet nem érhető el a betöltésig. Az állapotkezelés részleteit lásd a mentett nézetállapotnál.
További toolok és előzmények
A Table panel, a HTML panel, az Update plan és a MailGen-toolok saját jogosultságaik alatt érhetők el. A postafiók-toolokhoz a megfelelő kiválasztott postafiók és műveleti engedély kell. Lásd az eszközjogosultságokat.
A régi előzményekben a visszavont Weather, Artifact, Callout, Card, Key-value pairs, List, Table, Statistics, Timeline és JSON megjelenítő toolok olvashatók maradnak. A mentett toolbeállítások nem adnak jogot új végrehajtásra. Az előzmények továbbra is ellenőrzik az aktuális postafiók-, jogosultsági és csoportos engedélyeket.
Űrlapértékek újrafelhasználása előtt nézd meg a generált nézet viselkedését, a revíziókat és a bemenet közzétételét.