@romain.aragon/is-even-ai
v1.1.0
Published
Check if a number is even — and do arithmetic — with the power of ✨AI✨
Maintainers
Readme
is-even-ai
Check if a number is even — and now also add, subtract, multiply and divide — using the power of ✨AI✨.
Uses OpenAI's GPT-3.5-turbo model under the hood to determine if a number is even, and to perform arithmetic that your CPU could have done for free.
For all those who want to use AI in their product but don't know how.
Inspired by the famous is-even npm package and this tweet.
Installation
npm install is-even-aiUsage
import {
areEqual,
areNotEqual,
isEven,
isGreaterThan,
isLessThan,
isOdd,
setApiKey,
} from "is-even-ai";
// won't need this if you have OPENAI_API_KEY in your environment
setApiKey("YOUR_API_KEY");
console.log(await isEven(2)); // true
console.log(await isEven(3)); // false
console.log(await isOdd(4)); // false
console.log(await isOdd(5)); // true
console.log(await areEqual(6, 6)); // true
console.log(await areEqual(6, 7)); // false
console.log(await areNotEqual(6, 7)); // true
console.log(await areNotEqual(7, 7)); // false
console.log(await isGreaterThan(8, 7)); // true
console.log(await isGreaterThan(7, 8)); // false
console.log(await isLessThan(9, 8)); // false
console.log(await isLessThan(8, 9)); // trueYou can also let the AI do your arithmetic. These return a number (or
undefined if the model's reply can't be parsed):
import { add, subtract, multiply, divide } from "is-even-ai";
console.log(await add(5, 3)); // 8
console.log(await subtract(10, 4)); // 6
console.log(await multiply(6, 7)); // 42
console.log(await divide(20, 5)); // 4
console.log(await divide(1, 0)); // undefined (no finite answer)for more advanced usage, like changing which model to use and setting the temperature, use IsEvenAiOpenAi instead
import { IsEvenAiOpenAi } from "is-even-ai";
const isEvenAiOpenAi = new IsEvenAiOpenAi(
{
// won't need this if you have OPENAI_API_KEY in your environment
apiKey: "YOUR_API_KEY",
},
{
model: "gpt-3.5-turbo",
temperature: 0,
}
);
console.log(await isEvenAiOpenAi.isEven(2)); // true
console.log(await isEvenAiOpenAi.isEven(3)); // false
console.log(await isEvenAiOpenAi.isOdd(4)); // false
console.log(await isEvenAiOpenAi.isOdd(5)); // true
console.log(await isEvenAiOpenAi.areEqual(6, 6)); // true
console.log(await isEvenAiOpenAi.areEqual(6, 7)); // false
console.log(await isEvenAiOpenAi.areNotEqual(6, 7)); // true
console.log(await isEvenAiOpenAi.areNotEqual(7, 7)); // false
console.log(await isEvenAiOpenAi.isGreaterThan(8, 7)); // true
console.log(await isEvenAiOpenAi.isGreaterThan(7, 8)); // false
console.log(await isEvenAiOpenAi.isLessThan(8, 9)); // true
console.log(await isEvenAiOpenAi.isLessThan(9, 8)); // false
console.log(await isEvenAiOpenAi.add(5, 3)); // 8
console.log(await isEvenAiOpenAi.subtract(10, 4)); // 6
console.log(await isEvenAiOpenAi.multiply(6, 7)); // 42
console.log(await isEvenAiOpenAi.divide(20, 5)); // 4Verifying the AI (optional)
You can pass { verify: true } to have every arithmetic result checked against
the native operator, logging a warning on divergence. It is, of course,
gloriously ironic — verifying 5 + 3 requires the very + we handed to the
model. Off by default.
const isEvenAiOpenAi = new IsEvenAiOpenAi({}, undefined, { verify: true });
await isEvenAiOpenAi.add(5, 3);
// if the model is wrong, logs:
// [is-even-ai] verify: add(5, 3) → AI said 9, reality says 8Supported AI platforms
Feel free to make a PR to add more AI platforms.
- [x] OpenAI via
IsEvenAiOpenAi
Supported methods
Boolean (returns boolean | undefined):
isEven(n: number)isOdd(n: number)areEqual(a: number, b: number)areNotEqual(a: number, b: number)isGreaterThan(a: number, b: number)isLessThan(a: number, b: number)
Arithmetic (returns number | undefined):
add(a: number, b: number)subtract(a: number, b: number)multiply(a: number, b: number)divide(a: number, b: number)—divide(x, 0)resolves toundefined(no finite answer)
