Witty Autocomplete Agent
Witty Autocomplete Agent is an AI agent that helps users to fill Data Contract schemas faster. It leverages the Witty Autocomplete Agent which, by contacting the LLM provider defined in Witty, generates fields suggestions.
Prerequisites
- Witty Autocomplete Agent microservice must be up & running and reachable from Witboost Core.
Configuring the agent
In your app-config
add these lines:
witty:
scaffolder:
smartSuggestions:
baseUrl: <base URL where Witty Autocomplete Agent is running>
enabled: true
This will tell Witboost Core where to send autocomplete requests coming from enabled templates.
Setting up a Witty template
Witty Autocomplete is available both for Creation and Edit templates kinds. However, as of now, you can only enable Witty for tables and its inner rows.
Now, let's take this template as a reference:
apiVersion: witboost.com/v1
kind: EditTemplate
metadata:
name: edit-template
title: Edit Template
description: Edit Template
spec:
owner: agile_lab
useCaseTemplateId:
- urn:dmb:utm:my-template:0.0.0
parameters:
- title: Data Contract Schema
properties:
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: ArrayTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: TableRowTemplate
required:
- name
- dataType
properties:
name:
type: string
title: Name
surname:
type: string
title: Surname
# ... other template stuff ...
To enable Witty on this template table, we will modify the schema
property, which is an ArrayTableTemplate
, and set it to be a WittyTableTemplate
as follows:
apiVersion: witboost.com/v1
kind: EditTemplate
metadata:
name: edit-template
title: Edit Template
description: Edit Template
spec:
owner: agile_lab
useCaseTemplateId:
- urn:dmb:utm:my-template:0.0.0
parameters:
- title: Data Contract Schema
properties:
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: TableRowTemplate
required:
- name
- dataType
properties:
name:
type: string
title: Name
surname:
type: string
title: Surname
# ... other template stuff ...
Finally, we use WittyTableRowTemplate
in place of TableRowTemplate
:
apiVersion: witboost.com/v1
kind: EditTemplate
metadata:
name: edit-template
title: Edit Template
description: Edit Template
spec:
owner: agile_lab
useCaseTemplateId:
- urn:dmb:utm:my-template:0.0.0
parameters:
- title: Data Contract Schema
properties:
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: WittyTableRowTemplate
required:
- name
- dataType
properties:
name:
type: string
title: Name
surname:
type: string
title: Surname
# ... other template stuff ...
But we are not done yet! We have just enabled Witty on this table. Now, we need to decide which are the fields to be autocompletable by the agent. When at least one field is configured, the Witty Table autocomplete button will show up.
Witty Enabled Fields
Witty Autocomplete currently supports three types of fields:
- WittyTextPicker
- CustomUrlPicker
- EntitySearchPicker
WittyTextPicker
Let's define both name and surname as Witty-enabled fields:
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: WittyTableRowTemplate
required:
- name
- dataType
properties:
name:
type: string
title: Name
ui:field: WittyTextPicker
surname:
type: string
title: Surname
ui:field: WittyTextPicker
That's it! Now both Name and Surname fields will be adorned by the Witty Autocomplete button.
CustomUrlPicker
To use Witty Autocomplete in a CustomUrlPicker, you have to enable smart suggestion by putting wittySuggestions.enabled
in template.
Here's an example
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: WittyTableRowTemplate
required:
- name
- dataType
properties:
businessTags:
title: Business Tags
type: array
wittySuggestions:
enabled: true
description: Business Tags
ui:field: CustomUrlPicker
ui:style:
minWidth: 400
ui:options:
allowArbitraryValues: false
selectedField: value
ui:displayFields:
- id
- value
- description
ui:apiSpec:
retrieval:
microserviceId: 'mocked-microservice'
params:
limit: 10
areaType: ${{ domain }}
validation:
microserviceId: 'mocked-microservice'
EntitySearchPicker
To use Witty Autocomplete in a EntitySearchPicker, you have to enable smart suggestion by putting wittySuggestions.enabled
in template.
schema:
title: Schema
description: Data Contract Schema
type: array
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
type: object
ui:ObjectFieldTemplate: WittyTableRowTemplate
required:
- name
- dataType
properties:
key_results:
title: Key Results
description: Key Results
type: array
ui:field: EntitySearchPicker
ui:options:
multiSelection: true
entities:
- type: Remote
wittySuggestions:
enabled: true
displayName: Remote
fieldsToSave:
- id
- name
- description
columns:
- name: 'Key Result'
path: '{{name}}'
- name: 'Desc'
path: '{{description}}'
apiSpec:
retrieval:
baseUrl: 'url'
path: '/path/to/api'
method: POST
To ensure the AI agent can provide accurate and meaningful suggestions, it is crucial that every option includes a clear and concise description. These descriptions serve as essential context for the language model, enabling it to better understand the purpose and usage of each option. Without detailed descriptions, the agent’s ability to generate relevant and precise field suggestions may be limited, leading to less effective or ambiguous recommendations.
Advanced settings
You can supply some additional settings to a Witty table. To do so, you can add properties into the WittyTableTemplate
. Here you have a list of available properties:
apiVersion: witboost.com/v1
kind: EditTemplate
metadata:
name: edit-template
title: Edit Template
description: Edit Template
spec:
owner: agile_lab
useCaseTemplateId:
- urn:dmb:utm:my-template:0.0.0
parameters:
- title: Data Contract Schema
properties:
schema:
title: Schema
description: Data Contract Schema
type: array
witty:
context: # a list of strings that can be attached into the request to give additional context to the underlying LLM model
- each row of this table is a set of metadata about columns of a dataset.
- each metadata row follows the open metadata specification
ui:ArrayFieldTemplate: WittyTableTemplate
default: []
items:
# ... other template stuff ...
Here is a detailed table of possible witty table configurations. Each property must be set on the WittyTableTemplate
component.
Property | Description | Default value |
---|---|---|
witty.context | (optional) Additional context that can be supplied to the Witty service for better scoping of the autocomplete objective | None |