Skip to main content
The April 2025 PolyAI Agent Studio release includes new tools for call review, debugging, and utility development. Expand the items for details:
Sidebar navigation
We have refined the sidebar layout to better group tools by function and clarify where key capabilities live. Think of this as a smart re-balancing of where things go and a review of section naming.

What’s new, renamed, or moved:

Analyze renamed to Manage
  • Assistant Analysis → New feature. See below for more details.
Build
  • Agent → Renamed from About.
  • Model Training → Moved here from Annotations, previously under Conversation Review.
  • Variant Management → Moved here from the Configure menu.
Voice
  • Agent Voice → Moved here from Configure (combines features previously under Voice and Rules)
  • Cache Management → Previously the Audio Management tab.
Configure
  • Environments and Project History → New sections, previously under Environment & Versions.

Why it matters

These adjustments make it easier to find what you need, reduce clutter, and prepare the platform for future capabilities.
You can now generate LLM-powered performance metrics in the PolyAI Agent Studio using the new Assistant Analysis flow. Define a custom prompt and category set, then run it across a batch of calls to generate insight-rich evaluations and visual summaries.call-batch-runHow it works:
  • Create a custom evaluation prompt, with categories and descriptions
  • Select a batch of calls via the Assistant Analysis feature.
  • Automatically assess agent performance across key custom criteria like tone, intent success, or compliance (or any other potential variables)
  • View results in a dedicated Assistant Analysis UI, with graphs showing how your calls measure up against each evaluation axis
Agent Studio now supports real-time collaboration and edit tracking across your team.
Multi-user refresh view demo

Multi-user refresh view in action

How it works:
  • See who else is editing a draft in real time.
  • Receive notifications when changes are saved by others.
  • Copy unsaved edits before refreshing to avoid overwriting.
  • View full change logs using the history panel.
You can now use an LLM to review and rate calls.assistant-analysisWhat you can do:
  • Rate calls for tone, intent success, or compliance
  • Use project-specific categories
  • Get automatic summaries
You can now filter conversations by workspace on the Conversations page.workspace-filterWhy it helps:
  • Focus on the calls your team is responsible for
  • Cleaner review experience for large orgs
This is an opt-in feature and will not be enabled by default. Contact PolyAI for access.
You can now extract structured address data from free-text input using a built-in LLM utility: extract_address().extract-address-utilWhat it does:
  • Parses the most recent user message for address info
  • Returns an Address object with fields like street, postcode, and country
  • Raises an ExtractionError if parsing fails
Usage:
try:
    address = conv.utils.extract_address(country="US")
    conv.state.parsed_address = address
except ExtractionError as e:
    conv.state.address_error = str(e)
Address object:
@dataclass
class Address:
    street_number: Optional[str]
    street_name: Optional[str]
    city: Optional[str]
    state: Optional[str]
    postcode: Optional[str]
    country: Optional[str]
Other details:
  • Calls an LLM, so may take a few seconds
  • You can optionally validate against a list of known addresses
  • Some fields may be missing depending on input quality
You can now access earlier conversation turns from within utility functions using conv.history.What it does:
  • Returns a list of events: user inputs, agent replies, function calls, etc.
  • Useful for writing context-aware logic
Usage:
def some_function(conv: Conversation):
    history = conv.history

    for event in history:
        print(event.to_dict())

    return {
        "utterance": "Here's a response that depends on previous turns.",
        "content": f"Conversation so far: {str(history)}"
    }
Why it matters:
  • Build logic based on what’s already happened in the conversation
  • Avoid passing state manually
  • Better debugging and flow control
You can now export and import variants between agents or environments.What you can do:
  • Export all variant data to CSV
  • Edit things like contact numbers or opening hours in bulk
  • Reimport to update the same or a different agent
Why it matters:
  • Makes it easy to scale across multiple sites
  • No need to rebuild variant logic from scratch
  • Keeps your CSVs in sync with other tools
See the full variant management page for advanced use cases like SMS personalisation or routing.
Reviewed conversations now show the variant ID used in each call.variant-idWhy it matters:
  • See exactly which variant was active
  • Easier to debug and compare different versions
  • Adds context for QA and bug tracking
The built-in handoff now supports handoff reasons and custom utterances, and you can now use a handoff() method directly inside functions.What you can do:
  • Specify a reason for the handoff (e.g. compliance, escalation, etc.)
  • Set a custom utterance to be spoken at handoff
  • Use handoff() programmatically inside a function.
Example usage:
    def escalate(conv: Conversation):
        return conv.call_handoff(
            reason="policy_violation",
            utterance="Let me transfer you to a specialist who can help."
        )
call-batch-runYou can now configure multiple TTS voices for your agent and distribute them across calls. Use percentage values adding up to 100% to distribute the likelihood of each agent answering a call.Why it matters:
  • A/B test different voices for performance or tone
  • Assign different voices to different intents or caller types
  • Create more natural, human-like team dynamics
What you can do:
  • Select and assign multiple voices
  • Preview how your agent sounds across scenarios
For help or feedback, reach out to your PolyAI representative.