From 1d14f7ffafcb15ee76a00a72e9aacefc39721517 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 23 Mar 2023 03:16:29 +1100 Subject: [PATCH] FEATURE: Add a markdown table AI helper (#25) --- config/locales/server.en.yml | 3 +- .../ai-helper/600_completion_prompts.rb | 39 +++++++++++++++++++ lib/modules/ai_helper/open_ai_prompt.rb | 3 +- lib/shared/inference/openai_completions.rb | 2 +- 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index a7c54905..5e3a4c35 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -50,7 +50,7 @@ en: reasons: flagged_by_toxicity: The AI plugin flagged this after classifying it as toxic. flagged_by_nsfw: The AI plugin flagged this after classifying at least one of the attached images as NSFW. - + errors: prompt_message_length: The message %{idx} is over the 1000 character limit. invalid_prompt_role: The message %{idx} has an invalid role. @@ -61,3 +61,4 @@ en: translate: Translate to English generate_titles: Suggest topic titles proofread: Proofread text + markdown_table: Generate Markdown table diff --git a/db/fixtures/ai-helper/600_completion_prompts.rb b/db/fixtures/ai-helper/600_completion_prompts.rb index 38a0571e..dcf33eb9 100644 --- a/db/fixtures/ai-helper/600_completion_prompts.rb +++ b/db/fixtures/ai-helper/600_completion_prompts.rb @@ -80,3 +80,42 @@ CompletionPrompt.seed do |cp| TEXT ] end + +CompletionPrompt.seed do |cp| + cp.id = -4 + cp.name = "markdown_table" + cp.prompt_type = CompletionPrompt.prompt_types[:diff] + cp.messages = [ + { role: "system", content: <<~TEXT }, + You are a markdown table formatter, I will provide you text and you will format it into a markdown table + TEXT + { role: "user", content: "sam,joe,jane\nage: 22| 10|11" }, + { role: "assistant", content: <<~TEXT }, + | | sam | joe | jane | + |---|---|---|---| + | age | 22 | 10 | 11 | + TEXT + { role: "user", content: <<~TEXT }, + sam: speed 100, age 22 + jane: age 10 + fred: height 22 + TEXT + { role: "assistant", content: <<~TEXT }, + | | speed | age | height | + |---|---|---|---| + | sam | 100 | 22 | - | + | jane | - | 10 | - | + | fred | - | - | 22 | + TEXT + { role: "user", content: <<~TEXT }, + chrome 22ms (first load 10ms) + firefox 10ms (first load: 9ms) + TEXT + { role: "assistant", content: <<~TEXT }, + | Browser | Load Time (ms) | First Load Time (ms) | + |---|---|---| + | Chrome | 22 | 10 | + | Firefox | 10 | 9 | + TEXT + ] +end diff --git a/lib/modules/ai_helper/open_ai_prompt.rb b/lib/modules/ai_helper/open_ai_prompt.rb index 3234cf13..ebe89505 100644 --- a/lib/modules/ai_helper/open_ai_prompt.rb +++ b/lib/modules/ai_helper/open_ai_prompt.rb @@ -6,7 +6,8 @@ module DiscourseAi TRANSLATE = "translate" GENERATE_TITLES = "generate_titles" PROOFREAD = "proofread" - VALID_TYPES = [TRANSLATE, GENERATE_TITLES, PROOFREAD] + MARKDOWN_TABLE = "markdown_table" + VALID_TYPES = [TRANSLATE, GENERATE_TITLES, PROOFREAD, MARKDOWN_TABLE] def available_prompts CompletionPrompt diff --git a/lib/shared/inference/openai_completions.rb b/lib/shared/inference/openai_completions.rb index c5ef7916..2887d889 100644 --- a/lib/shared/inference/openai_completions.rb +++ b/lib/shared/inference/openai_completions.rb @@ -9,7 +9,7 @@ module ::DiscourseAi "Content-Type" => "application/json", } - connection_opts = { request: { write_timeout: 10, read_timeout: 10, open_timeout: 10 } } + connection_opts = { request: { write_timeout: 60, read_timeout: 60, open_timeout: 60 } } response = Faraday.new(nil, connection_opts).post(