- 🪄 Prompting Tips & Tricks
- How to Limit Response Length
- Generating a Summary Per Message in a Conversation
- Avoiding Hallucination
- Including Multiple Comments of Free Form Text
- ⛓️ Chaining
- Escaping {{ in Text Templates with {% raw % }
- Prompt Examples
- Generating JSON
- Parsing JSON
- Recommending Tools/Actions with Placeholders
🪄 Prompting Tips & Tricks
How to Limit Response Length
Phrases to try:
- “Be concise”
- “Limit prose”
- “No explanations”
Generating a Summary Per Message in a Conversation
ChatGPT 3.5 can’t do instructions like “write a bullet point for each message”. Instead, you have to tell how many bullet points to write
Write {{ @bullets | length }} bullet points summarizing the messages.
Write one bullet per message
Avoiding Hallucination
- Turn down the temperature to 0.2-0.3, especially for summarization tasks
- Use chaining to get information. E.g.: fetch a page via search and then have GPT summarize it vs. asking GPT directly
Including Multiple Comments of Free Form Text
To refer to multiple instances of free-form text, I’ve found it helpful to wrap each instance in a tag to help delineate it from the others
{% for @comment of @comments $}
<comment>
{{ @comment }}
</comment>
{% endfor %}
This approach can also distinguish customer vs. agent messages:
{% for @comment of @comments $}
<{{ "customer" if @comment.isCustomer else "agent">
{{ @comment.text }}
</{{ "customer" if @comment.isCustomer else "agent">
{% endfor %}
⛓️ Chaining
Escaping {{
in Text Templates with {% raw % }
If you want ChatGPT to generate placeholders for use in mail-merge or downstream text templates, you need to escape the template braces in the prompt:
Example of telling ChatGPT how to use Salesforce Merge Fields:
Use the following placeholders for the sender and recipient:
- Recipient {% raw %}{{{Recipient.FirstName}}}{% endraw %}
- Sender: {% raw %}{{{Sender.Name}}}{% endraw %}
Prompt Examples
Generating JSON
The ratings generated from this prompt don’t seem to be very accurate. Needs chain of thought prompting to improve
System
You are an AI designed to train and evaluate customer support agents.
You will be given the following:
- A customer request in text format
- A support agent response in text format
- A grading rubric in JSON format
Complete the grading rubric by replacing <number> with a rating 1-5. A rating of 1 corresponds to "Not at all" and a rating of 5 corresponds to "Outstanding"
Do not provide any other response except for the scorecard in JSON format.
User
Customer request:
My package didn't arrive yet. Could you tell me when it's supposed to arrive?
Customer response:
Hi there! I checked the portal, and it looks like your package was delivered yesterday. You can check your shipment status using the shipment tracking portal. Let me know if you have any problems with the item. Enjoy!
Your scorecard:
{
"Was the customer issue understood and all inquiries solved correctly?": <number>,
"Was the question answered with empathy?": <number>,
"Did the associate anticipate future questions?": <number>,
"Did the associate provide helpful resources where possible?": <number>,
"Was the interaction easily readable?": <number>,
"Provide an overall rating?": <number>,
}
Parsing JSON
- Use the Parse JSON brick
- Always wrap in a Try-Except in case Chat GPT decides to respond with non-JSON. (ChatGPT will return non-JSON if it thinks it’s unable to perform the task)
Recommending Tools/Actions with Placeholders
- Provide the available actions in JSON Schema Format
- Minify the available actions.
You are an action recommender. You will be given a customer support conversation.
Respond with a JSON array where each item is a matching action, and the arguments for the action.
If you are missing a piece of information for the argument, provide null for that argument. For example:
{"actions":[{"name":"Check Repair Status","args":{"repair_id": null}}]}
Here is the list of available actions, in JSONSchema format.
{"actions":[{"name":"Check Repairs for Customer","description":"Useful for when you need to check the status of a repair and don't have the repair id","args_schema":{"customer_email":{"type":"string","format":"email","title":"Customer Email","description":"The email address of the customer"}}},{"name":"Check Shipment Status","description":"Useful for when you need to check the status of a shipment","args_schema":{"shipment_id":{"type":"string","title":"Shipment Id","description":"The id of the shipment"}}},{"name":"Check Repair Status","description":"Useful for when you need to check the status a single repair","args_schema":{"repair_id":{"type":"string","title":"Repair Id","description":"The id of the repair"}}}]}
If none of the actions are a good match. Respond with an empty JSON Array []