llm_last Function
The llm_last
function is used to extract the least relevant result from a set of rows based on a model's prompt and input columns. It operates over a set of rows, generally combined with a GROUP BY
clause, to return the least relevant row for each group.
1. Usage Examples
1.1. Example without GROUP BY
Retrieve the least relevant product feature across all rows:
SELECT llm_last(
{'model_name': 'gpt-4'},
{'prompt': 'What is the least relevant detail for these products, based on their names and descriptions?'},
{'product_name': product_name, 'product_description': product_description}
) AS last_product_feature
FROM products;
This query will return the least relevant feature from all product descriptions and product names.
1.2. Example with GROUP BY
Retrieve the least relevant product feature for each product category:
SELECT category,
llm_last(
{'model_name': 'gpt-4'},
{'prompt': 'What is the least relevant detail for these products, based on their names and descriptions?'},
{'product_name': product_name, 'product_description': product_description}
) AS last_product_feature
FROM products
GROUP BY category;
In this case, the query groups products by category and returns the least relevant feature for each category.
1.3. Using a Named Prompt with GROUP BY
Use a reusable prompt such as "least-relevant-detail" to extract the least relevant feature for each product category:
SELECT category,
llm_last(
{'model_name': 'gpt-4', 'secret_name': 'my_key'},
{'prompt_name': 'least-relevant-detail', 'version': 1},
{'product_name': product_name, 'product_description': product_description}
) AS last_product_feature
FROM products
GROUP BY category;
If the version
parameter is omitted, the system will use the latest version of the least-relevant-detail
prompt by default.
1.4. Advanced Example with Multiple Columns and GROUP BY
Retrieve the least relevant feature for products grouped by category, using both the product name and description:
WITH product_info AS (
SELECT category, product_name, product_description
FROM products
WHERE category = 'Electronics'
)
SELECT category,
llm_last(
{'model_name': 'gpt-4'},
{'prompt': 'What is the least relevant detail for these products, based on their names and descriptions?'},
{'product_name': product_name, 'product_description': product_description}
) AS last_product_feature
FROM product_info
GROUP BY category;
This example will extract the least relevant feature from both the product name and description for each product category.
2. Input Parameters
2.1 Model Configuration
- Parameter:
model_name
andsecret_name
2.1.1 Model Selection
- Description: Specifies the model used for text generation.
- Example:
{ 'model_name': 'gpt-4' }
2.1.2 Model Selection with Secret
- Description: Specifies the model along with the secret name to be used for authentication when accessing the model.
- Example:
{ 'model_name': 'gpt-4', 'secret_name': 'your_secret_name' }
2.2. Prompt Configuration
Two types of prompts can be used:
-
Inline Prompt
- Directly provides the prompt in the query.
- Example:
{'prompt': 'What is the least relevant detail for these products, based on their names and descriptions?'}
-
Named Prompt
- Refers to a pre-configured prompt by name.
- Example:
{'prompt_name': 'least-relevant-detail'}
-
Named Prompt with Version
- Refers to a specific version of a pre-configured prompt.
- Example:
{'prompt_name': 'least-relevant-detail', 'version': 1}
2.3. Column Mappings (Optional)
- Key: Column mappings.
- Purpose: Maps table columns to prompt variables for input.
- Example:
{'product_name': product_name, 'product_description': product_description}
3. Output
- Type: JSON object.
- Behavior: The function returns a JSON object containing the values of the columns you provided in the input. The structure of the returned JSON will mirror the input columns' values.
Output Example:
For a query that extracts the least relevant feature, the result could look like:
-
Input Rows:
product_name
: "Wireless Headphones"product_description
: "High-quality wireless headphones with noise cancellation."
-
Output JSON:
{
"product_name": "Wireless Headphones",
"product_description": "High-quality wireless headphones with noise cancellation."
}
The output contains the values for product_name
and product_description
from the least relevant row based on the prompt.