Agent - the Complete Dialogue System¶
Agent.py - wrapper for all components required in a dialogue system¶
Copyright CUED Dialogue Systems Group 2015 - 2017
- Contains 3 classes::
- DialogueAgent, AgentFactoy, CallValidator
See also
CUED Imports/Dependencies:
import utils.Settings
import utils.ContextLogger
import utils.DiaAct.DiaAct
import utils.DiaAct.DiaActWithProb
import semo.SemOManager
import semanticbelieftracking.SemanticBeliefTrackingManager
import policy.PolicyManager
import evaluation.EvaluationManager
import topictracking.TopicTracking
import ontology.Ontology
-
class
Agent.
AgentFactory
(hub_id='dialogueserver')¶ Based on the config (Settings.config) - a primary agent (called Smith) is created. This agent can be duplicated as required by concurrent traffic into the dialogue server. Duplicated agents are killed at end of their calls if more agents are running than a specified minimum (MAX_AGENTS_RUNNING)
-
agent2session
(agent_id)¶ Gets str describing session_id agent is currently on
Parameters: agent_id (string) – agent id Returns: string – the session id
-
continue_call
(agent_id, asr_info, domainString=None)¶ wrapper for continue_call for the specific Agent() instance identified by agent_id
Parameters: - agent_id (string) – agent id
- asr_info (list) – information fetched from the asr
- domainString (string) – domain name
Returns: string – the system’s response
-
end_call
(agent_id=None, session_id=None, noTraining=False)¶ - Can pass session_id or agent_id as we use this in cases
- normally ending a dialogue, (via agent_id)
- cleaning a hung up call (via session_id)
Parameters: - agent_id (string) – agent id
- session_id (string) – session_id
Returns: None
-
init_agents
(hub_id)¶ Creates the first agent. All other agents created within the factory will be deep copies of this agent.
Parameters: hub_id (string) – hub id Returns: None
-
kill_agent
(agent_id)¶ Delete an agent if the total agent number is bigger than self.MAX_AGENTS_RUNNING.
Parameters: agent_id (string) – agent id Returns: None
-
new_agent
()¶ Creates a new agent to handle some concurrency. Here deepcopy is used to creat clean copy rather than referencing, leaving it in a clean state to commence a new call.
Returns: string – the agent id
-
power_down_factory
()¶ Finalise agents, print the evaluation summary and save the policy we close dialogue server.
Returns: None
-
query_ENDING_DIALOG
(agent_id)¶ Wrapper for specific Agent.ENDING_DIALOG() – with some basic initial checks.
Parameters: agent_id (string) – agent id Returns: bool – whether to end the dialogue or not
-
retrieve_agent
(session_id)¶ Returns str describing agent_id.
Parameters: session_id (string) – session_id Returns: string – the agent id
-
start_call
(session_id, start_domain=None)¶ Locates an agent to take this call and uses that agents start_call method.
Parameters: - session_id (string) – session_id
- start_domain (str) – used by DialPort/external topictracking with DialogueServer to hand control to certain domain
Returns: start_call() function of agent object, string – the selected agent, agent id
-
-
class
Agent.
CallValidator
¶ Used to validate calls, e.g., when using PyDial within user experiments.
Calls may be validated after a minimum of length in seconds or turns or if the system offers a venue. The flag isTrainable may be used to distinguish between dialogues whose formal conditions for validity are fulfilled but who will introduce to much noise in the training process, e.g., if you allow for users to regularly abort the dialogue after 2 minutes but only want to use the dialogue for training if a minimum of 3 turns have carried out.
-
check_if_user_bye
(obs)¶ Checks using a regular expression heuristic if the user said good bye. In accordance with C++ system, prob of respective n-best entry must be > 0.85.
-
-
class
Agent.
DialogueAgent
(agent_id='Smith', hub_id='dialogueserver')¶ Contains all components required for multi domain dialogue: {topic tracking, semi belief tracking, policy, semo} - each of these components is a manager for that ability for all domains. - DialogueAgent() controls the flow of calls/information passing between all of these components in order to execute a dialog
-
continue_call
(asr_info, domainString=None, domainSimulatedUsers=None)¶ Works through topictracking > semi belief > policy > semo > evaluation – for turns > 0
Input consists of a n-best list of either ASR hypotheses (with confidence) or (mostly only in case of simulation) pre-interpreted DiaActWithProb objects.
Parameters: - asr_info (list of string or DiaActWithProb objects) – information fetched from the asr
- domainString (string) – domain name
- domainSimulatedUsers (dict) – simulated users in different domains
Returns: DiaAct – the system’s reponse dialogue act with verbalization
-
end_call
(domainSimulatedUsers=None, noTraining=False)¶ Performs end of dialog clean up: policy learning, policy saving and housecleaning. The NoTraining parameter is used in case of an abort of the dialogue where you still want to gracefully end it, e.g., if the dialogue server receives a clean request.
Parameters: - domainSimulatedUsers (dict) – simulated users in different domains
- noTraining (bool) – train the policy when ending dialogue
Returns: None
-
restart_agent
(session_id, maxNumTurnsScaling=1.0, start_domain=None)¶ Restart the agnet
Parameters: - session_id (str) – unique session identifier for the dialogue
- maxNumTurnsScaling (float) – controls the variable number of turns allowed for the dialog, based on how many domains are involved (used only for simulate)
- start_domain (str) – used by DialPort/external topictracking with DialogueServer to hand control to certain domain
Returns: None
-
retrieve_last_sys_act
(domainString=None)¶ Retreives the sys act from domain domainString if a domain switch has occurred
Parameters: domainString (string) – domain name Returns: string – the system’s dialogue act reponse
-
start_call
(session_id, domainSimulatedUsers=None, maxNumTurnsScaling=1.0, start_domain=None)¶ Start a new call with the agent. Works through policy > semo – for turn 0 Start domain is used if external topic tracking is used.
Input consists of a n-best list of either ASR hypotheses (with confidence) or (mostly only in case of simulation) pre-interpreted DiaActWithProb objects.
Parameters: - session_id (string) – session id
- domainSimulatedUsers (dict) – simulated users in different domains
- maxNumTurnsScaling (float) – controls the variable turn numbers allowed in a dialog, based on how many domains are involved (used only for simulate)
- start_domain (str) – used by DialPort/external topictracking with DialogueServer to hand control to certain domain
Returns: string – the system’s reponse
-