...
Code Block | ||
---|---|---|
| ||
{ "base_url": "https://api.openai.com/v1", "model": "gpt-3.5-turbo", "api_token": "your_token", "max_token": 800 } |
Prompting - Send a question or advice
...
to AI
One of most generic and simplest use cases is to send a prompt (= question / advice) to the AI and use the response data in your pipeline. For this you can use the ai.prompt.send
command. Here is an example to return some data from the AI:
...
The parameter content
can be a plain text or any AI convertable object (like a PDF file for example). The conversion and preparation to an AI compatible format is done by PIPEFORCE automatically.
Text-to-Command - Let the AI start a command
This is the next level of automation where the AI can start a command and with this, start a business process fully automated. For this, the AI takes a non-structured text such as an email, a chat message or a PDF document for example, analyses it and then automatically detects and executes the according PIPEFORCE command in order to take action and fulfill the user’s request.
This can be seen as an ultimative tool to bridge between humans and machines since any generated non-structured text in written and spoken form can start nearly any computer task you can imagine.
...
Here are some example use cases where this feature could be helpful:
Automatically forward emails with a summary to internal team
Scan any email sent to a given inbox such as info@mycompany.tld for example, find out the intention of the sender, then forward the email to the internal team such as support, sales, … which can handle the request. The AI can find out the type of request, whether it is a support request, an order request, a question regarding an invoice or any other type just by writing an advice to the AI and without any programming. It can also detect and extract all required data such ascustomerId
,invoiceNumber
and more from the sender’s email. Furthermore, it can also create a short summary about what the core intent of the sender is to make it easier for the internal team to process the request.Automatically start an internal workflow by email
Scan any email sent to a given inbox such as invoice@mycompany.tld for example and if this email matches to an existing workflow, extract all variables required for this workflow from the email, start the workflow and pass these variables along with it. For example to start an accounts payable workflow based on an given payable invoice. The AI can validate whether all required data exist and is valid in order to start the workflow.Automatically call endpoints of other systems by email
Scan any email sent to a given inbox such as info@mycompany.tld for example and if this email is related to a service, offered by a third party system which provides an remote API, call this remote API (for example REST) and pass along parameters extracted from the email. For example create a new ticket on an external ticket system.
Using the command ai.command.detect
In order to integrate Text-to-Command functionality into your automation pipelines, you can use the command ai.command.detect
. It will
take a text, for example like an email as input,
will apply the given AI instructions on this text and
finally will select a command to be executed and optionally executes it.
Here is a first example how this could look like in an automation pipeline:
Code Block | ||
---|---|---|
| ||
body: |
From: customer@somedomain.tld
Subject: I have a problem with your product
Hello,
I have a big problem with your product and need support.
My customer id is 123456.
Cheers, Valued Customer
pipeline:
- ai.command.detect:
runDetectedCommand: false
advice:
intentCandidates:
- intentId: "forwardToSupport"
instruction: "Use this intent in case the sender needs product support."
targetCommand: "mail.send"
params:
to:
value: "support@internal.tld"
from:
instruction: "The email address of the sender."
subject:
instruction: "Use the subject of the sender's email."
message:
instruction: "Use the message of the sender's email."
- intentId: "forwardToInfo"
instruction: >
Use this intent in case the sender's intent could not be detected.
targetCommand: "mail.send"
params:
to:
value: "info@internal.tld"
from:
instruction: "The email address of the sender."
subject:
instruction: "Use the subject of the sender's email."
message:
instruction: "Use the message of the sender's email." |
As you can see in this example, there are two command intents configured:
One intent will forward the customer email to the support team (=
forwardToSupport
) andthe other one to the info team in case it is related to any other topic (=
forwardToInfo
).
Each intent has an instruction
in order to instruct the AI about the criteria to select this intent. In case such an intent is selected by AI, there is the targetCommand
field defining the name of the command which must be called. In this example this is the mail.send
command.
The parameter runDetectedCommand
defines whether the command should directly be executed (true
) or the intent JSON should be simply returned for further processing (false
).
Intent Parameters
The params
section on each intent lists the parameters required to call the command. For the mail.send
command these are for example the parameters to
, from
, subject
and message
. The values of these parameters can be fixed, templated or can be detected by the AI.
All parameter attributes are explained below.
name
(optional)
The name of the parameter. Under this name it will be passed to the command.
This attribute is optional. If not set, the params id will be used.
required
(optional)
Defines whether this parameter is required. In case it is required and its value is finally missing or cannot be detected by AI, an error is thrown and further execution stops.
The default value is false
.
type
(optional)
The data type of the parameter such as string
, boolean
, integer
, number
.
If different from string and parameter is detected by AI, the AI also tries to convert to this format.
The default value is string
.
value
(optional)
The value
of an intent parameter defines the value to be passed to the command.
This can be a fixed value (literal) or a template. By default the Mustache template syntax can be used which starts with {{
and ends with }}
. The variables advice
and intent
are passed as model context to the template. This way you can access for example settings and values of other parameters after they have been resolved by the AI in order to formulate the final parameter for a command.
See this example to construct a message out of advice parameters using a template:
Code Block | ||
---|---|---|
| ||
...
targetCommand: "mail.send"
...
params:
message:
value: "The customerId is: {{advice.params.customerId}}"
... |
Here is a more advanced example to pass auto-detected parameters into the command worklow.start
as workflow variables using the parameter variables
:
Code Block | ||
---|---|---|
| ||
...
targetCommand: "workflow.start"
...
params:
variables:
value:
customerId: "{{advice.params.customerId}}"
customerName: "{{advice.params.customerName}}"
... |
instruction
(optional)
For each parameter, an attribute instruction
instead of a value
can be set. Not both!
In this case the AI will auto-detect the value of the parameter by reading and applying this instruction on the input and setting the result on the value field automatically.
See this example where the subject
parameter for the mail.send
command will be auto-detected by AI:
Code Block | ||
---|---|---|
| ||
...
targetCommand: "mail.send"
...
params:
subject:
instruction: "Use the subject from initial sender email"
... |
...
Intent Detection - Detect what the user wants
Another feature of the AI studio is the ability to detect the intent of the user or to classify a given information and extract additional information based on the detected intent.
Lets consider this example use case for better understanding: An employee sends an email with a PDF as attachment. This PDF can be an invoice, a termination or a documentation. The AI can detect, which intent it is and can then additionally extract all required information from the document. For the invoice this could be the invoice numer and the positions for example, for the termination it could the contract number and for the documentation it could a short summary for example. Lets model this use case now in a PIPEFORCE pipeline:
Code Block | ||
---|---|---|
| ||
pipeline:
# Read email from inbox
- imap.get:
host: outlook.office365.com
secret: my-office365-secret
# Detect the intent in the email
- ai.intent.detect:
advice:
intentCandidates:
- intentId: "invoice"
instruction: "Use this intent in case the attachment is an invoice."
params:
supplierAddress:
instruction: Extract the supplier address from the invoice.
invoiceNumber:
instruction: Extract the invoice number from the invoice.
totalAmount:
instruction: Extract the total amount of the invoice in cents without any currency chars, separators or other special characters.
- intentId: "temination"
instruction: "Use this intent in case the attachment is a termination of a contract."
params:
contractNumber:
instruction: Extract the contract number.
customerNumber:
instruction: Extract the customer number.
reason:
instruction: Summarize in one sentence the reason for the termination.
- intentId: "documentation"
instruction: "Use this intent in case the attachment is a documentation."
params:
summary:
instruction: Create a short summary what this documentation is about. |
After executing this pipeline, the response could look like this:
Code Block | ||
---|---|---|
| ||
{
"params": {
"supplierAddress": {
"name": "supplierAddress",
"value": "ABC Software (Germany) GmbH - Im Weg 3 - 12345 Worth",
"required": false,
"pass": true,
"type": "string"
},
"invoiceNumber": {
"name": "invoiceNumber",
"value": "123100401",
"required": false,
"pass": true,
"type": "string"
},
"totalAmount": {
"name": "totalAmount",
"value": "45353",
"required": false,
"pass": true,
"type": "string"
}
},
"enabled": true,
"intentId": "invoice",
"command": null
} |
As you can see in this example, the command ai.intent.detect
is used and three intents are configured under advice.intentCandidates
for invoice, termination and documentation. Each with its own parameters to be extracted.
Each intent can have these attributes:
intentId
This attribute is mandatory and gives the intent a unique id. This should be an explainatory, unique name without special charaters or whitespaces.instruction
Each intent has aninstruction
in order to instruct the AI about the criteria to select this intent. In case such an intent is selected by AI, additionally the parameters will be extracted from the input. This parameter is mandatory.params
The list of optional parameters to be detected in case this intent was selected.command
The optional name of the command to be executed in case this intent was detected. Note: AdditionallyrundDetectecCommand
must be set totrue
on theai.intent.detect
command which isfalse
by default.enabled
An intent can optionally be disabled by setting enabled = false. This is useful mainly for testing purposes for example. In this case only the other intents will be considered by the AI.
Intent Parameters
The params
section on each intent lists the parameters of the intent. These parameters will be automatically set in case the given intent was detected. They can later be used for further processing by calling a command of by passing them to external systems for example.
Each parameter can have a fixed/templated value
or its value can be detected by AI using the instruction
attribute.
All parameter attributes are explained below.
name
(optional)
The name of the parameter.
This attribute is optional. If not set, the params id will be used.
required
(optional)
Defines whether this parameter is required. In case it is required and its value is finally missing or cannot be detected by AI, an error is thrown and further execution stops.
The default value is false
.
type
(optional)
The data type of the parameter such as string
, boolean
, integer
, number
, json
If different from string and parameter is detected by AI, the AI also tries to convert to this format.
The default value is string
.
value
(optional)
The value
of the intent parameter.
This can be a fixed value (literal) or a template.
Templated values
The value can also be template string. By default the Mustache template syntax can be used which starts with {{
and ends with }}
. The variables advice
and intent
are passed as model context to the template. This way you can access for example settings and values of other parameters after they have been resolved by the AI in order to formulate the final parameter for a command.
See this example to construct a message out of advice parameters using a template:
Code Block | ||
---|---|---|
| ||
...
params:
customerId:
value: "1234567"
message:
value: "The customerId is: {{intent.params.customerId}}"
... |
instruction
(optional)
For each parameter, an attribute instruction
instead of a value
can be set. Not both!
In this case the AI will auto-detect the value of the parameter by reading and applying this instruction on the input and setting the result on the value field automatically.
See this example where the subject
parameter for the mail.send
command will be auto-detected by AI:
Code Block | ||
---|---|---|
| ||
...
params:
subject:
instruction: "Use the subject from initial sender email"
... |
As you can see in this example, there is no fixed value for parameter subject
set. Instead the AI was instructured to extract the value from the given email input.
Text-to-Command - Let the AI auto-start a business process
This is the next level of automation where the AI can start a command and with this, start a business process fully automated. For this, the AI takes a non-structured text such as an email, a chat message or a PDF document for example, analyses it and then automatically detects and executes the according PIPEFORCE command in order to take action and fulfill the user’s request.
This can be seen as an ultimative tool to bridge between humans and machines since any generated non-structured text in written and spoken form can start nearly any computer task you can imagine.
Drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Here are some example use cases where this feature could be helpful:
Automatically forward emails with a summary to internal team
Scan any email sent to a given inbox such as info@mycompany.tld for example, find out the intention of the sender, then forward the email to the internal team such as support, sales, … which can handle the request. The AI can find out the type of request, whether it is a support request, an order request, a question regarding an invoice or any other type just by writing an advice to the AI and without any programming. It can also detect and extract all required data such ascustomerId
,invoiceNumber
and more from the sender’s email. Furthermore, it can also create a short summary about what the core intent of the sender is to make it easier for the internal team to process the request.Automatically start an internal workflow by email
Scan any email sent to a given inbox such as invoice@mycompany.tld for example and if this email matches to an existing workflow, extract all variables required for this workflow from the email, start the workflow and pass these variables along with it. For example to start an accounts payable workflow based on an given payable invoice. The AI can validate whether all required data exist and is valid in order to start the workflow.Automatically call endpoints of other systems by email
Scan any email sent to a given inbox such as info@mycompany.tld for example and if this email is related to a service, offered by a third party system which provides an remote API, call this remote API (for example REST) and pass along parameters extracted from the email. For example create a new ticket on an external ticket system.
Using the command ai.intent.detect
In order to integrate Text-to-Command functionality into your automation pipelines, you can use the command ai.intent.detect
. It will
take a text, for example like an email as input,
will apply the given AI instructions on this text and
finally will select a command to be executed and passes the detected parameters to this command.
Here is an example how this could look like in an automation pipeline:
Code Block | ||
---|---|---|
| ||
body: |
From: customer@somedomain.tld
Subject: I have a problem with your product
Hello,
I have a big problem with your product and need support.
My customer id is 123456.
Cheers, Valued Customer
pipeline:
- ai.command.detect:
runDetectedCommand: true
advice:
intentCandidates:
- intentId: "forwardToSupport"
instruction: "Use this intent in case the sender needs product support."
command: "mail.send"
params:
to:
value: "support@internal.tld"
from:
instruction: "The email address of the sender."
subject:
instruction: "Use the subject of the sender's email."
message:
instruction: "Use the message of the sender's email."
- intentId: "forwardToInfo"
instruction: >
Use this intent in case the sender's intent could not be detected.
command: "mail.send"
params:
to:
value: "info@internal.tld"
from:
instruction: "The email address of the sender."
subject:
instruction: "Use the subject of the sender's email."
message:
instruction: "Use the message of the sender's email." |
As you can see in this example, there are two intents configured:
One intent will forward the customer email to the support team (=
forwardToSupport
) andthe other one to the info team in case it is related to any other topic (=
forwardToInfo
).
Each intent has an instruction
in order to instruct the AI about the criteria to select this intent. In case such an intent is selected by AI, there is the targetCommand
field defining the name of the command which must be called. In this example this is the mail.send
command.
The parameter runDetectedCommand
defines whether the command should directly be executed (true
) or the intent JSON should be simply returned for further processing (false
).