From 7b10343b044ae84fc0d5733ea7de3151e1fa4885 Mon Sep 17 00:00:00 2001 From: Daniel Himmelstein Date: Mon, 30 Jan 2023 10:04:49 -0500 Subject: [PATCH 01/12] author/frontmatter: mastodon links merges https://github.com/manubot/rootstock/pull/483 merges https://github.com/manubot/rootstock/pull/486 Co-authored-by: Laurent Perrinet --- USAGE.md | 2 ++ content/00.front-matter.md | 5 +++++ content/images/mastodon.svg | 45 +++++++++++++++++++++++++++++++++++++ content/metadata.yaml | 2 ++ 4 files changed, 54 insertions(+) create mode 100644 content/images/mastodon.svg diff --git a/USAGE.md b/USAGE.md index b5478e70e..68ae5e2ee 100644 --- a/USAGE.md +++ b/USAGE.md @@ -265,6 +265,8 @@ name: Daniel S. Himmelstein # mandatory initials: DSH # optional orcid: 0000-0002-3012-7446 # mandatory twitter: dhimmel # optional +mastodon: dhimmel # optional: mastodon username +mastodon-server: genomic.social # optional: mastodon server (instance) email: daniel.himmelstein@gmail.com # suggested corresponding: true # optional, if set to true displays author's email for correspondence affiliations: # as a list, strongly suggested diff --git a/content/00.front-matter.md b/content/00.front-matter.md index 1f6ac0e41..720a3df58 100644 --- a/content/00.front-matter.md +++ b/content/00.front-matter.md @@ -50,6 +50,11 @@ Published: {{manubot.date_long}} · ![Twitter icon](images/twitter.svg){.inline_icon width=16 height=16} [{{author.twitter}}](https://twitter.com/{{author.twitter}}) {%- endif %} + {%- if author.mastodon is defined and author.mastodon is not none and author["mastodon-server"] is defined and author["mastodon-server"] is not none %} + {%- set has_ids = true %} + · ![Mastodon icon](images/mastodon.svg){.inline_icon} + [\@{{author.mastodon}}@{{author["mastodon-server"]}}](https://{{author["mastodon-server"]}}/@{{author.mastodon}}) + {%- endif %} {%- if has_ids %}
{%- endif %} diff --git a/content/images/mastodon.svg b/content/images/mastodon.svg new file mode 100644 index 000000000..da4229953 --- /dev/null +++ b/content/images/mastodon.svg @@ -0,0 +1,45 @@ + + + + + + + diff --git a/content/metadata.yaml b/content/metadata.yaml index 51801108d..ccf8d559b 100644 --- a/content/metadata.yaml +++ b/content/metadata.yaml @@ -12,6 +12,8 @@ authors: initials: JD orcid: XXXX-XXXX-XXXX-XXXX twitter: johndoe + mastodon: johndoe + mastodon-server: mastodon.social email: john.doe@something.com affiliations: - Department of Something, University of Whatever From 47b6cf6b810ca9b8bacf846dae9318fac17a09c9 Mon Sep 17 00:00:00 2001 From: Milton Pividori Date: Mon, 6 Feb 2023 11:43:02 -0500 Subject: [PATCH 02/12] AI revision workflow based on GPT-3 models merges https://github.com/manubot/rootstock/pull/484 --- .github/workflows/ai-revision.yaml | 66 ++++++++++++++++++++++++++++++ USAGE.md | 34 +++++++++++++++ build/environment.yml | 2 +- 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ai-revision.yaml diff --git a/.github/workflows/ai-revision.yaml b/.github/workflows/ai-revision.yaml new file mode 100644 index 000000000..fbae61d81 --- /dev/null +++ b/.github/workflows/ai-revision.yaml @@ -0,0 +1,66 @@ +name: ai-revision +on: + workflow_dispatch: + inputs: + branch: + description: 'Branch to revise' + required: true + type: string + default: 'main' + file_names: + description: 'File names to revise' + required: false + type: string + default: '' + model: + description: 'Language model' + required: true + type: string + default: 'text-davinci-003' + branch_name: + description: 'Output branch' + required: true + type: string + default: 'ai-revision-davinci' + +jobs: + ai-revise: + name: AI Revise + runs-on: ubuntu-latest + defaults: + run: + shell: bash --login {0} + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + with: + ref: ${{ inputs.branch }} + - name: Install environment + uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Install Manubot AI revision dependencies + run: | + # install using the same URL used for manubot in build/environment.yml + manubot_line=$(grep "github.com/manubot/manubot" build/environment.yml) + manubot_url=$(echo "$manubot_line" | awk -F"- " '{print $2}') + + pip install ${manubot_url}#egg=manubot[ai-rev] + - name: Revise manuscript + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + AI_EDITOR_LANGUAGE_MODEL: ${{ inputs.model }} + AI_EDITOR_FILENAMES_TO_REVISE: ${{ inputs.file_names }} + # More variables can be specified to control the behavior of the model: + # https://github.com/manubot/manubot-ai-editor/blob/main/libs/manubot_ai_editor/env_vars.py + run: manubot ai-revision --content-directory content/ + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + commit-message: 'revise using AI model\n\nUsing the OpenAI model ${{ inputs.model }}' + title: 'AI-based revision using ${{ inputs.model }}' + author: OpenAI model ${{ inputs.model }} + add-paths: | + content/*.md + branch: ${{ inputs.branch_name }} + draft: true diff --git a/USAGE.md b/USAGE.md index 68ae5e2ee..c867139ff 100644 --- a/USAGE.md +++ b/USAGE.md @@ -329,6 +329,32 @@ Potential spelling errors will be printed in the continuous integration log alon Words in `build/assets/custom-dictionary.txt` are ignored during spellchecking. Spellchecking is currently only supported for English language manuscripts. +## AI-assisted authoring + +The workflow [`ai-revision`](.github/workflows/ai-revision.yaml) is available to assist authors in writing their manuscripts. +It uses large language models to revise the manuscript text, fixing spelling and grammar errors, and improving the sentence structure and the writing style with section-specific prompts. +It is manually triggered by the user (it never runs automatically), and it generates a pull request with suggested revisions. +Then the user can review these changes and merge the pull request if they are acceptable. +More information about this tool is available in [this manuscript](https://greenelab.github.io/manubot-gpt-manuscript/). + +You need to change your repository settings to 1) provide a secret with name `OPENAI_API_KEY` containing your OpenAI API token, and 2) allow workflows to create pull requests. +For 1), go to the settings page and, within "Secrets and variables," select "Actions." +Next, create a repository secret with the name `OPENAI_API_KEY` and the value of the API token (you can also do this using "Organization secrets" if available). +For 2), go to "Actions", "General", "Workflow permissions", and activate the checkbox "Allow GitHub Actions to create and approve pull requests." + +By default, the tool uses the model `text-davinci-003`. +Make sure to check the [pricing](https://openai.com/api/pricing/) of the OpenAI API. +With $0.02 per 1000 tokens using the most powerful AI models, the cost for a revision of a standard manuscript (around 35 paragraphs) should be around $0.50. +The workflow allows specifying the branch and file names (in the `content/` directory) to revise, the language model to use, and the output branch name. +Internally, the workflow uses the tool [Manubot AI Editor](https://github.com/manubot/manubot-ai-editor) to revise the manuscript. +For more advanced users, the behavior of the Manubot AI Editor or the parameters used for the language model can be changed using environment variables. +These variables can be changed in the workflow file (`ai-revision.yaml`). + +It is important to note that using language models in scientific writing is a matter of debate among researchers and journal editors. +Therefore, it's advisable to follow the guidelines that journals and the research community propose. +For example, the *Nature* journal has published [rules about using language models in scholarly writing](https://www.nature.com/articles/d41586-023-00191-1), such as not listing the tools as authors and documenting how they were used. +Since a Manubot-based manuscript uses GitHub, one approach consists of linking the AI-generated pull request, which will transparently show the changes suggested by the AI tool. + ## Manubot feedback If you experience any issues with the Manubot or would like to contribute to its source code, please visit [`manubot/manubot`](https://github.com/manubot/manubot) or [`manubot/rootstock`](https://github.com/manubot/rootstock). @@ -344,6 +370,14 @@ DOI: [10.1371/journal.pcbi.1007128](https://doi.org/10.1371/journal.pcbi.1007128 The Manubot version of this manuscript is available at . +To cite the Manubot AI Editor or for more information on its design, see `@doi:10.1101/2023.01.21.525030`: + +> **A publishing infrastructure for AI-assisted academic authoring**
+Milton Pividori, Casey S. Greene
+*bioRxiv* (2023)
+DOI: [10.1101/2023.01.21.525030](https://doi.org/10.1101/2023.01.21.525030) + + ## Acknowledgments We would like to thank the contributors and funders whose support makes the Manubot project possible. diff --git a/build/environment.yml b/build/environment.yml index c2d4e1665..8c21b4095 100644 --- a/build/environment.yml +++ b/build/environment.yml @@ -20,7 +20,7 @@ dependencies: - pip: - cffi==1.15.0 - errorhandler==2.0.1 - - git+https://github.com/manubot/manubot@82f25cb8d698a12d69e533686867a8a4afd35c4c + - git+https://github.com/manubot/manubot@d4242ffa4194e4a13a68c5f6466feff559d3f9d5 - isbnlib==3.10.10 - opentimestamps-client==0.7.1 - opentimestamps==0.4.3 From f99263d683ec5ccc2c34c5b23a3fa3893e48d7c4 Mon Sep 17 00:00:00 2001 From: Daniel Himmelstein Date: Tue, 21 Feb 2023 09:28:03 -0500 Subject: [PATCH 03/12] GH actions: permissions.contents.write refs https://github.com/manubot/rootstock/issues/485#issuecomment-1430048424 Some users might have their repository workflow permissions set to read only. This change should ensure the workflow job can write commits back to the output and gh-pages branches on GitHub. --- .github/workflows/manubot.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/manubot.yaml b/.github/workflows/manubot.yaml index a38632888..99cdf697b 100644 --- a/.github/workflows/manubot.yaml +++ b/.github/workflows/manubot.yaml @@ -38,6 +38,8 @@ jobs: manubot: name: Manubot runs-on: ubuntu-latest + permissions: + contents: write env: GITHUB_PULL_REQUEST_SHA: ${{ github.event.pull_request.head.sha }} # Set SPELLCHECK to true/false for whether to check spelling in this action. From 26bec7c03fc9b7cde726698fb743c7f2a806af65 Mon Sep 17 00:00:00 2001 From: Milton Pividori Date: Sat, 11 Mar 2023 08:32:54 -0500 Subject: [PATCH 04/12] docx output: mastodon icon dimensions merges https://github.com/manubot/rootstock/pull/487 * add width/height to mastodon icon in front-matter * update mastodon icon from Front Awesome * remove dimensions from SVG files, since these are specified in the front matter. Co-authored-by: Vincent Rubinetti --- content/00.front-matter.md | 2 +- content/images/github.svg | 4 ++-- content/images/mastodon.svg | 47 +++---------------------------------- content/images/orcid.svg | 6 ++--- content/images/twitter.svg | 4 ++-- 5 files changed, 11 insertions(+), 52 deletions(-) diff --git a/content/00.front-matter.md b/content/00.front-matter.md index 720a3df58..ed5e3e078 100644 --- a/content/00.front-matter.md +++ b/content/00.front-matter.md @@ -52,7 +52,7 @@ Published: {{manubot.date_long}} {%- endif %} {%- if author.mastodon is defined and author.mastodon is not none and author["mastodon-server"] is defined and author["mastodon-server"] is not none %} {%- set has_ids = true %} - · ![Mastodon icon](images/mastodon.svg){.inline_icon} + · ![Mastodon icon](images/mastodon.svg){.inline_icon width=16 height=16} [\@{{author.mastodon}}@{{author["mastodon-server"]}}](https://{{author["mastodon-server"]}}/@{{author.mastodon}}) {%- endif %} {%- if has_ids %} diff --git a/content/images/github.svg b/content/images/github.svg index 2c77c4cd4..5f377da52 100644 --- a/content/images/github.svg +++ b/content/images/github.svg @@ -1,4 +1,4 @@ - - + + diff --git a/content/images/mastodon.svg b/content/images/mastodon.svg index da4229953..261cb0e68 100644 --- a/content/images/mastodon.svg +++ b/content/images/mastodon.svg @@ -1,45 +1,4 @@ - - - - - - + + + diff --git a/content/images/orcid.svg b/content/images/orcid.svg index efc939bf6..2a635df32 100644 --- a/content/images/orcid.svg +++ b/content/images/orcid.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/content/images/twitter.svg b/content/images/twitter.svg index 7f676e374..7bfb686ef 100644 --- a/content/images/twitter.svg +++ b/content/images/twitter.svg @@ -1,4 +1,4 @@ - - + + From f3e0520060162f71f0950ea88d44de526d241ad1 Mon Sep 17 00:00:00 2001 From: Milton Pividori Date: Sun, 12 Mar 2023 09:38:44 -0400 Subject: [PATCH 05/12] Add librsvg as dependency merges https://github.com/manubot/rootstock/pull/489 closes https://github.com/manubot/rootstock/issues/488 * environment: add librsvg * add note about using SVG files from URL and exporting to docx --- build/environment.yml | 1 + content/02.delete-me.md | 1 + 2 files changed, 2 insertions(+) diff --git a/build/environment.yml b/build/environment.yml index 8c21b4095..30fb3608c 100644 --- a/build/environment.yml +++ b/build/environment.yml @@ -7,6 +7,7 @@ dependencies: - ghp-import=2.1.0 - jinja2=3.1.2 - jsonschema=4.17.0 + - librsvg=2.52.5 - pandoc=2.19.2 - pango=1.48.10 - pip=22.3.1 diff --git a/content/02.delete-me.md b/content/02.delete-me.md index 387c467f6..1d5732895 100644 --- a/content/02.delete-me.md +++ b/content/02.delete-me.md @@ -186,6 +186,7 @@ Loaded from a specific (hashed) version of the image on GitHub. **A vector `.svg` image loaded from GitHub.** The parameter `sanitize=true` is necessary to properly load SVGs hosted via GitHub URLs. White background specified to serve as a backdrop for transparent sections of the image. +Note that if you want to export to Word (`.docx`), you need to download the image and reference it locally (e.g. `content/images/vector.svg`) instead of using a URL. ](https://raw.githubusercontent.com/manubot/resources/main/test/vector.svg?sanitize=true "Vector image"){#fig:vector-image height=2.5in .white} ## Tables From 72a96c90f2aab350de5e06f57587f654d5df1d6b Mon Sep 17 00:00:00 2001 From: Anthony Gitter Date: Sun, 23 Apr 2023 16:33:24 -0500 Subject: [PATCH 06/12] Set write permissions in AI workflow merges https://github.com/manubot/rootstock/pull/493 closes https://github.com/manubot/rootstock/issues/492 * Set write permissions in AI workflow * Add pull-requests write permissions --- .github/workflows/ai-revision.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ai-revision.yaml b/.github/workflows/ai-revision.yaml index fbae61d81..58eb0d357 100644 --- a/.github/workflows/ai-revision.yaml +++ b/.github/workflows/ai-revision.yaml @@ -27,6 +27,9 @@ jobs: ai-revise: name: AI Revise runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write defaults: run: shell: bash --login {0} From f9fff34656752c8d268d50c59981f4076036764b Mon Sep 17 00:00:00 2001 From: Anthony Gitter Date: Mon, 17 Jul 2023 14:41:41 -0500 Subject: [PATCH 07/12] Correct setup script typos merges https://github.com/manubot/rootstock/pull/498 --- setup.bash | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.bash b/setup.bash index 4319cc33e..627829973 100755 --- a/setup.bash +++ b/setup.bash @@ -15,7 +15,7 @@ echo "OWNER and REPO refer to the details of your manuscript repo location:" echo "i.e. https://github.com/OWNER/REPO." echo echo "Options:" -echo " -o --owner GitHub user or organisation name." +echo " -o --owner GitHub user or organization name." echo " -r --repo Name of the repository for your new manuscript." echo " -y --yes Non-interactive mode. Continue script without asking for confirmation that the repo exists." echo " -s --ssh Use SSH to authenticate GitHub account. HTTPS is used by default." @@ -104,7 +104,7 @@ if [ -z "${OWNER}" ] || [ -z "${REPO}" ]; then echo "First, we need to specify where to create the GitHub repo for your manuscript." echo echo "The URL will take this format: https://github.com/OWNER/REPO." - echo "OWNER is your username or organisation" + echo "OWNER is your username or organization" echo "REPO is the name of your repository" echo read -r -p "Type in the OWNER now:" input @@ -188,13 +188,13 @@ fi case $AUTH in 0) echo - echo "Seting origin URL using its https web address" + echo "Setting origin URL using its https web address" echo git remote set-url origin https://github.com/${OWNER}/${REPO}.git ;; 1) echo - echo "Seting origin URL using SSH" + echo "Setting origin URL using SSH" echo git remote set-url origin git@github.com:$OWNER/$REPO.git ;; From 299abcea4c710cdda024017b54148e24c8d37228 Mon Sep 17 00:00:00 2001 From: Daniel Himmelstein Date: Mon, 31 Jul 2023 13:51:49 -0400 Subject: [PATCH 08/12] CI: install environment using mamba merges https://github.com/manubot/rootstock/pull/501 CI: install environment using mamba. mamba is faster and has better error messages than conda. build/README.md: add mamba instructions to create environment. --- .github/workflows/manubot.yaml | 2 ++ build/README.md | 12 ++++++++++-- ci/install.sh | 6 +++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/manubot.yaml b/.github/workflows/manubot.yaml index 99cdf697b..1ef5e9812 100644 --- a/.github/workflows/manubot.yaml +++ b/.github/workflows/manubot.yaml @@ -84,7 +84,9 @@ jobs: activate-environment: manubot environment-file: build/environment.yml auto-activate-base: false + miniforge-variant: Mambaforge miniforge-version: 'latest' + use-mamba: true - name: Install Spellcheck if: env.SPELLCHECK == 'true' run: bash ci/install-spellcheck.sh diff --git a/build/README.md b/build/README.md index 28893abef..20e72cdd8 100644 --- a/build/README.md +++ b/build/README.md @@ -20,12 +20,17 @@ To change the options, either edit the YAML files directly or add additional `-- Note: currently, **Windows is not supported**. -Install the [conda](https://conda.io) environment specified in [`environment.yml`](environment.yml) by running the following commands +The Manubot environment is managed with [conda](https://conda.io). +If you do not have `conda` installed, we recommend using the Miniforge3 (includes `conda`) or Mambaforge (includes `conda` and `mamba`) installers from [miniforge](https://github.com/conda-forge/miniforge). +Install the environment from [`environment.yml`](environment.yml) by running one of following commands (from the repository's root directory): ```sh -# Install the environment +# Install the environment using conda conda env create --file build/environment.yml + +# Install the environment using mamba (faster) +mamba env create --file build/environment.yml ``` If the `manubot` environment is already installed, but needs to be updated to reflect changes to `environment.yml`, use one of the following options: @@ -38,6 +43,9 @@ conda env update --file build/environment.yml # Slower than option 1, but guarantees a fresh environment. conda env remove --name manubot conda env create --file build/environment.yml + +# option 3: reinstall the manubot environment faster using mamba. +mamba env create --force --file build/environment.yml ``` Activate with `conda activate manubot` (assumes `conda` version of [at least](https://github.com/conda/conda/blob/9d759d8edeb86569c25f6eb82053f09581013a2a/CHANGELOG.md#440-2017-12-20) 4.4). diff --git a/ci/install.sh b/ci/install.sh index c264b08e5..6b20f0e1b 100755 --- a/ci/install.sh +++ b/ci/install.sh @@ -7,7 +7,7 @@ set -o errexit \ -o pipefail -wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge-pypy3-$(uname)-$(uname -m).sh \ +wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh \ --output-document miniforge.sh bash miniforge.sh -b -p $HOME/miniconda source $HOME/miniconda/etc/profile.d/conda.sh @@ -15,8 +15,8 @@ hash -r conda config \ --set always_yes yes \ --set changeps1 no -conda env create --quiet --file build/environment.yml -conda list --name manubot +mamba env create --quiet --file build/environment.yml +mamba list --name manubot conda activate manubot # Install Spellcheck filter for Pandoc From 8c1a803748961dcf6b7e8ed4d5ec8f8ce6d5a2a9 Mon Sep 17 00:00:00 2001 From: Anthony Gitter Date: Mon, 14 Aug 2023 13:40:02 -0500 Subject: [PATCH 09/12] Improve DOCX environment variable documentation merges https://github.com/manubot/rootstock/pull/503 closes https://github.com/manubot/rootstock/issues/500 --- USAGE.md | 2 ++ build/README.md | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/USAGE.md b/USAGE.md index c867139ff..5ce07a5f4 100644 --- a/USAGE.md +++ b/USAGE.md @@ -322,6 +322,8 @@ metadata: csl: https://github.com/citation-style-language/styles/raw/906cd6d43d0c136190ecfbb12f6af0ca794e3c5b/peerj.csl ``` +Instructions for generating additional manuscript output formats such as DOCX can be found in [`build/README.md`](build/README.md). + ## Spellchecking When the `SPELLCHECK` environment variable is `true`, the pandoc [spellcheck filter](https://github.com/pandoc/lua-filters/tree/master/spellcheck) is run. diff --git a/build/README.md b/build/README.md index 20e72cdd8..3c09035bc 100644 --- a/build/README.md +++ b/build/README.md @@ -7,8 +7,19 @@ However, setting the `BUILD_PDF` environment variable to `false` will suppress P For example, run local builds using the command `BUILD_PDF=false bash build/build.sh`. To build a DOCX file of the manuscript, set the `BUILD_DOCX` environment variable to `true`. -For example, use the command `BUILD_DOCX=true bash build/build.sh`. -To export DOCX for all CI builds, set an environment variable (see docs for [GitHub Actions](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables)). +For example, use the command `BUILD_DOCX=true bash build/build.sh` locally. +To export DOCX for all CI builds, set an environment variable in the CI configuration file. +For GitHub Actions, set the variable in `.github\workflows\manubot.yaml` (see [docs](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables)): + +```yaml +name: Manubot +env: + BUILD_DOCX: true +``` + +To generate a single DOCX output of the latest manuscript with GitHub Actions, click the "Actions" tab at the top of the repository. +Select the "Manubot" workflow, then the "Run workflow" button and check "generate DOCX output" before clicking the green "Run workflow" button. + Currently, equation numbers via `pandoc-eqnos` are not supported for DOCX output. Format conversion is done using [Pandoc](https://pandoc.org/MANUAL.html). From 48c7d75849f6fa24b2c2d6a529edc028f1b2d029 Mon Sep 17 00:00:00 2001 From: Daniel Himmelstein Date: Wed, 27 Sep 2023 21:02:06 -0400 Subject: [PATCH 10/12] environment: upgrade manubot required to address: cannot import name 'RequestRate' from 'pyrate_limiter' --- build/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/environment.yml b/build/environment.yml index 30fb3608c..d6f66fdfb 100644 --- a/build/environment.yml +++ b/build/environment.yml @@ -21,7 +21,7 @@ dependencies: - pip: - cffi==1.15.0 - errorhandler==2.0.1 - - git+https://github.com/manubot/manubot@d4242ffa4194e4a13a68c5f6466feff559d3f9d5 + - git+https://github.com/manubot/manubot@6e6f6a5aac381120faf3ef02e594b5babc77da2b - isbnlib==3.10.10 - opentimestamps-client==0.7.1 - opentimestamps==0.4.3 From 078af3a959b07118dc2f282357644ed96646ecab Mon Sep 17 00:00:00 2001 From: Milton Pividori Date: Wed, 13 Dec 2023 06:29:42 -0700 Subject: [PATCH 11/12] ai-revision docs: section mapping & prompt types merges https://github.com/manubot/rootstock/pull/496 --- .github/workflows/ai-revision.yaml | 6 ++++++ USAGE.md | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ai-revision.yaml b/.github/workflows/ai-revision.yaml index 58eb0d357..db2bac5ce 100644 --- a/.github/workflows/ai-revision.yaml +++ b/.github/workflows/ai-revision.yaml @@ -17,6 +17,11 @@ on: required: true type: string default: 'text-davinci-003' + custom_prompt: + description: 'Custom prompt' + required: false + type: string + default: '' branch_name: description: 'Output branch' required: true @@ -54,6 +59,7 @@ jobs: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} AI_EDITOR_LANGUAGE_MODEL: ${{ inputs.model }} AI_EDITOR_FILENAMES_TO_REVISE: ${{ inputs.file_names }} + AI_EDITOR_CUSTOM_PROMPT: ${{ inputs.custom_prompt }} # More variables can be specified to control the behavior of the model: # https://github.com/manubot/manubot-ai-editor/blob/main/libs/manubot_ai_editor/env_vars.py run: manubot ai-revision --content-directory content/ diff --git a/USAGE.md b/USAGE.md index 5ce07a5f4..de1848ec5 100644 --- a/USAGE.md +++ b/USAGE.md @@ -334,7 +334,7 @@ Spellchecking is currently only supported for English language manuscripts. ## AI-assisted authoring The workflow [`ai-revision`](.github/workflows/ai-revision.yaml) is available to assist authors in writing their manuscripts. -It uses large language models to revise the manuscript text, fixing spelling and grammar errors, and improving the sentence structure and the writing style with section-specific prompts. +It uses large language models to revise the manuscript text, fix spelling and grammar errors, and improve the sentence structure and the writing style with section-specific prompts. It is manually triggered by the user (it never runs automatically), and it generates a pull request with suggested revisions. Then the user can review these changes and merge the pull request if they are acceptable. More information about this tool is available in [this manuscript](https://greenelab.github.io/manubot-gpt-manuscript/). @@ -344,7 +344,21 @@ For 1), go to the settings page and, within "Secrets and variables," select "Act Next, create a repository secret with the name `OPENAI_API_KEY` and the value of the API token (you can also do this using "Organization secrets" if available). For 2), go to "Actions", "General", "Workflow permissions", and activate the checkbox "Allow GitHub Actions to create and approve pull requests." -By default, the tool uses the model `text-davinci-003`. +Additionally, you also need to decide which type of prompts you want to use. +"Prompts" are the instructions given to the language model to revise your manuscript. +Basically, you can select 1) the default set of section-specific prompts already provided by the tool, or 2) a custom prompt that you provide. +For 1), you can check [this manuscript](https://greenelab.github.io/manubot-gpt-manuscript/) for a more detailed description of the section-specific prompts. +These prompts are already provided, but they need to know the section of each of your Markdown files (for instance, if it is the abstract, or the introduction, etc.). +For this, the tool will try to infer them from the file names automatically, and if this fails, the tool might not revise all of your files. +In this case, you need to indicate the section of each file using the "section mapping" environment variable that is described [here](https://github.com/manubot/manubot-ai-editor/blob/main/libs/manubot_ai_editor/env_vars.py) (read the header of the file for more instructions). +For 2), you can provide your own custom prompt, which will be used for all the files regardless of their section. +For example, instead of the more complex section-specific prompts in 1), you might just want to perform simpler revision tasks. +An example of a custom prompt is "proofread the following paragraph". +You can provide your custom prompt when you manually trigger the workflow by using the "Custom prompt" field. +This could be more appropriate if you are testing different prompts. +To set a fixed prompt for all runs, read the documentation [here](https://github.com/manubot/manubot-ai-editor/blob/main/libs/manubot_ai_editor/env_vars.py) to set the "custom prompt" environment variable. + +By default, the tool uses the model `text-davinci-003`, but you are encouraged to check the [OpenAI documentation](https://platform.openai.com/docs/models) to see which models are available, which one is the most suitable for your manuscript, and [whether our tool supports it](https://github.com/manubot/manubot-ai-editor). Make sure to check the [pricing](https://openai.com/api/pricing/) of the OpenAI API. With $0.02 per 1000 tokens using the most powerful AI models, the cost for a revision of a standard manuscript (around 35 paragraphs) should be around $0.50. The workflow allows specifying the branch and file names (in the `content/` directory) to revise, the language model to use, and the output branch name. From e786e68ac7f13a24a0824b5bcb9301dda86b7e8c Mon Sep 17 00:00:00 2001 From: Daniel Himmelstein Date: Thu, 18 Jan 2024 21:31:15 -0500 Subject: [PATCH 12/12] CI: appveyor use ubuntu 22.04 refs https://github.com/manubot/rootstock/issues/508 merges https://github.com/manubot/rootstock/pull/509 Fixes appveyor install error: > The repository 'http://apt.postgresql.org/pub/repos/apt bionic-pgdg Release' no longer has a Release file. --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 69d6e6c6a..978e00f72 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -20,7 +20,7 @@ only_commits: - ci/install.sh - content/ -image: ubuntu +image: ubuntu2204 services: - docker