Conditions
Inside a preprompt, similar to software programming, you can use if conditions andswitch conditionals.
Conditions
Example:
Tell a joke. @if (engine.code = ChatGPT) Speak as robot. @else Speak as human. @endif
As the result, depending on the provider selected at the portal, final preprompt will differ.
Overview of what you can write in the @if () condition is provided below.
Note: the case and excessive Space characters have no significance.
System fields
- engine.code – provider code (ChatGPT, ThirdParty ThirdParty – "third party". A third-party code can be used here, developed by various partner companies. );
- engine.category – can have values "text" or "image". However, currently CoPilot preprompts work for texts only;
- context.module – module that calls CoPilot. For example, you can supplement the preprompt with details if the query is sent from CRM module.
Example of a condition for system field was provided at the page start. Here's another example:
@if (engine.code = ChatGPT) Do not forget, that you are ChatGPT @endif
Null check
@if (author.name = null) speak as anonymous @endif
Negation
@if (engine.code != ChatGPT) {context_messages} @endif
Handling the basic markers
These are basic markers, as well as markers preset by developer. Because the fact that they contain user content, the user ta в силу того, что в них содержится пользовательский контент, использовать их имеет смысл только для проверки на непустоту.
@if (marker.original_message != null) compliment for {original_message} @else compliment for {user_message} @endif
On the other hand, for the marker check you can use a system preset marker that is always defined by the developer upon specific conditions.
@if (marker.role = vip) write as if you are very important @endif
Handling the markers for result
Result marker details can be found in the markers documentation.
How to apply markers in conditions? Based on the adopted logic, you can use them only in hull check tasks. For example:
@if (current_result0 != null) This is not the first user clarification, be more attentive please! @endif
Important! You can check the marker availability for your logic only. The entry as follows:
@if (current_result0 != null) {current_result0} @endif
makes no sense, because with empty marker, it will be removed from text automatically.
Branching
This is switch, well-known in software programming. It will be helpful when you have various prompt blocks, but each is executed strictly in a specific sequence. A good example, when you have various prompt texts for different providers. See the example below.
@switch (engine.code) @case(ChatGPT) **instruction for GPT** @case(ChatGPT) **instruction for ChatGPT** @default **instruction for the rest of providers** @endswitch
What can be inserted into 'switch'? The same as for 'if'.
Branching condition has the highest priority. This means that 'if' conditions can also be contained inside case-blocks. There can be several switch blocks, although it will reduce readability.
Example of combined use of 'switch' and 'if':
@switch (engine.code) @case(ChatGPT) you're a porky @if(author.personalgender = m) pink color @else blue color @endif @case(ChatGPT) you're a bear @default you're a wolf @endswitch @switch (engine.code) @case(ChatGPT) from Pluto @case(ChatGPT) from Jupiter @default @if(author.personalgender = m) from Mars @else from Venus @endif @endswitch