This is a web3.js 4.x
plugin for interacting with ORA Ethereum contracts.
yarn add @ora-io/web3-plugin-ora
When adding the web3
package to your project, make sure to use version 4.x
:
npm i -S [email protected]
yarn add [email protected]
NOTE
If 4.x was already released, you are good to just useweb3
without appending anything to it.
To verify you have the correct web3
version installed, after adding the package to your project (the above commands), look at the versions listed in your project's package.json
under the dependencies
section, it should contain version 4.x similar to:
"dependencies": {
"web3": "4.0.3"
}
After importing ORAPlugin
from @ora-io/web3-plugin-ora
and Web3
from web3
, register an instance of ORAPlugin
with an instance of Web3
like so:
import { ORAPlugin } from '@ora-io/web3-plugin-ora';
import { Web3 } from 'web3';
const web3 = new Web3('YOUR_PROVIDER_URL');
const oraPlugin = new ORAPlugin();
web3.registerPlugin(oraPlugin);
More information about registering web3.js plugins can be found here.
ORAPlugin supports method for getting AI inference results from all supported chains. When interacting with the plugin, users need to specify which chain to interact with.
public async getAIResult(
promptAddress: PromptAddresses,
modelId: Models,
prompt: string,
promptAbi: ContractAbi = this.defaultPromptAbi,
): {
result: string
}
defaultPromptAbi
can be found here.
The getAIResult
accepts several inputs:
promptAddress
- tells plugin which prompt contract to interact withmodelId
- speficies the AI model which will return inference resultsprompt
- user prompt string for the inference callpromptAbi
optional parameter for specifying prompt contract ABI (this parameter is defaulted to defaultPromptAbi).
Under the hood, this method is calling the getAIResult
on the Prompt contract for the specified model and prompt. Tutorial on how to interact with ORA's Onchain AI Oracle can be found here.
import { ORAPlugin, PromptAddresses, Models } from '@ora-io/web3-plugin-ora';
import { Web3 } from 'web3';
const web3 = new Web3('YOUR_PROVIDER_URL');
const oraPlugin = new ORAPlugin();
web3.registerPlugin(oraPlugin);
const inferenceResult = await web3.ora.getAIResult(PromptAddresses.MAINNET, Models.STABLE_DIFFUSION, "Generate image of btc");
console.log(inferenceResult)
- If you found an issue or have a question or suggestion submit an issue or join us on Discord
- Clone the repo
- Run
yarn
to install dependencies- If you receive the following warning, please remove the file
package-lock.json
and make sure to runyarn
to install dependencies instead ofnpm i
:
- If you receive the following warning, please remove the file
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
- Run the tests:
yarn test
: Runs the mocked tests that do not make a network request using the Jest framework