diff --git a/fern/assets/styles.css b/fern/assets/styles.css index 605bd6104..c6439b79d 100644 --- a/fern/assets/styles.css +++ b/fern/assets/styles.css @@ -383,4 +383,48 @@ html.dark button[data-highlighted] .fern-api-property-meta { :is(.dark) .subscribe-form-message.error { color: #fca5a5; background-color: #7f1d1d; -} \ No newline at end of file +} + +/* GPT-Live illustrations follow the docs theme and use a compact drawing on phones. */ +.gpt-live-illustration { + max-width: 640px; + margin: 2rem auto; +} + +.gpt-live-illustration img { + display: none; + width: 100%; + height: auto; + margin: 0; +} + +.gpt-live-illustration .gpt-live-art-light { + display: block; +} + +.dark .gpt-live-illustration .gpt-live-art-light { + display: none; +} + +.dark .gpt-live-illustration .gpt-live-art-dark { + display: block; +} + +@media (max-width: 540px) { + .gpt-live-illustration .gpt-live-art-light, + .dark .gpt-live-illustration .gpt-live-art-dark { + display: none; + } + + .gpt-live-illustration .gpt-live-art-light-compact { + display: block; + } + + .dark .gpt-live-illustration .gpt-live-art-light-compact { + display: none; + } + + .dark .gpt-live-illustration .gpt-live-art-dark-compact { + display: block; + } +} diff --git a/fern/gpt-live/design.mdx b/fern/gpt-live/design.mdx index 0c135c119..e4aed8419 100644 --- a/fern/gpt-live/design.mdx +++ b/fern/gpt-live/design.mdx @@ -88,6 +88,13 @@ Start each piece of work as soon as its inputs are known, and use the conversati - A time can be chosen only after the open times are known. - A booking can be announced only after the booking tool confirms it. +
+ Stacked stones show the dependencies for booking: service, location and date support open times, a chosen time and caller agreement. The name can be gathered independently. + Stacked stones show the dependencies for booking: service, location and date support open times, a chosen time and caller agreement. The name can be gathered independently. + Stacked stones show the dependencies for booking: service, location and date support open times, a chosen time and caller agreement. The name can be gathered independently. + Stacked stones show the dependencies for booking: service, location and date support open times, a chosen time and caller agreement. The name can be gathered independently. +
+ The useful test for any question during a lookup is whether the outstanding work still answers the caller's need after they reply. In this example, the lookup tool returns every open time for the requested day and location. So if the caller says "afternoon, ideally after three" while that lookup runs, the result still covers it, and the assistant can filter. If the caller says "Actually, can we do Riverside instead?", the running lookup no longer answers the request, and a new one is needed. That's why the example lookup returns the whole day rather than taking a time-of-day argument. When you design your own tools, return enough to answer the likely follow-up questions without another round trip, as long as the result stays short. @@ -293,6 +300,13 @@ Existing squads and assistant handoffs aren't supported with GPT-Live. See [Migr The speaker hears the caller's voice, but the reasoner works from the transcript, and a transcript can contain mistakes. A name, reference number, or date that's slightly wrong in the transcript becomes a wrong tool argument. +
+ One spoken name branches into three possible spellings, with Siobhan highlighted. + One spoken name branches into three possible spellings, with Siobhan highlighted. + One spoken name branches into three possible spellings, with Siobhan highlighted. + One spoken name branches into three possible spellings, with Siobhan highlighted. +
+ For anything the task depends on, have the assistant read it back before acting: > **Caller:** It's under Siobhan. @@ -341,6 +355,13 @@ what they say. A consistent personality doesn't require a constant pace. +
+ A single voice moves through closely spaced waves into wider, more spacious rhythms. + A single voice moves through closely spaced waves into wider, more spacious rhythms. + A single voice moves through closely spaced waves into wider, more spacious rhythms. + A single voice moves through closely spaced waves into wider, more spacious rhythms. +
+ | Moment | Delivery to aim for | | --- | --- | | The caller knows what they want | Short questions and concise answers | diff --git a/fern/gpt-live/migrate.mdx b/fern/gpt-live/migrate.mdx index 01722eb78..07bf26ea5 100644 --- a/fern/gpt-live/migrate.mdx +++ b/fern/gpt-live/migrate.mdx @@ -74,6 +74,13 @@ You can also migrate by hand through the API: create a new assistant with the GP A classic assistant has one prompt that covers both how to talk and how to do the work. GPT-Live has two. The speaker prompt shapes the conversation and says when to delegate. The reasoner prompt holds the procedures and tool rules. Neither sees the other, so rules that affect both belong in both, worded for each role. +
+ Prompt instructions separate into speaker and reasoner bundles. One shared rule branches into both. + Prompt instructions separate into speaker and reasoner bundles. One shared rule branches into both. + Prompt instructions separate into speaker and reasoner bundles. One shared rule branches into both. + Prompt instructions separate into speaker and reasoner bundles. One shared rule branches into both. +
+ For example, a classic prompt for an appointment assistant at Example Service Studio, a fictional business, might read: ```text title="Before: one classic system prompt" diff --git a/fern/gpt-live/testing.mdx b/fern/gpt-live/testing.mdx index 820ec7f76..6d2dbbb65 100644 --- a/fern/gpt-live/testing.mdx +++ b/fern/gpt-live/testing.mdx @@ -100,6 +100,13 @@ Callers notice two kinds of delay, and they have different causes: Measure them separately. The call's messages and your service's logs have timestamps for delegations and tool calls, and the recording shows when the caller heard each part. +
+ Two intervals begin at the same moment: a short interval to the first reply and a longer interval to the result. + Two intervals begin at the same moment: a short interval to the first reply and a longer interval to the result. + Two intervals begin at the same moment: a short interval to the first reply and a longer interval to the result. + Two intervals begin at the same moment: a short interval to the first reply and a longer interval to the result. +
+ When the task takes too long, try these, one at a time, and check that the outcome is still correct after each change: | Cause | What to try | diff --git a/fern/gpt-live/tools.mdx b/fern/gpt-live/tools.mdx index 87e25df3f..ec5d5f07e 100644 --- a/fern/gpt-live/tools.mdx +++ b/fern/gpt-live/tools.mdx @@ -30,6 +30,13 @@ A tool's inputs and results shape the conversation as much as the prompts do. **Return enough to answer the likely follow-up.** The example lookup takes a service, location, and date, and returns every open time for that day. If the caller adds "ideally after three" while it runs, the result still answers the request, and the assistant can filter it without another lookup. A different day or location changes the request, so it needs a new lookup. Keep results short even when they're complete. +
+ Available times are 10:30 AM, 2:30 PM and 4:00 PM. The after-3-PM region highlights 4:00 PM within the same result. + Available times are 10:30 AM, 2:30 PM and 4:00 PM. The after-3-PM region highlights 4:00 PM within the same result. + Available times are 10:30 AM, 2:30 PM and 4:00 PM. The after-3-PM region highlights 4:00 PM within the same result. + Available times are 10:30 AM, 2:30 PM and 4:00 PM. The after-3-PM region highlights 4:00 PM within the same result. +
+ **Echo the request details.** Include the date and location in each result. When the caller changes their mind during a lookup, the earlier result may still come back, and the details make it easy to recognize as out of date. **Say what didn't happen, as well as what did.** "Availability only. Nothing has been booked" helps the assistant avoid overstating a lookup. diff --git a/fern/static/images/gpt-live/dependency-cairn-dark-compact.svg b/fern/static/images/gpt-live/dependency-cairn-dark-compact.svg new file mode 100644 index 000000000..8f395c868 --- /dev/null +++ b/fern/static/images/gpt-live/dependency-cairn-dark-compact.svg @@ -0,0 +1 @@ +Appointment dependencies as a stack of stonesConceptual illustration. Stones drawn with fine contour hatching. Three base stones labelled service, location and date support a long flat stone labelled open times, which supports a stone labelled chosen time. A small stone labelled caller's yes sits on the chosen time. To the right, a standing stone labelled name rises from the ground on its own. A mint capstone labelled booking rests across the caller's yes and the name, so the booking needs a time from the lookup, the caller's agreement and the name, while the name never depended on the lookup.open timeschosen timecaller’s yesbookingservicelocationdatename diff --git a/fern/static/images/gpt-live/dependency-cairn-dark.svg b/fern/static/images/gpt-live/dependency-cairn-dark.svg new file mode 100644 index 000000000..81238fe8c --- /dev/null +++ b/fern/static/images/gpt-live/dependency-cairn-dark.svg @@ -0,0 +1 @@ +Appointment dependencies as a stack of stonesConceptual illustration. Stones drawn with fine contour hatching. Three base stones labelled service, location and date support a long flat stone labelled open times, which supports a stone labelled chosen time. A small stone labelled caller's yes sits on the chosen time. To the right, a standing stone labelled name rises from the ground on its own. A mint capstone labelled booking rests across the caller's yes and the name, so the booking needs a time from the lookup, the caller's agreement and the name, while the name never depended on the lookup.open timeschosen timecaller’s yesbookingservicelocationdatename diff --git a/fern/static/images/gpt-live/dependency-cairn-light-compact.svg b/fern/static/images/gpt-live/dependency-cairn-light-compact.svg new file mode 100644 index 000000000..76d2ed6ca --- /dev/null +++ b/fern/static/images/gpt-live/dependency-cairn-light-compact.svg @@ -0,0 +1 @@ +Appointment dependencies as a stack of stonesConceptual illustration. Stones drawn with fine contour hatching. Three base stones labelled service, location and date support a long flat stone labelled open times, which supports a stone labelled chosen time. A small stone labelled caller's yes sits on the chosen time. To the right, a standing stone labelled name rises from the ground on its own. A mint capstone labelled booking rests across the caller's yes and the name, so the booking needs a time from the lookup, the caller's agreement and the name, while the name never depended on the lookup.open timeschosen timecaller’s yesbookingservicelocationdatename diff --git a/fern/static/images/gpt-live/dependency-cairn-light.svg b/fern/static/images/gpt-live/dependency-cairn-light.svg new file mode 100644 index 000000000..532e36cd8 --- /dev/null +++ b/fern/static/images/gpt-live/dependency-cairn-light.svg @@ -0,0 +1 @@ +Appointment dependencies as a stack of stonesConceptual illustration. Stones drawn with fine contour hatching. Three base stones labelled service, location and date support a long flat stone labelled open times, which supports a stone labelled chosen time. A small stone labelled caller's yes sits on the chosen time. To the right, a standing stone labelled name rises from the ground on its own. A mint capstone labelled booking rests across the caller's yes and the name, so the booking needs a time from the lookup, the caller's agreement and the name, while the name never depended on the lookup.open timeschosen timecaller’s yesbookingservicelocationdatename diff --git a/fern/static/images/gpt-live/name-prism-dark-compact.svg b/fern/static/images/gpt-live/name-prism-dark-compact.svg new file mode 100644 index 000000000..7f43e7918 --- /dev/null +++ b/fern/static/images/gpt-live/name-prism-dark-compact.svg @@ -0,0 +1 @@ +A spoken name splitting into several spellings through a prismConceptual illustration. A short spoken wave travels into a glass prism drawn in fine lines with a faint lavender tint. Three rays leave the far side, ending at the spellings Shivaun, Siobhan and Chevonne. Soft lavender, mint and blue light gathers where they exit. The ray to Siobhan is mint; the other two rays are grey.ShivaunSiobhanChevonne diff --git a/fern/static/images/gpt-live/name-prism-dark.svg b/fern/static/images/gpt-live/name-prism-dark.svg new file mode 100644 index 000000000..a45a8eca4 --- /dev/null +++ b/fern/static/images/gpt-live/name-prism-dark.svg @@ -0,0 +1 @@ +A spoken name splitting into several spellings through a prismConceptual illustration. A short spoken wave travels into a glass prism drawn in fine lines with a faint lavender tint. Three rays leave the far side, ending at the spellings Shivaun, Siobhan and Chevonne. Soft lavender, mint and blue light gathers where they exit. The ray to Siobhan is mint; the other two rays are grey.ShivaunSiobhanChevonne diff --git a/fern/static/images/gpt-live/name-prism-light-compact.svg b/fern/static/images/gpt-live/name-prism-light-compact.svg new file mode 100644 index 000000000..4c8a88f21 --- /dev/null +++ b/fern/static/images/gpt-live/name-prism-light-compact.svg @@ -0,0 +1 @@ +A spoken name splitting into several spellings through a prismConceptual illustration. A short spoken wave travels into a glass prism drawn in fine lines with a faint lavender tint. Three rays leave the far side, ending at the spellings Shivaun, Siobhan and Chevonne. Soft lavender, mint and blue light gathers where they exit. The ray to Siobhan is mint; the other two rays are grey.ShivaunSiobhanChevonne diff --git a/fern/static/images/gpt-live/name-prism-light.svg b/fern/static/images/gpt-live/name-prism-light.svg new file mode 100644 index 000000000..97d232ff4 --- /dev/null +++ b/fern/static/images/gpt-live/name-prism-light.svg @@ -0,0 +1 @@ +A spoken name splitting into several spellings through a prismConceptual illustration. A short spoken wave travels into a glass prism drawn in fine lines with a faint lavender tint. Three rays leave the far side, ending at the spellings Shivaun, Siobhan and Chevonne. Soft lavender, mint and blue light gathers where they exit. The ray to Siobhan is mint; the other two rays are grey.ShivaunSiobhanChevonne diff --git a/fern/static/images/gpt-live/pacing-dunes-dark-compact.svg b/fern/static/images/gpt-live/pacing-dunes-dark-compact.svg new file mode 100644 index 000000000..40716093a --- /dev/null +++ b/fern/static/images/gpt-live/pacing-dunes-dark-compact.svg @@ -0,0 +1 @@ +Dune ridges whose rhythm loosens from quick to unhurriedConceptual illustration. Thirteen fine ridge lines stacked in perspective like dunes, paler in the distance. On the left the ridges ripple tightly; towards the right they stretch into long, open swells. The line weight never changes. One ridge is mint, running through both rhythms. diff --git a/fern/static/images/gpt-live/pacing-dunes-dark.svg b/fern/static/images/gpt-live/pacing-dunes-dark.svg new file mode 100644 index 000000000..30ae0706c --- /dev/null +++ b/fern/static/images/gpt-live/pacing-dunes-dark.svg @@ -0,0 +1 @@ +Dune ridges whose rhythm loosens from quick to unhurriedConceptual illustration. Thirteen fine ridge lines stacked in perspective like dunes, paler in the distance. On the left the ridges ripple tightly; towards the right they stretch into long, open swells. The line weight never changes. One ridge is mint, running through both rhythms. diff --git a/fern/static/images/gpt-live/pacing-dunes-light-compact.svg b/fern/static/images/gpt-live/pacing-dunes-light-compact.svg new file mode 100644 index 000000000..417841951 --- /dev/null +++ b/fern/static/images/gpt-live/pacing-dunes-light-compact.svg @@ -0,0 +1 @@ +Dune ridges whose rhythm loosens from quick to unhurriedConceptual illustration. Thirteen fine ridge lines stacked in perspective like dunes, paler in the distance. On the left the ridges ripple tightly; towards the right they stretch into long, open swells. The line weight never changes. One ridge is mint, running through both rhythms. diff --git a/fern/static/images/gpt-live/pacing-dunes-light.svg b/fern/static/images/gpt-live/pacing-dunes-light.svg new file mode 100644 index 000000000..b4206ddb7 --- /dev/null +++ b/fern/static/images/gpt-live/pacing-dunes-light.svg @@ -0,0 +1 @@ +Dune ridges whose rhythm loosens from quick to unhurriedConceptual illustration. Thirteen fine ridge lines stacked in perspective like dunes, paler in the distance. On the left the ridges ripple tightly; towards the right they stretch into long, open swells. The line weight never changes. One ridge is mint, running through both rhythms. diff --git a/fern/static/images/gpt-live/split-prompt-dark-compact.svg b/fern/static/images/gpt-live/split-prompt-dark-compact.svg new file mode 100644 index 000000000..82226a6f8 --- /dev/null +++ b/fern/static/images/gpt-live/split-prompt-dark-compact.svg @@ -0,0 +1 @@ +One classic prompt splitting into speaker and reasoner instructionsConceptual illustration. A bundle of ten parallel lines, one for each sentence of the example classic system prompt, runs in from the left. Midway, the lines cross and sort themselves into two bundles, labelled Speaker at the top right and Reasoner at the bottom right. A single mint line, the rule never to say a booking is done before the tool confirms it, forks in two and appears in both bundles.SpeakerReasoner diff --git a/fern/static/images/gpt-live/split-prompt-dark.svg b/fern/static/images/gpt-live/split-prompt-dark.svg new file mode 100644 index 000000000..a89392386 --- /dev/null +++ b/fern/static/images/gpt-live/split-prompt-dark.svg @@ -0,0 +1 @@ +One classic prompt splitting into speaker and reasoner instructionsConceptual illustration. A bundle of ten parallel lines, one for each sentence of the example classic system prompt, runs in from the left. Midway, the lines cross and sort themselves into two bundles, labelled Speaker at the top right and Reasoner at the bottom right. A single mint line, the rule never to say a booking is done before the tool confirms it, forks in two and appears in both bundles.SpeakerReasoner diff --git a/fern/static/images/gpt-live/split-prompt-light-compact.svg b/fern/static/images/gpt-live/split-prompt-light-compact.svg new file mode 100644 index 000000000..a0969ef10 --- /dev/null +++ b/fern/static/images/gpt-live/split-prompt-light-compact.svg @@ -0,0 +1 @@ +One classic prompt splitting into speaker and reasoner instructionsConceptual illustration. A bundle of ten parallel lines, one for each sentence of the example classic system prompt, runs in from the left. Midway, the lines cross and sort themselves into two bundles, labelled Speaker at the top right and Reasoner at the bottom right. A single mint line, the rule never to say a booking is done before the tool confirms it, forks in two and appears in both bundles.SpeakerReasoner diff --git a/fern/static/images/gpt-live/split-prompt-light.svg b/fern/static/images/gpt-live/split-prompt-light.svg new file mode 100644 index 000000000..b78a75f04 --- /dev/null +++ b/fern/static/images/gpt-live/split-prompt-light.svg @@ -0,0 +1 @@ +One classic prompt splitting into speaker and reasoner instructionsConceptual illustration. A bundle of ten parallel lines, one for each sentence of the example classic system prompt, runs in from the left. Midway, the lines cross and sort themselves into two bundles, labelled Speaker at the top right and Reasoner at the bottom right. A single mint line, the rule never to say a booking is done before the tool confirms it, forks in two and appears in both bundles.SpeakerReasoner diff --git a/fern/static/images/gpt-live/two-delays-dark-compact.svg b/fern/static/images/gpt-live/two-delays-dark-compact.svg new file mode 100644 index 000000000..8b4889f94 --- /dev/null +++ b/fern/static/images/gpt-live/two-delays-dark-compact.svg @@ -0,0 +1 @@ +Two delays measured from the same moment in a callConceptual illustration, not measured data. A call drawn as speech on a line. From the end of the caller's request, a short low arc lands on the assistant's first reply, and a long high mint arc lands much later on the reply with the result. Beneath the line, two dimension lines start at the same point: the short one is labelled first reply, the long one result.first replyresult diff --git a/fern/static/images/gpt-live/two-delays-dark.svg b/fern/static/images/gpt-live/two-delays-dark.svg new file mode 100644 index 000000000..83db98c25 --- /dev/null +++ b/fern/static/images/gpt-live/two-delays-dark.svg @@ -0,0 +1 @@ +Two delays measured from the same moment in a callConceptual illustration, not measured data. A call drawn as speech on a line. From the end of the caller's request, a short low arc lands on the assistant's first reply, and a long high mint arc lands much later on the reply with the result. Beneath the line, two dimension lines start at the same point: the short one is labelled first reply, the long one result.first replyresult diff --git a/fern/static/images/gpt-live/two-delays-light-compact.svg b/fern/static/images/gpt-live/two-delays-light-compact.svg new file mode 100644 index 000000000..0f2d0c06e --- /dev/null +++ b/fern/static/images/gpt-live/two-delays-light-compact.svg @@ -0,0 +1 @@ +Two delays measured from the same moment in a callConceptual illustration, not measured data. A call drawn as speech on a line. From the end of the caller's request, a short low arc lands on the assistant's first reply, and a long high mint arc lands much later on the reply with the result. Beneath the line, two dimension lines start at the same point: the short one is labelled first reply, the long one result.first replyresult diff --git a/fern/static/images/gpt-live/two-delays-light.svg b/fern/static/images/gpt-live/two-delays-light.svg new file mode 100644 index 000000000..4a6ff46a5 --- /dev/null +++ b/fern/static/images/gpt-live/two-delays-light.svg @@ -0,0 +1 @@ +Two delays measured from the same moment in a callConceptual illustration, not measured data. A call drawn as speech on a line. From the end of the caller's request, a short low arc lands on the assistant's first reply, and a long high mint arc lands much later on the reply with the result. Beneath the line, two dimension lines start at the same point: the short one is labelled first reply, the long one result.first replyresult diff --git a/fern/static/images/gpt-live/whole-day-dark-compact.svg b/fern/static/images/gpt-live/whole-day-dark-compact.svg new file mode 100644 index 000000000..6a96d1f35 --- /dev/null +++ b/fern/static/images/gpt-live/whole-day-dark-compact.svg @@ -0,0 +1 @@ +Three returned times on one day line, with 4:00 PM inside an after-3-PM preferenceConceptual illustration using the open times from the docs example. A horizontal line for one day, with faint hour ticks, holds three dots labelled 10:30 AM, 2:30 PM and 4:00 PM. A faint curve beneath gathers the three as one result. From 3 PM to the end of the day, a soft mint light rises from the line, labelled after 3 PM. Only the 4:00 PM dot lies inside it, ringed in mint.10:30 AM2:30 PM4:00 PMafter 3 PM diff --git a/fern/static/images/gpt-live/whole-day-dark.svg b/fern/static/images/gpt-live/whole-day-dark.svg new file mode 100644 index 000000000..7ce0cc780 --- /dev/null +++ b/fern/static/images/gpt-live/whole-day-dark.svg @@ -0,0 +1 @@ +Three returned times on one day line, with 4:00 PM inside an after-3-PM preferenceConceptual illustration using the open times from the docs example. A horizontal line for one day, with faint hour ticks, holds three dots labelled 10:30 AM, 2:30 PM and 4:00 PM. A faint curve beneath gathers the three as one result. From 3 PM to the end of the day, a soft mint light rises from the line, labelled after 3 PM. Only the 4:00 PM dot lies inside it, ringed in mint.10:30 AM2:30 PM4:00 PMafter 3 PM diff --git a/fern/static/images/gpt-live/whole-day-light-compact.svg b/fern/static/images/gpt-live/whole-day-light-compact.svg new file mode 100644 index 000000000..b26d02604 --- /dev/null +++ b/fern/static/images/gpt-live/whole-day-light-compact.svg @@ -0,0 +1 @@ +Three returned times on one day line, with 4:00 PM inside an after-3-PM preferenceConceptual illustration using the open times from the docs example. A horizontal line for one day, with faint hour ticks, holds three dots labelled 10:30 AM, 2:30 PM and 4:00 PM. A faint curve beneath gathers the three as one result. From 3 PM to the end of the day, a soft mint light rises from the line, labelled after 3 PM. Only the 4:00 PM dot lies inside it, ringed in mint.10:30 AM2:30 PM4:00 PMafter 3 PM diff --git a/fern/static/images/gpt-live/whole-day-light.svg b/fern/static/images/gpt-live/whole-day-light.svg new file mode 100644 index 000000000..c9ddf1ef7 --- /dev/null +++ b/fern/static/images/gpt-live/whole-day-light.svg @@ -0,0 +1 @@ +Three returned times on one day line, with 4:00 PM inside an after-3-PM preferenceConceptual illustration using the open times from the docs example. A horizontal line for one day, with faint hour ticks, holds three dots labelled 10:30 AM, 2:30 PM and 4:00 PM. A faint curve beneath gathers the three as one result. From 3 PM to the end of the day, a soft mint light rises from the line, labelled after 3 PM. Only the 4:00 PM dot lies inside it, ringed in mint.10:30 AM2:30 PM4:00 PMafter 3 PM