-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Increment version number to 0.0.0.9001
- Loading branch information
1 parent
5391cda
commit 69701c1
Showing
26 changed files
with
1,494 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,3 +5,4 @@ | |
^CODE_OF_CONDUCT\.md$ | ||
^\.github$ | ||
^codecov\.yml$ | ||
^dev$ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
if (interactive()) { | ||
if (as.logical(Sys.getenv("ATTACH_STARTUP_PKGS", FALSE))) { | ||
usethis::ui_todo("Attaching development supporting packages...") | ||
suppressPackageStartupMessages(suppressWarnings({ | ||
library(devtools) | ||
ui_done("Library {ui_value('devtools')} attached.") | ||
library(usethis) | ||
ui_done("Library {ui_value('usethis')} attached.") | ||
library(testthat) | ||
ui_done("Library {ui_value('testthat')} attached.") | ||
library(checkmate) | ||
ui_done("Library {ui_value('checkmate')} attached.") | ||
})) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,3 +4,4 @@ | |
.httr-oauth | ||
.DS_Store | ||
.quarto | ||
.Renviron |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,28 @@ | ||
Package: ubep.gpt | ||
Title: What the Package Does (One Line, Title Case) | ||
Version: 0.0.0.9000 | ||
Version: 0.0.0.9001 | ||
Authors@R: | ||
person("First", "Last", , "[email protected]", role = c("aut", "cre"), | ||
comment = c(ORCID = "YOUR-ORCID-ID")) | ||
Description: What the package does (one paragraph). | ||
License: MIT + file LICENSE | ||
URL: https://github.com/UBESP-DCTV/ubep.gpt | ||
BugReports: https://github.com/UBESP-DCTV/ubep.gpt/issues | ||
Imports: | ||
glue, | ||
lifecycle, | ||
tibble | ||
openai, | ||
purrr, | ||
rlang, | ||
tibble, | ||
usethis | ||
Suggests: | ||
checkmate, | ||
lintr, | ||
spelling, | ||
testthat (>= 3.0.0) | ||
Config/testthat/edition: 3 | ||
Encoding: UTF-8 | ||
Language: en-US | ||
Roxygen: list(markdown = TRUE) | ||
RoxygenNote: 7.3.1 | ||
Language: en-US | ||
URL: https://github.com/UBESP-DCTV/ubep.gpt | ||
BugReports: https://github.com/UBESP-DCTV/ubep.gpt/issues |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,14 @@ | ||
# Generated by roxygen2: do not edit by hand | ||
|
||
export(compose_prompt) | ||
export(compose_prompt_api) | ||
export(compose_prompt_system) | ||
export(compose_prompt_user) | ||
export(get_completion_from_messages) | ||
export(get_content) | ||
export(get_tokens) | ||
export(query_gpt) | ||
export(query_gpt_on_column) | ||
importFrom(lifecycle,deprecated) | ||
importFrom(rlang,":=") | ||
importFrom(tibble,tibble) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
# ubep.gpt (development version) | ||
|
||
* Setup development environment. | ||
* Initial setup from CorradoLanera/gpt-template. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
#' Create a prompt to ChatGPT | ||
#' | ||
#' Questa funzione è un semplice wrapper per comporre un buon prompt per | ||
#' ChatGPT. L'output non è altro che la giustapposizione su righe separate delle | ||
#' varie componenti (con il testo addizionale racchiuso tra i delimitatori in | ||
#' fondo al prompt). Dunque il suo utilizzo è più che altro focalizzato è utile | ||
#' per ricordare e prendere l'abitudine di inserire le componenti utili per un | ||
#' buon prompt. | ||
#' | ||
#' @param role (chr) The role that ChatGPT should play | ||
#' @param context (chr) The context behind the task required | ||
#' @param task (chr) The tasks ChatGPT should assess | ||
#' @param instructions (chr) Description of steps ChatGPT should follow | ||
#' @param output (chr) The type/kind of output required | ||
#' @param style (chr) The style ChatGPT should use in the output | ||
#' @param examples (chr) Some examples of correct output | ||
#' @param text (chr) Additional text to embed in the prompt | ||
#' @param delimiter (chr) delimiters for the `text` to embed, a sequence of | ||
#' three identical symbols is suggested | ||
#' | ||
#' @return (chr) the glue of all the prompts components | ||
#' @export | ||
#' | ||
#' @examples | ||
#' if (FALSE) { | ||
#' compose_prompt( | ||
#' role = "Sei l'assistente di un docente universitario.", | ||
#' context = " | ||
#' Tu e lui state preparando un workshop sull'utilizzo di ChatGPT | ||
#' per biostatisitci ed epidemiologi.", | ||
#' task = " | ||
#' Il tuo compito è trovare cosa dire per spiegare cosa sia una | ||
#' chat di ChatGPT agli studenti, considerando che potrebbe | ||
#' esserci qualcuno che non ne ha mai sentito parlare (e segue | ||
#' il worksho incuriosito dal titolo o dagli amici).", | ||
#' output = " | ||
#' Riporta un potenziale dialogo tra il docente e gli studenti | ||
#' che assolva ed esemplifichi lo scopo descritto.", | ||
#' style = "Usa un tono amichevole, colloquiale, ma preciso." | ||
#' ) | ||
#' } | ||
compose_prompt <- function( | ||
role = "", context = "", task = "", instructions = "", output = "", | ||
style = "", examples = "", text = "", | ||
delimiter = if (text == "") "" else '""""' | ||
) { | ||
msg_sys <- compose_prompt_system(role, context) | ||
msg_usr <- compose_prompt_user( | ||
task, instructions, output, style, examples, text, delimiter | ||
) | ||
glue::glue( | ||
" | ||
{msg_sys} | ||
{msg_usr} | ||
" | ||
) | ||
} | ||
|
||
#' Compose the ChatGPT System prompt | ||
#' | ||
#' @describeIn compose_prompt | ||
#' | ||
#' @return (chr) The complete system prompt | ||
#' @export | ||
#' @examples | ||
#' if (FALSE) { | ||
#' msg_sys <- compose_prompt_system( | ||
#' role = "Sei l'assistente di un docente universitario.", | ||
#' context = " | ||
#' Tu e lui state preparando un workshop sull'utilizzo di ChatGPT | ||
#' per biostatisitci ed epidemiologi." | ||
#' ) | ||
#' } | ||
compose_prompt_system <- function(role = "", context = "") { | ||
glue::glue(" | ||
{role} | ||
{context} | ||
") | ||
} | ||
|
||
#' Compose the ChatGPT User prompt | ||
#' | ||
#' @describeIn compose_prompt | ||
#' | ||
#' @return (chr) The complete user prompt | ||
#' @export | ||
#' @examples | ||
#' if (FALSE) { | ||
#' msg_usr <- compose_prompt_user( | ||
#' task = " | ||
#' Il tuo compito è trovare cosa dire per spiegare cosa sia una | ||
#' chat di ChatGPT agli studenti, considerando che potrebbe | ||
#' esserci qualcuno che non ne ha mai sentito parlare (e segue | ||
#' il worksho incuriosito dal titolo o dagli amici).", | ||
#' output = " | ||
#' Riporta un potenziale dialogo tra il docente e gli studenti | ||
#' che assolva ed esemplifichi lo scopo descritto.", | ||
#' style = "Usa un tono amichevole, colloquiale, ma preciso." | ||
#' ) | ||
#' } | ||
compose_prompt_user <- function( | ||
task = "", instructions = "", output = "", style = "", examples = "", | ||
text = "", delimiter = if (text == "") "" else '""""' | ||
) { | ||
glue::glue(" | ||
{task} | ||
{instructions} | ||
{output} | ||
{style} | ||
{examples} | ||
{delimiter} | ||
{text} | ||
{delimiter} | ||
") | ||
} | ||
|
||
|
||
create_usr_data_prompter <- function( | ||
task = "", instructions = "", output = "", style = "", examples = "" | ||
) { | ||
function(text) { | ||
compose_prompt_user( | ||
task = task, instructions = instructions, output = output, | ||
style = style, examples = examples, text = text | ||
) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#' Create a prompt to OpenAI API | ||
#' | ||
#' Questa funzione è un semplice wrapper per comporre un prompt per le | ||
#' API OpenAI a ChatGPT. Per la sua semplicità, per lo più didattica, | ||
#' non considera alternanze successive di prompt nella chat ma solo | ||
#' l'impostazione iniziale del sistema e il primo messaggio dell'utente. | ||
#' | ||
#' @details In genere, una conversazione è formattata con un messaggio | ||
#' di sistema, seguito da messaggi alternati dell'utente e | ||
#' dell'assistente. | ||
#' | ||
#' Il messaggio di sistema consente di impostare il comportamento | ||
#' dell'assistente. Ad esempio, è possibile modificare la personalità | ||
#' dell'assistente o fornire istruzioni specifiche sul comportamento da | ||
#' tenere durante la conversazione. Tuttavia, il messaggio di sistema è | ||
#' facoltativo e il comportamento del modello senza un messaggio di | ||
#' sistema sarà probabilmente simile a quello di un messaggio generico | ||
#' come "Sei un assistente utile". | ||
#' | ||
#' I messaggi dell'utente forniscono richieste o commenti a cui | ||
#' l'assistente deve rispondere. I messaggi dell'assistente memorizzano | ||
#' le risposte precedenti dell'assistente, ma possono anche essere | ||
#' scritti dall'utente per fornire esempi del comportamento desiderato. | ||
#' | ||
#' | ||
#' @param sys_msg (chr) messaggio da usare per impostare il sistema | ||
#' @param usr_msg (chr) messaggio da usare come richiesta al sistema | ||
#' passata dall'utente | ||
#' | ||
#' @return (chr) una lista di due lista, la prima con il messaggio da | ||
#' usare per il prompt di impostazione del sistema di assistenza delle | ||
#' API, la seconda con il prompt di richiesta dell'utente. | ||
#' @export | ||
#' | ||
#' @examples | ||
#' msg_sys <- compose_prompt_system( | ||
#' role = "Sei l'assistente di un docente universitario.", | ||
#' context = " | ||
#' Tu e lui state preparando un workshop sull'utilizzo di ChatGPT | ||
#' per biostatisitci ed epidemiologi." | ||
#' ) | ||
#' | ||
#' msg_usr <- compose_prompt_user( | ||
#' task = " | ||
#' Il tuo compito è trovare cosa dire per spiegare cosa sia una | ||
#' chat di ChatGPT agli studenti, considerando che potrebbe | ||
#' esserci qualcuno che non ne ha mai sentito parlare (e segue | ||
#' il worksho incuriosito dal titolo o dagli amici).", | ||
#' output = " | ||
#' Riporta un potenziale dialogo tra il docente e gli studenti | ||
#' che assolva ed esemplifichi lo scopo descritto.", | ||
#' style = "Usa un tono amichevole, colloquiale, ma preciso." | ||
#' ) | ||
#' | ||
#' compose_prompt_api(msg_sys, msg_usr) | ||
#' | ||
#' | ||
compose_prompt_api <- function(sys_msg, usr_msg) { | ||
list( | ||
list( | ||
role = "system", | ||
content = sys_msg | ||
), | ||
list( | ||
role = "user", | ||
content = usr_msg | ||
) | ||
) | ||
} |
Oops, something went wrong.