---
title: "Other interfaces"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Other interfaces}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

library(chattr)
```

Besides the app, there are a couple of more ways to interact with the LLM via 
`chattr`:

- Using the `chattr()` function
- Highlight the request in a script

## Output 

Based on where you are making the request from, `chattr` will return the response 
appropriately in the following manner:

- If the request is made from the **R console**, the response will be returned as a
a console message, not R code (`cat()`). This way, you can decide to copy-paste the 
code to run.  It will also prevent any comments from the LLM to cause an error.

- If the request is made from a **script**, or a code chunk in
[Quarto (Visual editor)](https://quarto.org/docs/visual-editor/),
the output will be inserted right after your prompt in the same document.


## Using the `chattr()` function

The fastest way to interact with the LLM is by simply calling the `chattr()` 
function and enter your request there. Here is an example of a request made to
OpenAI:

```r
library(chattr)
chattr("show me a simple recipe")
```
```
# Load required packages
library(tidymodels)

# Create a simple recipe for the iris dataset
iris_recipe <- recipe(Species ~ ., data = iris) 

# Print the recipe
iris_recipe
```

## Highlight the request in a script

In a script, `chattr` will process the current line, or the highlighted line(s),
as the prompt. Because we assume that the request is not going to be code, then
`chattr` will comment out the line or lines that were highlighted. As mentioned
in the **Output** section, the response will be inserted in your document.

Here is an example of a request submitted to OpenAI:

```r
Create a function that:
  - Removes specified variables
  - Behaves like dplyr's select function
```

And here are the results: 

```r
# Create a function that:
#   - Removes specified variables
#   - Behaves like dplyr's select function


# This function removes specified variables and behaves like dplyr's select function
# It uses the tidyverse packages: dplyr and tidyr

remove_vars <- function(data, ...) {
    data %>%
        select(-one_of(...))
}


}
```