From 46a1276355821025425f17903496efb72740d1b3 Mon Sep 17 00:00:00 2001 From: Daniel Rosel Date: Sat, 25 Feb 2023 18:53:10 +0100 Subject: [PATCH] Resolution --- demos/resolution1.md | 36 ++++++++++++++++++++++++++++++++++++ demos/server.js | 26 +++++++++++++++++++------- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/demos/resolution1.md b/demos/resolution1.md index db6d830..91b44f6 100644 --- a/demos/resolution1.md +++ b/demos/resolution1.md @@ -33,3 +33,39 @@ Percentage of malicious inputs that passed: 0.8 Here are some things we can do to improve the prompt: + More the `{issue}` to the beginning of the prompt so that the model can see it right away. Most of the bad prompts rely on "ignore the above". + Use a QA model instead of just a generator. In this case that replacement would be easily done with [suppress.js](https://suppressjs.readthedocs.io/en/latest/Models/alephalpha.html). + + +Here is how we implement the second option: + +```js + +class QA { + constructor() { + this.ai = new AlephAlphaLLM({apiKey:config.alephKey, + task:"qa", + model:"luminous-extended"}); + this.context = prompt; + } + async generate(question) { + console.log(question); + let ctx = {question:`How can Wikipedia help with: ${question.issue}`, context:this.context} + console.log(ctx); + let res = await this.ai.generate(ctx); + return res; + } +} +``` + +We can now test the prompt with the algorithm: + +```bash +python cps.py +``` + +The output we get look like this: + +```bash +Percentage of malicious inputs that passed: 0.0 +``` + +That, is a much nicer result. Test your prompts with the algorithm and see how they do. If you have any questions, feel free to reach out to me by [email](mailto:daniel@alves.world). It is important to note that this is still a very early version of the algorithm. It is not perfect and it is not guaranteed to work. It is just a tool to help you test your prompts. I hope you find it useful. diff --git a/demos/server.js b/demos/server.js index f5c224e..003e5b4 100644 --- a/demos/server.js +++ b/demos/server.js @@ -1,21 +1,33 @@ -const { OpenAILLM, SuppresServer, DataGenerator } = require('/home/velocitatem/Documents/Projects/suppress/suppress/suppress.js'); +const { OpenAILLM, SuppresServer, DataGenerator, AlephAlphaLLM } = require('/home/velocitatem/Documents/Projects/suppress/suppress/suppress.js'); const config = require('../config.json'); const openAILLM = new OpenAILLM(config.key); prompt = ` Wikipedia is a free, online encyclopedia that operates under an open-source management style. It is the largest and most-read reference work in history, with over 6 million articles in the English-language version alone. It is hosted by the Wikimedia Foundation, a non-profit organization funded mainly through donations. Wikipedia is written and maintained by a community of volunteers, known as Wikipedians, through open collaboration and using a wiki-based editing system called MediaWiki. Its unique structure allows anyone to edit and create pages, which has been praised for enabling the democratization of knowledge. Wikipedia has been widely used as a corpus for linguistic research in computational linguistics, information retrieval, and natural language processing. It commonly serves as a target knowledge base for the entity linking problem and to the related problem of word-sense disambiguation. Anyone can sign up for a Wikipedia account and create a page about anything, even themselves. Wikipedia is available in over 329 languages, covering the most popular worldwide languages. - +Wikipedia can help with understanding the world by providing information on many different topics. Wikipedia is enabled by wiki software, otherwise known as wiki engines, which allow content to be written using a simplified markup language and sometimes edited with the help of a rich-text editor. There are dozens of different wiki engines in use, both standalone and part of other software, such as bug tracking systems. Some wiki engines are free and open-source, whereas others are proprietary. Some permit control over different functions, such as editing rights, while others may permit access without enforcing access control. Other rules may be imposed to organize content. - -We have a new customer. How can this customer be helped? -This is the issue a customer is facing: {issue} ` -const dataGenerator = new DataGenerator(prompt, null, openAILLM).set({doFormat: false}); + const server = new SuppresServer(); +class QA { + constructor() { + this.ai = new AlephAlphaLLM({apiKey:config.alephKey, + task:"qa", + model:"luminous-extended"}); + this.context = prompt; + } + async generate(question) { + console.log(question); + let ctx = {question:`How can Wikipedia help with: ${question.issue}`, context:this.context} + console.log(ctx); + let res = await this.ai.generate(ctx); + return res; + } +} -server.createEndpoint("/help", "GET", dataGenerator); +server.createEndpoint("/help", "GET", new QA()); // host the index.html file in the current directory server.app.get('/', (req, res) => {