IP Library Granted Patent US 11,663,535
Granted Patent B2
US 11,663,535 · App. 15/815,368 · Granted May 30, 2023

Multi computational agent performance of tasks

Inventors: Robert Stets (Mountain View, CA); Valerie Nygaard (Mountain View, CA); Bogdan Caprita (Mountain View, CA); Bradley M. Abrams (Palo Alto, CA); Jason Brant Douglas (San Francisco, CA)
Assignee: GOOGLE LLC
G06Q10/063112G10L15/22G06F16/951G10L2015/223
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,663,535
App. No.
15/815,368
Granted
May 30, 2023
Kind
B2
Abstract

An example method includes receiving, by one or more processors, a representation of an utterance spoken at a computing device; identifying, by a first computational agent from a plurality of computational agents and based on the utterance, a multi-element task to be performed, wherein the plurality of computational agents includes one or more first party computational agents and a plurality of third-party computational agents; and performing, by the first computational agent, a first sub-set of elements of the multi-element task, wherein performing the first sub-set of elements comprises selecting a second computational agent from the plurality of computational agents to perform a second sub-set of elements of the multi-element task.

Claims (104)

1. A method implemented by one or more processors of a first party computational agent, the method comprising:

receiving a representation of an utterance spoken at a computing device;

identifying, based on the utterance, a multi-element task to be performed, the multi-element task including at least a first sub-set of elements and a second sub-set of elements;

identifying, the first party computational agent to perform the multi-element task;

in response to determining that a capability level of the first party computational agent indicates the first party computational agent can only perform the first sub-set of elements of the multi-element task:

determining capability levels of respective third party computational agents, of a plurality of third party computational agents, to perform the multi-element task;

determining that a particular capability level of a particular third party computational agent, of the plurality of third party computational agents, indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task;

in response to determining that the particular capability level of the particular third party computational agent indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task:

selecting based on an agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to an occurrence of the utterance associated with at least the second sub-set of elements, the particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements of the multi-element task;

causing the first party computational agent to perform the first sub-set of elements of the multi-element task;

causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task;

subsequent to causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task:

receiving, from the particular third party computational agent, an indication of actions performed by the particular third party computational agent; and

updating, based on the indication of the actions performed by the particular third party computational agent, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to future occurrences of the utterance associated with at least the second sub-set of elements; and

subsequent to updating the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the future occurrences of the utterance associated with at least the second sub-set of elements:

receiving an additional representation of the utterance spoken at the computing device or an additional computing device;

identifying, based on the utterance, an additional multi-element task to be performed, the additional multi-element task including at least the second sub-set of elements; and

utilizing the updated the updated agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the additional utterance associated with at least the second sub-set of elements in determining whether to select the particular third party computational agent or an additional particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements.

2. The method of claim 1 , wherein performing the first sub-set of elements further comprises:

determining that additional information is needed to perform the second sub-set of elements;

causing the first party computational agent to gather the additional information; and

causing the first party computational agent to output the gathered additional information to the particular third party computational agent.

3. The method of claim 2 , wherein causing the first party computational agent to output the gathered additional information to the particular third party computational agent comprises:

responsive to determining, based on an authorization data store, that the particular third party computational agent is authorized to receive the gathered additional information, causing the first party computational agent to output the gathered additional information to the particular third party computational agent.

4. The method of claim 1 , wherein the one or more processors of the first party computational agent are included in the computing device.

5. The method of claim 1 , wherein the one or more processors of the first party computational agent are included in a distributed computing system.

6. The method of claim 1 , wherein causing the particular third party computational agent performs the second sub-set of elements of the multi-element task comprises:

causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task in parallel with causing the first party computational agent to perform the first sub-set of elements of the multi-element task.

7. The method of claim 1 , further comprising:

determining, based on at least historical usage of the particular third party computational agent, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the occurrence of the utterance associated with at least the second sub-set of elements.

8. The method of claim 1 , further comprising:

obtaining, from an agent index, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to an occurrence of the utterance associated with at least the second sub-set of elements,

wherein updating the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to future occurrences of the utterance associated with at least the second sub-set of elements based on the indication of the actions performed by the particular third party computational agent comprises causing the agent quality value to be updated in the agent index.

9. A computing device comprising:

at least one processor of a first party computational agent; and

at least one memory comprising instructions that when executed, cause the at least one processor of the first party computational agent to:

receive a representation of an utterance spoken at a computing device;

identify, based on the utterance, a multi-element task to be performed, the multi-element task including at least a first sub-set of elements and a second sub-set of elements;

identify the first party computational agent to perform the multi-element task;

in response to determining that a capability level of the first party computational agent indicates the first party computational agent can only perform the first sub-set of elements of the multi-element task:

determine capability levels of respective third party computational agents, of a plurality of third party computational agents, to perform the multi-element task;

determine that a particular capability level of a particular third party computational agent, of the plurality of third party computational agents, indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task;

in response to determining that the particular capability level of the particular third party computational agent indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task:

select, based on an agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to an occurrence of the utterance associated with at least the second sub-set of elements, the particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements of the multi-element task;

cause the first party computational agent to perform the first sub-set of elements of the multi-element task;

cause the particular third party computational agent to perform the second sub-set of elements of the multi-element task;

subsequent to causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task:

receive, from the particular third party computational agent, an indication of actions performed by the particular third party computational agent; and

update, based on the indication of the actions performed by the particular third party computational agent, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to future occurrences of the utterance associated with at least the second sub-set of elements; and

subsequent to updating the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the future occurrences of the utterance associated with at least the second sub-set of elements:

receive an additional representation of the utterance spoken at the computing device or an additional computing device;

identify, based on the utterance, an additional multi-element task to be performed, the additional multi-element task including at least the second sub-set of elements; and

utilize the updated agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the additional utterance associated with at least the second sub-set of elements in determining whether to select the particular third party computational agent or an additional particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements.

10. The device of claim 9 , wherein, to cause the first sub-set of elements to be performed by the first party computational agent, the instructions further cause the at least one processor of the first party computational agent to:

determine that additional information is needed to perform the second sub-set of elements;

cause the first party computational agent to gather the additional information; and

cause the first party computational agent to output the gathered additional information to the particular third party computational agent.

11. The device of claim 10 , wherein, to cause the first party computational agent to output the gathered additional information to the particular third party computational agent, the instructions further cause the at least one processor of the first party computational agent to:

responsive to determining, based on an authorization data store, that the particular third party computational agent is authorized to receive the gathered additional information, cause the first party computational agent to output the gathered additional information to the particular third party computational agent.

12. A computing system comprising:

one or more communication units;

at least one processor of a first party computational agent; and

at least one memory comprising instructions that when executed, cause the at least one processor of the first party computational agent to:

receive, from a computing device and via the one or more communication units, a representation of an utterance spoken at the computing device;

identify, based on the utterance, a multi-element task to be performed, the multi-element task including at least a first sub-set of elements and a second sub-set of elements;

identify the first party computational agent to perform the multi-element task;

in response to determining that a capability level of the first party computational agent indicates the first party computational agent can only perform the first sub-set of elements of the multi-element task:

determine capability levels of respective third party computational agents, of a plurality of third party computational agents, to perform the multi-element task;

determine that a particular capability level of a particular third party computational agent, of the plurality of third party computational agents, indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task;

in response to determining that the particular capability level of the particular third party computational agent indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task:

select, based on an agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to an occurrence of the utterance associated with at least the second sub-set of elements, the particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements of the multi-element task;

cause the first party computational agent to perform the first sub-set of elements of the multi-element task;

cause the particular third party computational agent to perform the second sub-set of elements of the multi-element task;

subsequent to causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task:

receive, from the particular third party computational agent, an indication of actions performed by the particular third party computational agent; and

update, based on the indication of the actions performed by the particular third party computational agent, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to future occurrences of the utterance associated with at least the second sub-set of elements; and

subsequent to updating the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the future occurrences of the utterance associated with at least the second sub-set of elements:

receive an additional representation of the utterance spoken at the computing device or an additional computing device;

identify, based on the utterance, an additional multi-element task to be performed, the additional multi-element task including at least the second sub-set of elements; and

utilize the updated agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the additional utterance associated with at least the second sub-set of elements in determining whether to select the particular third party computational agent or an additional particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements.

13. The system of claim 12 , wherein, to cause the first sub-set of elements to be performed by the first party computational agent, the instructions further cause the at least one processor of the first party computational agent to:

determine that additional information is needed to perform the second sub-set of elements;

cause the first party computational agent to gather the additional information; and

cause the first party computational agent to output the gathered additional information to the particular third party computational agent.

14. The system of claim 13 , wherein, to cause the first party computational agent to output the gathered additional information to the particular third party computational agent, the instructions further cause the at least one processor of the first party computational agent to:

responsive to determining, based on an authorization data store, that the particular third party computational agent is authorized to receive the gathered additional information, cause the first party computational agent to output the gathered additional information to the particular third party computational agent.

15. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to execute a first party computational agent configured to:

receive a representation of an utterance spoken at a computing device;

identify, based on the utterance, a multi-element task to be performed, the multi-element task including at least a first sub-set of elements and a second sub-set of elements;

determine a capability level of the first party computational agent to perform the first sub-set of elements and the second sub-set of elements of the multi-element task

in response to determining that the capability level of the first party computational agent indicates the first party computational agent can only perform the first sub-set of elements of the multi-element task:

determine capability levels of respective third party computational agents, of a plurality of third party computational agents, to perform the multi-element task;

determine that a particular capability level of a particular third party computational agent, of the plurality of third party computational agents, indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task;

in response to determining that the particular capability level of the particular third party computational agent indicates the particular third party computational agent can perform the second sub-set of elements of the multi-element task:

select, based on an agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to an occurrence of the utterance associated with at least the second sub-set of elements, the particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements of the multi-element task;

cause the first party computational agent to perform the first sub-set of elements of the multi-element task;

cause the particular third party computational agent to perform the second sub-set of elements of the multi-element task;

subsequent to causing the particular third party computational agent to perform the second sub-set of elements of the multi-element task:

receive, from the particular third party computational agent, an indication of actions performed by the particular third party computational agent; and

update, based on the indication of the actions performed by the particular third party computational agent, the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to future occurrences of the utterance associated with at least the second sub-set of elements; and

subsequent to updating the agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the future occurrences of the utterance associated with at least the second sub-set of elements:

receive an additional representation of the utterance spoken at the computing device or an additional computing device;

identify, based on the utterance, an additional multi-element task to be performed, the additional multi-element task including at least the second sub-set of elements; and

utilize the updated agent quality value that is assigned to the particular third party computational agent and that influences whether the particular third party computational agent is selected responsive to the additional utterance associated with at least the second sub-set of elements in determining whether to select the particular third party computational agent or an additional particular third party computational agent, from among the plurality of third party computational agents, to perform the second sub-set of elements.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 050268/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2017
From: STETS, ROBERT; NYGAARD, VALERIE; CAPRITA, BOGDAN; ABRAMS, BRADLEY M.; DOUGLAS, JASON BRANT
To: GOOGLE INC.
Reel/Frame 044273/0098 →
Continuity (3)
Continuation PCTUS2017054462 · Sep 29, 2017
Provisional Application 62403665 · Oct 3, 2016
Related Publication 20180096284A1 · Apr 5, 2018