Question/problem: while trying to pass the parameters extracted from an OPEN API tool in a child playbook to a parent playbook it is unable to do so, in the trace debug it is showing up as " error unable to parse" and in the original response, the "actionParameters" for playbook output is null despite defining in examples and in the output parameters of child playbook.
Parent playbook - Order Status:
starting instructions where it calls the child playbook to retrieve user order history and username
example defined :
user order history playbook expanded :
defined output parameters that needs to be passed to the parent playbook.
Child playbook : User Order History
Instructions provided :
example provided to the playbook:
parameters that child playbook returns are defined under the parameters tab in child playbook as below.
During the conversation as below :
The tool is getting the output properly but the child playbook is unable to emit out through the output parameters during the conversation as defined in the example.
Error messages :
In debug trace
IN original response :
The tool output is 200 status
but the playbook outputActionParameters is empty due to which the error is occurring.
Can you please tell me where it is going wrong ,I have read the documentation but didn't find anything helpful, I followed whatever they mentioned in it.
Any help or lead would be much appreciated.
This looks like a problem similar to the one I reported in my post YAML parsing error when transferring to a playbook. In my case, the situation was reversed: The parent playbook used a tool to get data that would be passed to a child playbook as input parameters. But that didn't work. I get the same message you did "Sorry, something went wrong" and, in the trace, I got a YAML parsing error:
Error! Got action "pb^Flat tire flow" from LLM, but failed to parse its input as YAML: preceding_conversation_summary: "Caller, Robert Williams, with phone number 555-555-1212 and zip code 91236, reported a flat tire and is not in immediate danger.", caller_name: "Robert Williams", caller_address: "789 Pine Lane, Springfield, MA 91236", vehicle_description: "2022 Chevrolet Equinox, White"
That seems like a bug.
Instead of using parameters, I reverted to create examples for the parent playbook, which teach the LLM to provide the necessary information in the Playbook invocation input Summary when calling the child playbook. This seems to work well. Actually, it may work better than using parameters because the information provided in the Summary can be more nuanced than what can be done using just parameters.
For instance, in my case, a roadside assistance scenario, I need to pass an address obtained via a tool call in the parent playbook but I need to make it clear to the child playbook that this is the address on file for the user, which may not be their current location. Such distinction might be clear to the LLM if it has access to the entire conversation history, but not if it needs to solely rely on parameters.
In any case, there really is a bug in the platform and Google should fix it.
BTW, in the L400 training, Google’s Pak Ming Wan recommends using a single playbook, if possible. That’s probably good advice since it avoids many of the challenges of maintaining context from one playbook to another.
Hello Norman , I tried mentioning in the playbook invocation output but it didn't work out below is the summary sample I Used
Summary:
The order history and username are successfully retrieved and the $User_name and $UserHistory are successfully updated with the retrieved values from tool, returning back to the previous playbook to continue the conversation.
Could you suggest any improvements or provide me an example of your summary so that I can refer and improve.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |