From 4545223364e85380863410e2ce27eaf2abd146f3 Mon Sep 17 00:00:00 2001 From: ritual-all Date: Fri, 29 Mar 2024 10:50:13 -0400 Subject: [PATCH] feat: publishing infernet-container-starter v0.2.0 --- .github/workflows/docker_ci.yaml | 30 ++ .github/workflows/python_ci.yaml | 30 ++ .gitignore | 25 +- .gitmodules | 33 ++ .pre-commit-config.yaml | 87 ++++ Makefile | 20 +- README.md | 236 +-------- deploy/docker-compose.yaml | 14 +- deploy/fluent-bit.conf | 2 +- projects/gpt4/container/.gitignore | 2 + projects/gpt4/container/Dockerfile | 25 + projects/gpt4/container/Makefile | 18 + projects/gpt4/container/README.md | 20 + projects/gpt4/container/config.sample.json | 52 ++ projects/gpt4/container/gpt4.env.sample | 1 + projects/gpt4/container/src/app.py | 90 ++++ projects/gpt4/container/src/requirements.txt | 5 + .../gpt4/contracts/.github/workflows/test.yml | 34 ++ projects/gpt4/contracts/.gitignore | 14 + projects/gpt4/contracts/Makefile | 14 + projects/gpt4/contracts/README.md | 27 ++ projects/gpt4/contracts/foundry.toml | 7 + projects/gpt4/contracts/remappings.txt | 2 + .../gpt4/contracts/script/CallContract.s.sol | 19 + projects/gpt4/contracts/script/Deploy.s.sol | 27 ++ projects/gpt4/contracts/src/PromptsGPT.sol | 46 ++ projects/gpt4/gpt4.md | 206 ++++++++ projects/hello-world/container/Dockerfile | 11 +- projects/hello-world/container/README.md | 10 +- .../container/scripts/request_node.py | 10 +- .../container/src/requirements.txt | 2 +- projects/hello-world/contracts/Makefile | 2 +- projects/hello-world/contracts/README.md | 15 +- projects/hello-world/contracts/Tutorial.md | 4 +- projects/hello-world/hello-world.md | 231 +++++++++ projects/onnx-iris/container/Dockerfile | 25 + projects/onnx-iris/container/Makefile | 17 + projects/onnx-iris/container/README.md | 96 ++++ projects/onnx-iris/container/config.json | 50 ++ .../container/scripts/sample_endpoints.py | 52 ++ projects/onnx-iris/container/src/app.py | 107 +++++ .../onnx-iris/container/src/requirements.txt | 7 + projects/onnx-iris/contracts/.gitignore | 14 + projects/onnx-iris/contracts/Makefile | 14 + projects/onnx-iris/contracts/README.md | 41 ++ projects/onnx-iris/contracts/foundry.toml | 7 + projects/onnx-iris/contracts/remappings.txt | 2 + .../contracts/script/CallContract.s.sol | 19 + .../onnx-iris/contracts/script/Deploy.s.sol | 26 + .../contracts/src/IrisClassifier.sol | 67 +++ projects/onnx-iris/onnx-iris.md | 271 +++++++++++ projects/prompt-to-nft/.gitignore | 2 + projects/prompt-to-nft/container/.gitignore | 3 + projects/prompt-to-nft/container/Dockerfile | 27 ++ projects/prompt-to-nft/container/Makefile | 23 + projects/prompt-to-nft/container/README.md | 91 ++++ .../container/config.sample.json | 53 ++ .../container/prompt_to_nft.env.sample | 2 + .../prompt-to-nft/container/src/__init__.py | 0 projects/prompt-to-nft/container/src/app.py | 109 +++++ .../container/src/requirements.txt | 5 + projects/prompt-to-nft/contracts/.gitignore | 14 + projects/prompt-to-nft/contracts/Makefile | 14 + projects/prompt-to-nft/contracts/foundry.toml | 7 + .../prompt-to-nft/contracts/remappings.txt | 3 + .../contracts/script/CallContract.s.sol | 22 + .../contracts/script/Deploy.s.sol | 26 + .../contracts/src/DiffusionNFT.sol | 63 +++ .../img/fetching-from-arweave.png | Bin 0 -> 518025 bytes projects/prompt-to-nft/img/just-connected.png | Bin 0 -> 512183 bytes projects/prompt-to-nft/img/metamask-anvil.png | Bin 0 -> 26923 bytes projects/prompt-to-nft/img/mint-screen.png | Bin 0 -> 403557 bytes projects/prompt-to-nft/img/minted-nft.png | Bin 0 -> 1025203 bytes projects/prompt-to-nft/img/ui.png | Bin 0 -> 19450 bytes projects/prompt-to-nft/prompt-to-nft.md | 416 ++++++++++++++++ .../prompt-to-nft/stablediffusion/Dockerfile | 25 + .../prompt-to-nft/stablediffusion/Makefile | 19 + .../prompt-to-nft/stablediffusion/src/app.py | 25 + .../stablediffusion/src/requirements.txt | 10 + .../src/stable_diffusion_workflow.py | 86 ++++ projects/prompt-to-nft/ui/.eslintrc.json | 3 + projects/prompt-to-nft/ui/.gitignore | 36 ++ projects/prompt-to-nft/ui/Makefile | 11 + projects/prompt-to-nft/ui/README.md | 40 ++ projects/prompt-to-nft/ui/bun.lockb | Bin 0 -> 484150 bytes projects/prompt-to-nft/ui/next.config.mjs | 6 + projects/prompt-to-nft/ui/package.json | 32 ++ projects/prompt-to-nft/ui/postcss.config.js | 6 + projects/prompt-to-nft/ui/public/favicon.ico | Bin 0 -> 25931 bytes projects/prompt-to-nft/ui/public/next.svg | 1 + projects/prompt-to-nft/ui/public/vercel.svg | 1 + .../ui/src/components/Button.tsx | 10 + .../ui/src/components/ClientRendered.tsx | 15 + .../ui/src/components/FaucetButton.tsx | 38 ++ .../ui/src/components/LoadImg.tsx | 69 +++ .../ui/src/components/MintButton.tsx | 28 ++ .../ui/src/components/NFTBalance.tsx | 24 + .../ui/src/components/NftCollection.tsx | 56 +++ .../ui/src/components/NftImage.tsx | 46 ++ projects/prompt-to-nft/ui/src/pages/_app.tsx | 20 + .../prompt-to-nft/ui/src/pages/_document.tsx | 13 + .../prompt-to-nft/ui/src/pages/api/hello.ts | 13 + .../ui/src/pages/golden-skiing.png | Bin 0 -> 1462560 bytes projects/prompt-to-nft/ui/src/pages/index.tsx | 54 +++ .../prompt-to-nft/ui/src/styles/globals.css | 25 + projects/prompt-to-nft/ui/src/util/chain.ts | 45 ++ projects/prompt-to-nft/ui/src/util/config.ts | 26 + .../prompt-to-nft/ui/src/util/constants.ts | 4 + projects/prompt-to-nft/ui/src/util/nftAbi.ts | 454 ++++++++++++++++++ projects/prompt-to-nft/ui/tailwind.config.ts | 20 + projects/prompt-to-nft/ui/tsconfig.json | 22 + projects/tgi-llm/container/.gitignore | 1 + projects/tgi-llm/container/Dockerfile | 25 + projects/tgi-llm/container/Makefile | 17 + projects/tgi-llm/container/README.md | 88 ++++ projects/tgi-llm/container/config.sample.json | 52 ++ projects/tgi-llm/container/src/app.py | 85 ++++ .../tgi-llm/container/src/requirements.txt | 6 + projects/tgi-llm/container/tgi-llm.env.sample | 1 + .../contracts/.github/workflows/test.yml | 34 ++ projects/tgi-llm/contracts/.gitignore | 14 + projects/tgi-llm/contracts/Makefile | 14 + projects/tgi-llm/contracts/foundry.toml | 7 + projects/tgi-llm/contracts/remappings.txt | 2 + .../contracts/script/CallContract.s.sol | 19 + .../tgi-llm/contracts/script/Deploy.s.sol | 26 + projects/tgi-llm/contracts/src/Prompter.sol | 47 ++ projects/tgi-llm/tgi-llm.md | 444 +++++++++++++++++ projects/tgi-llm/tgi/Makefile | 8 + projects/tgi-llm/tgi/README.md | 15 + projects/tgi-llm/ui/Dockerfile | 22 + projects/tgi-llm/ui/Makefile | 17 + projects/tgi-llm/ui/README.md | 35 ++ projects/tgi-llm/ui/gradio_ui.env.sample | 3 + projects/tgi-llm/ui/prompt.txt | 1 + projects/tgi-llm/ui/src/app.py | 109 +++++ projects/tgi-llm/ui/src/requirements.txt | 4 + projects/torch-iris/container/Dockerfile | 25 + projects/torch-iris/container/Makefile | 17 + projects/torch-iris/container/README.md | 110 +++++ projects/torch-iris/container/config.json | 50 ++ .../container/scripts/sample_endpoints.py | 52 ++ projects/torch-iris/container/src/app.py | 110 +++++ .../src/iris_classification_model.py | 23 + .../torch-iris/container/src/requirements.txt | 7 + projects/torch-iris/contracts/.gitignore | 14 + projects/torch-iris/contracts/Makefile | 14 + projects/torch-iris/contracts/README.md | 41 ++ projects/torch-iris/contracts/foundry.toml | 7 + projects/torch-iris/contracts/remappings.txt | 2 + .../contracts/script/CallContract.s.sol | 19 + .../torch-iris/contracts/script/Deploy.s.sol | 26 + .../contracts/src/IrisClassifier.sol | 67 +++ projects/torch-iris/torch-iris.md | 292 +++++++++++ requirements.txt | 22 + 155 files changed, 6086 insertions(+), 257 deletions(-) create mode 100644 .github/workflows/docker_ci.yaml create mode 100644 .github/workflows/python_ci.yaml create mode 100644 .pre-commit-config.yaml create mode 100644 projects/gpt4/container/.gitignore create mode 100644 projects/gpt4/container/Dockerfile create mode 100644 projects/gpt4/container/Makefile create mode 100644 projects/gpt4/container/README.md create mode 100644 projects/gpt4/container/config.sample.json create mode 100644 projects/gpt4/container/gpt4.env.sample create mode 100644 projects/gpt4/container/src/app.py create mode 100644 projects/gpt4/container/src/requirements.txt create mode 100644 projects/gpt4/contracts/.github/workflows/test.yml create mode 100644 projects/gpt4/contracts/.gitignore create mode 100644 projects/gpt4/contracts/Makefile create mode 100644 projects/gpt4/contracts/README.md create mode 100644 projects/gpt4/contracts/foundry.toml create mode 100644 projects/gpt4/contracts/remappings.txt create mode 100644 projects/gpt4/contracts/script/CallContract.s.sol create mode 100644 projects/gpt4/contracts/script/Deploy.s.sol create mode 100644 projects/gpt4/contracts/src/PromptsGPT.sol create mode 100644 projects/gpt4/gpt4.md create mode 100644 projects/hello-world/hello-world.md create mode 100644 projects/onnx-iris/container/Dockerfile create mode 100644 projects/onnx-iris/container/Makefile create mode 100644 projects/onnx-iris/container/README.md create mode 100644 projects/onnx-iris/container/config.json create mode 100644 projects/onnx-iris/container/scripts/sample_endpoints.py create mode 100644 projects/onnx-iris/container/src/app.py create mode 100644 projects/onnx-iris/container/src/requirements.txt create mode 100644 projects/onnx-iris/contracts/.gitignore create mode 100644 projects/onnx-iris/contracts/Makefile create mode 100644 projects/onnx-iris/contracts/README.md create mode 100644 projects/onnx-iris/contracts/foundry.toml create mode 100644 projects/onnx-iris/contracts/remappings.txt create mode 100644 projects/onnx-iris/contracts/script/CallContract.s.sol create mode 100644 projects/onnx-iris/contracts/script/Deploy.s.sol create mode 100644 projects/onnx-iris/contracts/src/IrisClassifier.sol create mode 100644 projects/onnx-iris/onnx-iris.md create mode 100644 projects/prompt-to-nft/.gitignore create mode 100644 projects/prompt-to-nft/container/.gitignore create mode 100644 projects/prompt-to-nft/container/Dockerfile create mode 100644 projects/prompt-to-nft/container/Makefile create mode 100644 projects/prompt-to-nft/container/README.md create mode 100644 projects/prompt-to-nft/container/config.sample.json create mode 100644 projects/prompt-to-nft/container/prompt_to_nft.env.sample create mode 100644 projects/prompt-to-nft/container/src/__init__.py create mode 100644 projects/prompt-to-nft/container/src/app.py create mode 100644 projects/prompt-to-nft/container/src/requirements.txt create mode 100644 projects/prompt-to-nft/contracts/.gitignore create mode 100644 projects/prompt-to-nft/contracts/Makefile create mode 100644 projects/prompt-to-nft/contracts/foundry.toml create mode 100644 projects/prompt-to-nft/contracts/remappings.txt create mode 100644 projects/prompt-to-nft/contracts/script/CallContract.s.sol create mode 100644 projects/prompt-to-nft/contracts/script/Deploy.s.sol create mode 100644 projects/prompt-to-nft/contracts/src/DiffusionNFT.sol create mode 100644 projects/prompt-to-nft/img/fetching-from-arweave.png create mode 100644 projects/prompt-to-nft/img/just-connected.png create mode 100644 projects/prompt-to-nft/img/metamask-anvil.png create mode 100644 projects/prompt-to-nft/img/mint-screen.png create mode 100644 projects/prompt-to-nft/img/minted-nft.png create mode 100644 projects/prompt-to-nft/img/ui.png create mode 100644 projects/prompt-to-nft/prompt-to-nft.md create mode 100644 projects/prompt-to-nft/stablediffusion/Dockerfile create mode 100644 projects/prompt-to-nft/stablediffusion/Makefile create mode 100644 projects/prompt-to-nft/stablediffusion/src/app.py create mode 100644 projects/prompt-to-nft/stablediffusion/src/requirements.txt create mode 100644 projects/prompt-to-nft/stablediffusion/src/stable_diffusion_workflow.py create mode 100644 projects/prompt-to-nft/ui/.eslintrc.json create mode 100644 projects/prompt-to-nft/ui/.gitignore create mode 100644 projects/prompt-to-nft/ui/Makefile create mode 100644 projects/prompt-to-nft/ui/README.md create mode 100755 projects/prompt-to-nft/ui/bun.lockb create mode 100644 projects/prompt-to-nft/ui/next.config.mjs create mode 100644 projects/prompt-to-nft/ui/package.json create mode 100644 projects/prompt-to-nft/ui/postcss.config.js create mode 100644 projects/prompt-to-nft/ui/public/favicon.ico create mode 100644 projects/prompt-to-nft/ui/public/next.svg create mode 100644 projects/prompt-to-nft/ui/public/vercel.svg create mode 100644 projects/prompt-to-nft/ui/src/components/Button.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/ClientRendered.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/FaucetButton.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/LoadImg.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/MintButton.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/NFTBalance.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/NftCollection.tsx create mode 100644 projects/prompt-to-nft/ui/src/components/NftImage.tsx create mode 100644 projects/prompt-to-nft/ui/src/pages/_app.tsx create mode 100644 projects/prompt-to-nft/ui/src/pages/_document.tsx create mode 100644 projects/prompt-to-nft/ui/src/pages/api/hello.ts create mode 100644 projects/prompt-to-nft/ui/src/pages/golden-skiing.png create mode 100644 projects/prompt-to-nft/ui/src/pages/index.tsx create mode 100644 projects/prompt-to-nft/ui/src/styles/globals.css create mode 100644 projects/prompt-to-nft/ui/src/util/chain.ts create mode 100644 projects/prompt-to-nft/ui/src/util/config.ts create mode 100644 projects/prompt-to-nft/ui/src/util/constants.ts create mode 100644 projects/prompt-to-nft/ui/src/util/nftAbi.ts create mode 100644 projects/prompt-to-nft/ui/tailwind.config.ts create mode 100644 projects/prompt-to-nft/ui/tsconfig.json create mode 100644 projects/tgi-llm/container/.gitignore create mode 100644 projects/tgi-llm/container/Dockerfile create mode 100644 projects/tgi-llm/container/Makefile create mode 100644 projects/tgi-llm/container/README.md create mode 100644 projects/tgi-llm/container/config.sample.json create mode 100644 projects/tgi-llm/container/src/app.py create mode 100644 projects/tgi-llm/container/src/requirements.txt create mode 100644 projects/tgi-llm/container/tgi-llm.env.sample create mode 100644 projects/tgi-llm/contracts/.github/workflows/test.yml create mode 100644 projects/tgi-llm/contracts/.gitignore create mode 100644 projects/tgi-llm/contracts/Makefile create mode 100644 projects/tgi-llm/contracts/foundry.toml create mode 100644 projects/tgi-llm/contracts/remappings.txt create mode 100644 projects/tgi-llm/contracts/script/CallContract.s.sol create mode 100644 projects/tgi-llm/contracts/script/Deploy.s.sol create mode 100644 projects/tgi-llm/contracts/src/Prompter.sol create mode 100644 projects/tgi-llm/tgi-llm.md create mode 100644 projects/tgi-llm/tgi/Makefile create mode 100644 projects/tgi-llm/tgi/README.md create mode 100644 projects/tgi-llm/ui/Dockerfile create mode 100644 projects/tgi-llm/ui/Makefile create mode 100644 projects/tgi-llm/ui/README.md create mode 100644 projects/tgi-llm/ui/gradio_ui.env.sample create mode 100644 projects/tgi-llm/ui/prompt.txt create mode 100644 projects/tgi-llm/ui/src/app.py create mode 100644 projects/tgi-llm/ui/src/requirements.txt create mode 100644 projects/torch-iris/container/Dockerfile create mode 100644 projects/torch-iris/container/Makefile create mode 100644 projects/torch-iris/container/README.md create mode 100644 projects/torch-iris/container/config.json create mode 100644 projects/torch-iris/container/scripts/sample_endpoints.py create mode 100644 projects/torch-iris/container/src/app.py create mode 100644 projects/torch-iris/container/src/iris_classification_model.py create mode 100644 projects/torch-iris/container/src/requirements.txt create mode 100644 projects/torch-iris/contracts/.gitignore create mode 100644 projects/torch-iris/contracts/Makefile create mode 100644 projects/torch-iris/contracts/README.md create mode 100644 projects/torch-iris/contracts/foundry.toml create mode 100644 projects/torch-iris/contracts/remappings.txt create mode 100644 projects/torch-iris/contracts/script/CallContract.s.sol create mode 100644 projects/torch-iris/contracts/script/Deploy.s.sol create mode 100644 projects/torch-iris/contracts/src/IrisClassifier.sol create mode 100644 projects/torch-iris/torch-iris.md create mode 100644 requirements.txt diff --git a/.github/workflows/docker_ci.yaml b/.github/workflows/docker_ci.yaml new file mode 100644 index 0000000..5f911f1 --- /dev/null +++ b/.github/workflows/docker_ci.yaml @@ -0,0 +1,30 @@ +# pre-commit workflow +# +# Ensures the codebase passes the pre-commit stack. + +name: Build Docker Images + +on: + pull_request: + branches: + - main + - dev + +jobs: + docker: + runs-on: ubuntu-latest + strategy: + matrix: + project: [ "hello-world", "gpt4", "onnx-iris", "prompt-to-nft", "tgi-llm", "torch-iris"] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Run build example container + env: + project: ${{ matrix.project }} + CI: true + run: make build-container diff --git a/.github/workflows/python_ci.yaml b/.github/workflows/python_ci.yaml new file mode 100644 index 0000000..e8c6def --- /dev/null +++ b/.github/workflows/python_ci.yaml @@ -0,0 +1,30 @@ +# pre-commit workflow +# +# Ensures the codebase passes the pre-commit stack. + +name: pre-commit ci + +on: [push] + +jobs: + python_ci: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install UV + run: python -m pip install uv + + - name: Create virtual environment + run: uv venv + + - name: Activate virtual environment + run: | + . .venv/bin/activate + echo PATH=$PATH >> $GITHUB_ENV + + - name: Install dependencies + run: uv pip install -r requirements.txt + + - name: Run pre-commit hooks + run: pre-commit run --all-files --show-diff-on-failure diff --git a/.gitignore b/.gitignore index 2efde62..fc98d44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# OS +**/.DS_Store + # Byte-compiled / optimized / DLL files deploy/config.json @@ -5,6 +8,7 @@ __pycache__/ *.py[cod] *$py + # C extensions *.so @@ -14,10 +18,23 @@ build/ *.egg-info/ # IDE specific files -.vscode/ -.idea/ +**/.vscode +**/.idea # Virtual environment -venv/ +venv +.venv/ +*.env -**/.idea + +# env files +**/*.env + +# OS Files +**/.DS_Store + +# Multi-deploykey CI +**/root-config + +# sync scripts +remote_sync diff --git a/.gitmodules b/.gitmodules index 6650627..89b8d8b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,36 @@ [submodule "projects/hello-world/contracts/lib/infernet-sdk"] path = projects/hello-world/contracts/lib/infernet-sdk url = https://github.com/ritual-net/infernet-sdk +[submodule "projects/torch-iris/contracts/lib/infernet-sdk"] + path = projects/torch-iris/contracts/lib/infernet-sdk + url = https://github.com/ritual-net/infernet-sdk +[submodule "projects/torch-iris/contracts/lib/forge-std"] + path = projects/torch-iris/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "projects/onnx-iris/contracts/lib/infernet-sdk"] + path = projects/onnx-iris/contracts/lib/infernet-sdk + url = https://github.com/ritual-net/infernet-sdk +[submodule "projects/onnx-iris/contracts/lib/forge-std"] + path = projects/onnx-iris/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "projects/prompt-to-nft/contracts/lib/forge-std"] + path = projects/prompt-to-nft/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "projects/prompt-to-nft/contracts/lib/infernet-sdk"] + path = projects/prompt-to-nft/contracts/lib/infernet-sdk + url = https://github.com/ritual-net/infernet-sdk +[submodule "projects/prompt-to-nft/contracts/lib/solmate"] + path = projects/prompt-to-nft/contracts/lib/solmate + url = https://github.com/transmissions11/solmate +[submodule "projects/gpt4/contracts/lib/infernet-sdk"] + path = projects/gpt4/contracts/lib/infernet-sdk + url = https://github.com/ritual-net/infernet-sdk +[submodule "projects/gpt4/contracts/lib/forge-std"] + path = projects/gpt4/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "projects/tgi-llm/contracts/lib/forge-std"] + path = projects/tgi-llm/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "projects/tgi-llm/contracts/lib/infernet-sdk"] + path = projects/tgi-llm/contracts/lib/infernet-sdk + url = https://github.com/ritual-net/infernet-sdk diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..5dd9174 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,87 @@ +repos: + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.0.289 + hooks: + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + + - repo: https://github.com/psf/black + rev: 23.9.1 + hooks: + - id: black + + - repo: local + hooks: + - id: mypy-hello-world + name: mypy hello-world + entry: mypy --strict + files: ^projects/hello-world/container/ + language: system + types: [python] + + - repo: local + hooks: + - id: mypy-torch-iris + name: mypy torch-iris + entry: mypy --strict + files: ^projects/torch-iris/container/ + language: system + types: [python] + + - repo: local + hooks: + - id: mypy-onnx-iris + name: mypy onnx-iris + entry: mypy --strict + files: ^projects/onnx-iris/container/ + language: system + types: [python] + + + - repo: local + hooks: + - id: mypy-tgi-llm-container + name: mypy tgi-llm container + entry: mypy --strict + files: ^projects/tgi-llm/container + language: system + types: [python] + + - repo: local + hooks: + - id: mypy-tgi-llm-ui + name: mypy tgi-llm ui + entry: mypy --strict + files: ^projects/tgi-llm/ui + language: system + types: [python] + + - repo: local + hooks: + - id: mypy-gpt4 + name: mypy gpt4 + entry: mypy --strict + files: ^projects/gpt4/container + language: system + types: [python] + + - repo: local + hooks: + - id: mypy-prompt-to-nft + name: mypy prompt-to-nft + entry: mypy --strict + files: ^projects/prompt-to-nft/container + language: system + types: [python] + + # Default pre-commit hooks + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.2.0 + hooks: + # Ensure EOF exists + - id: end-of-file-fixer + # Prevent adding large files + - id: check-added-large-files + args: ["--maxkb=5000"] + # Newline at end of file + - id: trailing-whitespace diff --git a/Makefile b/Makefile index e2bb22d..f9730cc 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,27 @@ +build-container: + $(MAKE) -C ./projects/$(project)/container build + +remove-containers: + docker compose -f deploy/docker-compose.yaml down || true + docker stop $(project) anvil-node && docker rm $(project) anvil-node || true + +build-multiplatform: + $(MAKE) -C ./projects/$(project)/container build-multiplatform + deploy-container: + $(MAKE) remove-containers cp ./projects/$(project)/container/config.json deploy/config.json - cd deploy && docker-compose up + docker compose -f deploy/docker-compose.yaml up -d + docker compose -f deploy/docker-compose.yaml logs -f deploy-contracts: $(MAKE) -C ./projects/$(project)/contracts deploy call-contract: $(MAKE) -C ./projects/$(project)/contracts call-contract + +build-service: + $(MAKE) -C ./projects/$(project)/$(service) build + +run-service: + $(MAKE) -C ./projects/$(project)/$(service) run diff --git a/README.md b/README.md index afcd900..e374c87 100644 --- a/README.md +++ b/README.md @@ -1,221 +1,19 @@ # infernet-container-starter -Starter examples for deploying to infernet. - -# Getting Started - -To interact with infernet, one could either create a job by accessing an infernet -node directly through it's API (we'll refer to this as an off-chain job), or by -creating a subscription on-chain (we'll refer to this as an on-chain job). - -## Requesting an off-chain job: Hello World! - -The easiest way to get started is to run our hello-world container. -This is a simple [flask-app](projects/hello-world/container/src/app.py) that -is compatible with `infernet`, and simply -[echoes what you send to it](./projects/hello-world/container/src/app.py#L16). - -We already have it [hosted on docker hub](https://hub.docker.com/r/ritualnetwork/hello-world-infernet) . -If you're curious how it's made, you can -follow the instructions [here](projects/hello-world/container/README.md) to build your own infernet-compatible -container. - -### Install Docker - -To run this, you'll need to have docker installed. You can find instructions -for installing docker [here](https://docs.docker.com/install/). - -### Running Locally - -First, ensure that the docker daemon is running. - -Then, from the top-level project directory, Run the following make command: - -``` -project=hello-world make deploy-container -``` - -This will deploy an infernet node along with the `hello-world` image. - -### Creating an off-chain job through the API - -You can create an off-chain job by posting to the `node` directly. - -```bash -curl -X POST http://127.0.0.1:4000/api/jobs \ - -H "Content-Type: application/json" \ - -d '{"containers":["hello-world"], "data": {"some": "input"}}' -# returns -{"id":"d5281dd5-c4f4-4523-a9c2-266398e06007"} -``` - -This will return the id of that job. - -### Getting the status/result/errors of a job - -You can check the status of a job like so: - -```bash -curl -X GET http://127.0.0.1:4000/api/jobs?id=d5281dd5-c4f4-4523-a9c2-266398e06007 -# returns -[{"id":"d5281dd5-c4f4-4523-a9c2-266398e06007", "result":{"container":"hello-world","output": {"output":"hello, world!, your input was: {'source': 1, 'data': {'some': 'input'}}"}} ,"status":"success"}] -``` - -### Configuration - -This project already comes with a pre-filled config file. The config -file for the hello-world project is located [here](projects/hello-world/container/config.json): - -```bash -projects/hello-world/config.json -``` - -## Requesting an on-chain job - -In this section we'll go over how to request an on-chain job in a local testnet. - -### Infernet's Anvil Testnet - -To request an on-chain job, you'll need to deploy contracts using the infernet sdk. -We already have a public [anvil node](https://hub.docker.com/r/ritualnetwork/infernet-anvil) docker image which has the -corresponding infernet sdk contracts deployed, along with a node that has -registered itself to listen to on-chain subscription events. - -* Coordinator Address: `0x5FbDB2315678afecb367f032d93F642f64180aa3` -* Node Address: `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` (This is the second account in the anvil's accounts.) - -### Deploying Infernet Node & Infernet's Anvil Testnet - -This step is similar to the section above: - -```bash -project=hello-world make deploy-container -``` - -In another terminal, run `docker container ls`, you should see something like this - -```bash -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -c2ca0ffe7817 ritualnetwork/infernet-anvil:0.0.0 "anvil --host 0.0.0.…" 9 seconds ago Up 8 seconds 0.0.0.0:8545->3000/tcp anvil-node -0b686a6a0e5f ritualnetwork/hello-world-infernet:0.0.2 "gunicorn app:create…" 9 seconds ago Up 8 seconds 0.0.0.0:3000->3000/tcp hello-world -28b2e5608655 ritualnetwork/infernet-node:0.1.1 "/app/entrypoint.sh" 10 seconds ago Up 10 seconds 0.0.0.0:4000->4000/tcp deploy-node-1 -03ba51ff48b8 fluent/fluent-bit:latest "/fluent-bit/bin/flu…" 10 seconds ago Up 10 seconds 2020/tcp, 0.0.0.0:24224->24224/tcp deploy-fluentbit-1 -a0d96f29a238 redis:latest "docker-entrypoint.s…" 10 seconds ago Up 10 seconds 0.0.0.0:6379->6379/tcp deploy-redis-1 -``` - -You can see that the anvil node is running on port `8545`, and the infernet -node is running on port `4000`. Same as before. - -### Deploying Consumer Contracts - -We have a [sample forge project](./projects/hello-world/contracts) which contains -a simple consumer contract, [`SaysGM`](./projects/hello-world/contracts/src/SaysGM.sol). -All this contract does is to request a job from the infernet node, and upon receiving -the result, it will use the `forge` console to print the result. - -**Anvil Logs**: First, it's useful to look at the logs of the anvil node to see what's going on. In -a new terminal, run `docker logs -f anvil-node`. - -**Deploying the contracts**: In another terminal, run the following command: - -```bash -project=hello-world make deploy-contracts -``` - -You should be able to see the following logs in the anvil logs: - -```bash -eth_sendRawTransaction -eth_getTransactionReceipt - - Transaction: 0x23ca6b1d1823ad5af175c207c2505112f60038fc000e1e22509816fa29a3afd6 - Contract created: 0x663f3ad617193148711d28f5334ee4ed07016602 - Gas used: 476669 - - Block Number: 1 - Block Hash: 0x6b026b70fbe97b4a733d4812ccd6e8e25899a1f6c622430c3fb07a2e5c5c96b7 - Block Time: "Wed, 17 Jan 2024 22:17:31 +0000" - -eth_getTransactionByHash -eth_getTransactionReceipt -eth_blockNumber -``` - -We can see that a new contract has been created at `0x663f3ad617193148711d28f5334ee4ed07016602`. -That's the address of the `SaysGM` contract. - -### Calling the contract - -Now, let's call the contract. In the same terminal, run the following command: - -```bash -project=hello-world make call-contract -``` - -You should first see that a transaction was sent to the `SaysGm` contract: - -```bash -eth_getTransactionReceipt - - Transaction: 0xe56b5b6ac713a978a1631a44d6a0c9eb6941dce929e1b66b4a2f7a61b0349d65 - Gas used: 123323 - - Block Number: 2 - Block Hash: 0x3d6678424adcdecfa0a8edd51e014290e5f54ee4707d4779e710a2a4d9867c08 - Block Time: "Wed, 17 Jan 2024 22:18:39 +0000" -eth_getTransactionByHash - -``` - -Then, right after that you should see another transaction submitted by the `node`, -which is the result of the job request: - -```bash -eth_chainId -eth_sendRawTransaction - - -_____ _____ _______ _ _ _ -| __ \|_ _|__ __| | | | /\ | | -| |__) | | | | | | | | | / \ | | -| _ / | | | | | | | |/ /\ \ | | -| | \ \ _| |_ | | | |__| / ____ \| |____ -|_| \_\_____| |_| \____/_/ \_\______| - - -subscription Id 1 -interval 1 -redundancy 1 -node 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 -input: -0x -output: -0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000607b276f7574707574273a202268656c6c6f2c20776f726c64212c20796f757220696e707574207761733a207b27736f75726365273a20302c202764617461273a20273437366636663634323036643666373236653639366536373231277d227d -proof: -0x - - Transaction: 0x949351d02e2c7f50ced2be06d14ca4311bd470ec80b135a2ce78a43f43e60d3d - Gas used: 94275 - - Block Number: 3 - Block Hash: 0x57ed0cf39e3fb3a91a0d8baa5f9cb5d2bdc1875f2ad5d6baf4a9466f522df354 - Block Time: "Wed, 17 Jan 2024 22:18:40 +0000" - - -eth_blockNumber -eth_newFilter - -``` - -We can see that the address of the `node` matches the address of the node in -our ritual anvil node. - -### Next Steps - -To learn more about on-chain requests, check out the following resources: - -1. [Tutorial](./projects/hello-world/contracts/Tutorial.md) on this project's consumer smart contracts. -2. [Infernet Callback Consumer Tutorial](https://docs.ritual.net/infernet/sdk/consumers/Callback) -3. [Infernet Nodes Docoumentation](https://docs.ritual.net/infernet/nodes) - - +Welcome to this repository! 🎉 This repo contains a series of examples that demonstrate +the true power of infernet, and the wide range of applications that can be built using +it: + +## Examples +1. [Hello World](projects/hello-world/hello-world.md): Infernet's version of a `hello-world` program. Here, we deploy +a container that simply echoes back the input to us. +2. [Running a Torch Model on Infernet](projects/torch-iris/torch-iris.md): This example shows you how to deploy a pre-trained [pytorch](https://pytorch.org/) +model to infernet. Using this example will make it easier for you to deploy your own models to infernet. +3. [Running an ONNX Model on Infernet](projects/onnx-iris/onnx-iris.md): Same as the previous example, but this time we deploy + an ONNX model to infernet. +4. [Prompt to NFT](projects/prompt-to-nft/prompt-to-nft.md): In this example, we use [stablediffusion](https://github.com/Stability-AI/stablediffusion) to + mint NFTs on-chain using a prompt. +5. [TGI Inference with Mistral-7b](projects/tgi-llm/tgi-llm.md): This example shows you how to deploy an arbitrary +LLM model using [Huggingface's TGI](https://huggingface.co/docs/text-generation-inference/en/index), and use it with an infernet node. +6. [Running OpenAI's GPT-4 on Infernet](projects/gpt4/gpt4.md): This example shows you how to deploy OpenAI's GPT-4 model +to infernet. diff --git a/deploy/docker-compose.yaml b/deploy/docker-compose.yaml index 1deb426..6cc532c 100644 --- a/deploy/docker-compose.yaml +++ b/deploy/docker-compose.yaml @@ -6,9 +6,7 @@ services: ports: - "0.0.0.0:4000:4000" volumes: - - type: bind - source: ./config.json - target: /app/config.json + - ./config.json:/app/config.json - node-logs:/logs - /var/run/docker.sock:/var/run/docker.sock networks: @@ -20,11 +18,12 @@ services: extra_hosts: - "host.docker.internal:host-gateway" stop_grace_period: 1m + tty: true redis: image: redis:latest - ports: - - "6379:6379" + expose: + - "6379" networks: - network volumes: @@ -35,9 +34,8 @@ services: fluentbit: image: fluent/fluent-bit:latest - ports: - - "24224:24224" - + expose: + - "24224" environment: - FLUENTBIT_CONFIG_PATH=/fluent-bit/etc/fluent-bit.conf volumes: diff --git a/deploy/fluent-bit.conf b/deploy/fluent-bit.conf index c165afa..2ea8ac9 100644 --- a/deploy/fluent-bit.conf +++ b/deploy/fluent-bit.conf @@ -35,4 +35,4 @@ User append_only_user Password ogy29Z4mRCLfpup*9fn6 Database postgres - Table live_stats \ No newline at end of file + Table live_stats diff --git a/projects/gpt4/container/.gitignore b/projects/gpt4/container/.gitignore new file mode 100644 index 0000000..e9cebaa --- /dev/null +++ b/projects/gpt4/container/.gitignore @@ -0,0 +1,2 @@ +sample-gpt3.env +config.json diff --git a/projects/gpt4/container/Dockerfile b/projects/gpt4/container/Dockerfile new file mode 100644 index 0000000..57add3f --- /dev/null +++ b/projects/gpt4/container/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3.11-slim as builder + +WORKDIR /app + +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PIP_NO_CACHE_DIR 1 +ENV RUNTIME docker +ENV PYTHONPATH src + +RUN apt-get update +RUN apt-get install -y git curl + +# install uv +ADD --chmod=755 https://astral.sh/uv/install.sh /install.sh +RUN /install.sh && rm /install.sh + +COPY src/requirements.txt . + +RUN /root/.cargo/bin/uv pip install --system --no-cache -r requirements.txt + +COPY src src + +ENTRYPOINT ["hypercorn", "app:create_app()"] +CMD ["-b", "0.0.0.0:3000"] diff --git a/projects/gpt4/container/Makefile b/projects/gpt4/container/Makefile new file mode 100644 index 0000000..0f0c698 --- /dev/null +++ b/projects/gpt4/container/Makefile @@ -0,0 +1,18 @@ +DOCKER_ORG := ritualnetwork +EXAMPLE_NAME := gpt4 +TAG := $(DOCKER_ORG)/example-$(EXAMPLE_NAME)-infernet:latest + +.phony: build run build-multiplatform try-prompt + +build: + mkdir -p root-config + @docker build -t $(TAG) . + +run: build + @docker run --env-file $(EXAMPLE_NAME).env -p 3000:3000 $(TAG) + +# You may need to set up a docker builder, to do so run: +# docker buildx create --name mybuilder --bootstrap --use +# refer to https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images for more info +build-multiplatform: + docker buildx build --platform linux/amd64,linux/arm64 -t $(TAG) --push . diff --git a/projects/gpt4/container/README.md b/projects/gpt4/container/README.md new file mode 100644 index 0000000..f6912d5 --- /dev/null +++ b/projects/gpt4/container/README.md @@ -0,0 +1,20 @@ +# GPT 4 +In this example, we run a minimalist container that makes use of our closed-source model +workflow: `CSSInferenceWorkflow`. Refer to [src/app.py](src/app.py) for the +implementation of the quart application. + +## Requirements +To use the model you'll need to have an OpenAI api key. Get one at +[OpenAI](https://openai.com/)'s website. + +## Run the Container + +```bash +make run +``` + +## Test the Container +```bash +curl -X POST localhost:3000/service_output -H "Content-Type: application/json" \ + -d '{"source": 1, "data": {"text": "can shrimps actually fry rice?"}}' +``` diff --git a/projects/gpt4/container/config.sample.json b/projects/gpt4/container/config.sample.json new file mode 100644 index 0000000..151e5ad --- /dev/null +++ b/projects/gpt4/container/config.sample.json @@ -0,0 +1,52 @@ +{ + "log_path": "infernet_node.log", + "server": { + "port": 4000 + }, + "chain": { + "enabled": true, + "trail_head_blocks": 0, + "rpc_url": "http://host.docker.internal:8545", + "coordinator_address": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "wallet": { + "max_gas_limit": 4000000, + "private_key": "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d" + } + }, + "startup_wait": 1.0, + "docker": { + "username": "your-username", + "password": "" + }, + "redis": { + "host": "redis", + "port": 6379 + }, + "forward_stats": true, + "containers": [ + { + "id": "gpt4", + "image": "ritualnetwork/example-gpt4-infernet:latest", + "external": true, + "port": "3000", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "--bind=0.0.0.0:3000 --workers=2", + "env": { + "OPENAI_API_KEY": "barabeem baraboom" + } + }, + { + "id": "anvil-node", + "image": "ritualnetwork/infernet-anvil:0.0.0", + "external": true, + "port": "8545", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "", + "env": {} + } + ] +} diff --git a/projects/gpt4/container/gpt4.env.sample b/projects/gpt4/container/gpt4.env.sample new file mode 100644 index 0000000..e570b8b --- /dev/null +++ b/projects/gpt4/container/gpt4.env.sample @@ -0,0 +1 @@ +OPENAI_API_KEY= diff --git a/projects/gpt4/container/src/app.py b/projects/gpt4/container/src/app.py new file mode 100644 index 0000000..17e4694 --- /dev/null +++ b/projects/gpt4/container/src/app.py @@ -0,0 +1,90 @@ +import logging +from typing import Any, cast + +from eth_abi import decode, encode # type: ignore +from infernet_ml.utils.service_models import InfernetInput, InfernetInputSource +from infernet_ml.workflows.inference.css_inference_workflow import CSSInferenceWorkflow +from quart import Quart, request + +log = logging.getLogger(__name__) + + +def create_app() -> Quart: + app = Quart(__name__) + + workflow = CSSInferenceWorkflow(provider="OPENAI", endpoint="completions") + + workflow.setup() + + @app.route("/") + def index() -> str: + """ + Utility endpoint to check if the service is running. + """ + return "GPT4 Example Program" + + @app.route("/service_output", methods=["POST"]) + async def inference() -> dict[str, Any]: + req_data = await request.get_json() + """ + InfernetInput has the format: + source: (0 on-chain, 1 off-chain) + data: dict[str, Any] + """ + infernet_input: InfernetInput = InfernetInput(**req_data) + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + prompt = cast(dict[str, Any], infernet_input.data).get("prompt") + else: + # On-chain requests are sent as a generalized hex-string which we will + # decode to the appropriate format. + (prompt,) = decode( + ["string"], bytes.fromhex(cast(str, infernet_input.data)) + ) + + result: dict[str, Any] = workflow.inference( + { + "model": "gpt-4-0613", + "params": { + "endpoint": "completions", + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": prompt}, + ], + }, + } + ) + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + """ + In case of an off-chain request, the result is returned as is. + """ + return {"message": result} + else: + """ + In case of an on-chain request, the result is returned in the format: + { + "raw_input": str, + "processed_input": str, + "raw_output": str, + "processed_output": str, + "proof": str, + } + refer to: https://docs.ritual.net/infernet/node/containers for more info. + """ + return { + "raw_input": "", + "processed_input": "", + "raw_output": encode(["string"], [result]).hex(), + "processed_output": "", + "proof": "", + } + + return app + + +if __name__ == "__main__": + """ + Utility to run the app locally. For development purposes only. + """ + create_app().run(port=3000) diff --git a/projects/gpt4/container/src/requirements.txt b/projects/gpt4/container/src/requirements.txt new file mode 100644 index 0000000..12cb6d3 --- /dev/null +++ b/projects/gpt4/container/src/requirements.txt @@ -0,0 +1,5 @@ +quart==0.19.4 +infernet_ml==0.1.0 +PyArweave @ git+https://github.com/ritual-net/pyarweave.git +web3==6.15.0 +retry2==0.9.5 diff --git a/projects/gpt4/contracts/.github/workflows/test.yml b/projects/gpt4/contracts/.github/workflows/test.yml new file mode 100644 index 0000000..9282e82 --- /dev/null +++ b/projects/gpt4/contracts/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: test + +on: workflow_dispatch + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Forge build + run: | + forge --version + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test diff --git a/projects/gpt4/contracts/.gitignore b/projects/gpt4/contracts/.gitignore new file mode 100644 index 0000000..85198aa --- /dev/null +++ b/projects/gpt4/contracts/.gitignore @@ -0,0 +1,14 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/projects/gpt4/contracts/Makefile b/projects/gpt4/contracts/Makefile new file mode 100644 index 0000000..f93baf1 --- /dev/null +++ b/projects/gpt4/contracts/Makefile @@ -0,0 +1,14 @@ +# phony targets are targets that don't actually create a file +.phony: deploy call-contract + +# anvil's third default address +sender := 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a +RPC_URL := http://localhost:8545 + +# deploying the contract +deploy: + @PRIVATE_KEY=$(sender) forge script script/Deploy.s.sol:Deploy --broadcast --rpc-url $(RPC_URL) + +# calling promptGPT() +call-contract: + @PRIVATE_KEY=$(sender) forge script script/CallContract.s.sol:CallContract --broadcast --rpc-url $(RPC_URL) diff --git a/projects/gpt4/contracts/README.md b/projects/gpt4/contracts/README.md new file mode 100644 index 0000000..b36189f --- /dev/null +++ b/projects/gpt4/contracts/README.md @@ -0,0 +1,27 @@ +# GPT4 Example Contracts + +This is a minimalist foundry project that implements a [callback consumer](https://docs.ritual.net/infernet/sdk/consumers/Callback) +that makes a prompt to the [container](../container/README.md), which then makes a call to OpenAI's GPT4. For an +end-to-end flow of how this works, follow the [guide here](../gpt4.md). + +## Deploying + +The [`Deploy.s.sol`](./script/Deploy.s.sol) deploys the contracts. +The [Makefile](./Makefile) in this project containes +a utility deploy target. + +```bash +make deploy +``` + +## Prompting + +The [`CallContract.s.sol`](./script/CallContract.s.sol) calls +the [`promptGPT`](./src/PromptsGPT.sol#L10) function. +The [Makefile](./Makefile) in this project contains a utility call target. You'll need +to pass in the prompt as an +env var. + +```bash +make call-contract prompt="What is 2 * 3?" +``` diff --git a/projects/gpt4/contracts/foundry.toml b/projects/gpt4/contracts/foundry.toml new file mode 100644 index 0000000..83816a2 --- /dev/null +++ b/projects/gpt4/contracts/foundry.toml @@ -0,0 +1,7 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] +via_ir = true + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/projects/gpt4/contracts/remappings.txt b/projects/gpt4/contracts/remappings.txt new file mode 100644 index 0000000..c788350 --- /dev/null +++ b/projects/gpt4/contracts/remappings.txt @@ -0,0 +1,2 @@ +forge-std/=lib/forge-std/src +infernet-sdk/=lib/infernet-sdk/src diff --git a/projects/gpt4/contracts/script/CallContract.s.sol b/projects/gpt4/contracts/script/CallContract.s.sol new file mode 100644 index 0000000..a6cf018 --- /dev/null +++ b/projects/gpt4/contracts/script/CallContract.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.0; + +import {Script, console2} from "forge-std/Script.sol"; +import {PromptsGPT} from "../src/PromptsGPT.sol"; + +contract CallContract is Script { + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + PromptsGPT promptsGpt = PromptsGPT(0x663F3ad617193148711d28f5334eE4Ed07016602); + + promptsGpt.promptGPT(vm.envString("prompt")); + + vm.stopBroadcast(); + } +} diff --git a/projects/gpt4/contracts/script/Deploy.s.sol b/projects/gpt4/contracts/script/Deploy.s.sol new file mode 100644 index 0000000..98e086d --- /dev/null +++ b/projects/gpt4/contracts/script/Deploy.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import {PromptsGPT} from "../src/PromptsGPT.sol"; + +contract Deploy is Script { + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + // Log address + address deployerAddress = vm.addr(deployerPrivateKey); + console2.log("Loaded deployer: ", deployerAddress); + + address coordinator = 0x5FbDB2315678afecb367f032d93F642f64180aa3; + + // Create consumer + PromptsGPT promptsGPT = new PromptsGPT(coordinator); + console2.log("Deployed PromptsGPT: ", address(promptsGPT)); + + // Execute + vm.stopBroadcast(); + vm.broadcast(); + } +} diff --git a/projects/gpt4/contracts/src/PromptsGPT.sol b/projects/gpt4/contracts/src/PromptsGPT.sol new file mode 100644 index 0000000..3676f72 --- /dev/null +++ b/projects/gpt4/contracts/src/PromptsGPT.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {console2} from "forge-std/console2.sol"; +import {CallbackConsumer} from "infernet-sdk/consumer/Callback.sol"; + +contract PromptsGPT is CallbackConsumer { + string private EXTREMELY_COOL_BANNER = "\n\n" + "_____ _____ _______ _ _ _ \n" + "| __ \\|_ _|__ __| | | | /\\ | | \n" + "| |__) | | | | | | | | | / \\ | | \n" + "| _ / | | | | | | | |/ /\\ \\ | | \n" + "| | \\ \\ _| |_ | | | |__| / ____ \\| |____ \n" + "|_| \\_\\_____| |_| \\____/_/ \\_\\______| \n\n"; + constructor(address coordinator) CallbackConsumer(coordinator) {} + + function promptGPT(string calldata prompt) public { + _requestCompute( + "gpt4", + abi.encode(prompt), + 20 gwei, + 1_000_000, + 1 + ); + } + + function _receiveCompute( + uint32 subscriptionId, + uint32 interval, + uint16 redundancy, + address node, + bytes calldata input, + bytes calldata output, + bytes calldata proof + ) internal override { + console2.log(EXTREMELY_COOL_BANNER); + (bytes memory raw_output, bytes memory processed_output) = abi.decode(output, (bytes, bytes)); + (string memory outputStr) = abi.decode(raw_output, (string)); + + console2.log("subscription Id", subscriptionId); + console2.log("interval", interval); + console2.log("redundancy", redundancy); + console2.log("node", node); + console2.log("output:", outputStr); + } +} diff --git a/projects/gpt4/gpt4.md b/projects/gpt4/gpt4.md new file mode 100644 index 0000000..5389c55 --- /dev/null +++ b/projects/gpt4/gpt4.md @@ -0,0 +1,206 @@ +# Running OpenAI's GPT-4 on Infernet + +In this tutorial we are going to integrate [OpenAI's GPT-4](https://openai.com/gpt-4) into infernet. We will: + +1. Obtain an API key from OpenAI +2. Configure the `gpt4` service, build & deploy it with Infernet +3. Make a web-2 request by directly prompting the [gpt4 service](./container) +4. Make a web-3 request by integrating a sample [`PromptsGPT.sol`](./contracts/src/PromptsGPT.sol) smart contract. This +contract will make a request to Infernet with their prompt, and receive the result of the request. + +## Install Pre-requisites + +For this tutorial you'll need to have the following installed. + +1. [Docker](https://docs.docker.com/engine/install/) +2. [Foundry](https://book.getfoundry.sh/getting-started/installation) + +### Get an API key from OpenAI + +First, you'll need to get an API key from OpenAI. You can do this by making +an [OpenAI](https://openai.com/) account. +After signing in, head over to [their platform](https://platform.openai.com/api-keys) to +make an API key. + +> [!NOTE] +> You will need a paid account to use the GPT-4 API. + +### Ensure `docker` & `foundry` exist + +To check for `docker`, run the following command in your terminal: +```bash copy +docker --version +# Docker version 25.0.2, build 29cf629 (example output) +``` + +You'll also need to ensure that docker-compose exists in your terminal: +```bash copy +which docker-compose +# /usr/local/bin/docker-compose (example output) +``` + +To check for `foundry`, run the following command in your terminal: +```bash copy +forge --version +# forge 0.2.0 (551bcb5 2024-02-28T07:40:42.782478000Z) (example output) +``` + +### Clone the starter repository +Just like our other examples, we're going to clone this repository. +All of the code and instructions for this tutorial can be found in the +[`projects/gpt4`](https://github.com/ritual-net/infernet-container-starter/tree/main/projects/gpt4) +directory of the repository. + +```bash copy +# Clone locally +git clone --recurse-submodules https://github.com/ritual-net/infernet-container-starter +# Navigate to the repository +cd infernet-container-starter +``` + +### Configure the `gpt4` container + +#### Configure API key in `config.json` +This is where we'll use the API key we obtained from OpenAI. + +```bash +cd projects/gpt4/container +cp config.sample.json config.json +``` + +In the `containers` field, you will see the following. Replace `your-openai-key` with your OpenAI API key. + +```json +"containers": [ + { + // etc. etc. + "env": { + "OPENAI_API_KEY": "your-openai-key" // replace with your OpenAI API key + } + } +], +``` + +### Build the `gpt4` container + +First, navigate back to the root of the repository. Then simply run the following command to build the `gpt4` +container: + +```bash copy +cd ../../.. +make build-container project=gpt4 +``` + +### Deploy infernet node locally + +Much like our [hello world](../hello-world/hello-world.md) project, deploying the infernet node is as +simple as running: + +```bash copy +make deploy-container project=gpt4 +``` + +## Making a Web2 Request + +From here, you can directly make a request to the infernet node: + +```bash +curl -X POST http://127.0.0.1:4000/api/jobs \ + -H "Content-Type: application/json" \ + -d '{"containers":["gpt4"], "data": {"prompt": "Hello, can shrimp actually fry rice?"}}' +# {"id":"cab6eea8-8b1e-4144-9a70-f905c5ef375b"} +``` + +If you have `jq` installed, you can pipe the output of the last command to a file: + +```bash copy +curl -X POST http://127.0.0.1:4000/api/jobs \ + -H "Content-Type: application/json" \ + -d '{"containers":["gpt4"], "data": {"prompt": "Hello, can shrimp actually fry rice?"}}' | jq -r ".id" > last-job.uuid +``` + +You can then check the status of the job by running: + +```bash copy +curl -X GET http://127.0.0.1:4000/api/jobs\?id\=cab6eea8-8b1e-4144-9a70-f905c5ef375b +# response [{"id":"07026571-edc8-42ab-b38c-6b3cf19971b6","result":{"container":"gpt4","output":{"message":"No, shrimps cannot fry rice by themselves. However, in culinary terms, shrimp fried rice is a popular dish in which cooked shrimp are added to fried rice along with other ingredients. Cooks or chefs prepare it by frying the rice and shrimps together usually in a wok or frying pan."}},"status":"success"}] +``` + +And if you have `jq` installed and piped the last output to a file, you can instead run: + +```bash +curl -X GET "http://127.0.0.1:4000/api/jobs?id=$(cat last-request.uuid)" | jq . +# returns something like: +[ + { + "id": "1b50e85b-2295-44eb-9c85-40ae5331bd14", + "result": { + "container": "gpt4", + "output": { + "output": "Yes, shrimp can be used to make fried rice. In many Asian cuisines, shrimp is a popular ingredient in fried rice dishes. The shrimp adds flavor and protein to the dish, and can be cooked along with the rice and other ingredients such as vegetables, eggs, and seasonings." + } + }, + "status": "success" + } +] +``` + +## Making a Web3 Request + +Now let's bring this service onchain! First we'll have to deploy the contracts. +The [contracts](contracts) +directory contains a simple foundry project with a simple contract called `PromptsGpt`. +This contract exposes a single +function `function promptGPT(string calldata prompt)`. Using this function you'll be +able to make an infernet request. + +**Anvil Logs**: First, it's useful to look at the logs of the anvil node to see what's +going on. In a new terminal, run +`docker logs -f anvil-node`. + +**Deploying the contracts**: In another terminal, run the following command: + +```bash +make deploy-contracts project=gpt4 +``` + +### Calling the contract + +Now, let's call the contract. So far everything's been identical to +the [hello world](projects/hello-world/README.mdllo-world/README.md) project. The only +difference here is that calling the contract requires an input. We'll pass that input in +using an env var named +`prompt`: + +```bash copy +make call-contract project=gpt4 prompt="Can shrimps actually fry rice" +``` + +On your anvil logs, you should see something like this: + +```bash +eth_sendRawTransaction + +_____ _____ _______ _ _ _ +| __ \|_ _|__ __| | | | /\ | | +| |__) | | | | | | | | | / \ | | +| _ / | | | | | | | |/ /\ \ | | +| | \ \ _| |_ | | | |__| / ____ \| |____ +|_| \_\_____| |_| \____/_/ \_\______| + + +subscription Id 1 +interval 1 +redundancy 1 +node 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 +output: {'output': 'Yes, shrimps can be used to make fried rice. Fried rice is a versatile dish that can be made with various ingredients, including shrimp. Shrimp fried rice is a popular dish in many cuisines, especially in Asian cuisine.'} + + Transaction: 0x9bcab42cf7348953eaf107ca0ca539cb27f3843c1bb08cf359484c71fcf44d2b + Gas used: 93726 + + Block Number: 3 + Block Hash: 0x1cc39d03bb1d69ea7f32db85d2ee684071e28b6d6de9eab6f57e011e11a7ed08 + Block Time: "Fri, 26 Jan 2024 02:30:37 +0000" +``` + +beautiful, isn't it? 🥰 diff --git a/projects/hello-world/container/Dockerfile b/projects/hello-world/container/Dockerfile index ea15020..9a143fd 100644 --- a/projects/hello-world/container/Dockerfile +++ b/projects/hello-world/container/Dockerfile @@ -4,15 +4,20 @@ WORKDIR /app ENV PYTHONUNBUFFERED 1 ENV PYTHONDONTWRITEBYTECODE 1 +ENV PIP_NO_CACHE_DIR 1 +ENV RUNTIME docker ENV PYTHONPATH src -WORKDIR /app - RUN apt-get update +RUN apt-get install -y git curl + +# install uv +ADD --chmod=755 https://astral.sh/uv/install.sh /install.sh +RUN /install.sh && rm /install.sh COPY src/requirements.txt . -RUN pip install --upgrade pip && pip install -r requirements.txt +RUN /root/.cargo/bin/uv pip install --system --no-cache -r requirements.txt COPY src src diff --git a/projects/hello-world/container/README.md b/projects/hello-world/container/README.md index c76ce4e..4772e92 100644 --- a/projects/hello-world/container/README.md +++ b/projects/hello-world/container/README.md @@ -3,8 +3,8 @@ In this tutorial, we'll create a simple hello-world container that can be used with infernet. -> [!NOTE] -> This directory `containers/hello-world` already includes the final result +> [!NOTE] +> This directory `containers/hello-world` already includes the final result > of this tutorial. Run the following tutorial in a new directory. Let's get started! 🎉 @@ -88,7 +88,7 @@ This is a simple Dockerfile that: 3. Copies the source code 4. Runs the app on port `3000` -> [!IMPORTANT] +> [!IMPORTANT] > App must be exposed on port `3000`. Infernet's orchestrator > will always assume that the container apps are exposed on that port within the container. > Users can then remap this port to any port that they want on the host machine @@ -127,7 +127,7 @@ docker run --rm -p 3000:3000 --name hello hello-world In another terminal, run: ``` -curl localhost:3000 +curl "localhost:3000" ``` It should return something like: @@ -159,5 +159,5 @@ The output should be something like: Your users will never call this endpoint directly. Instead, they will: -1. Either [create an off-chain job request](../../../README.md#L36) through the node API +1. Either [create an off-chain job request](../hello-world#L36) through the node API 2. Or they will make a subscription on their contracts diff --git a/projects/hello-world/container/scripts/request_node.py b/projects/hello-world/container/scripts/request_node.py index 143321d..4edcea6 100644 --- a/projects/hello-world/container/scripts/request_node.py +++ b/projects/hello-world/container/scripts/request_node.py @@ -1,9 +1,10 @@ from time import sleep +from typing import Any import requests -def hit_server_directly(): +def hit_server_directly() -> None: print("hello") r = requests.get("http://localhost:3000/") print(r.status_code) @@ -11,7 +12,7 @@ def hit_server_directly(): print("server response", r.text) -def poll_until_complete(id: str): +def poll_until_complete(id: str) -> Any: status = "running" r = None while status == "running": @@ -24,11 +25,12 @@ def poll_until_complete(id: str): status = r.get("status") print("status", status) if status != "running": - return r + break sleep(1) + return r -def create_job_through_node(): +def create_job_through_node() -> None: r = requests.post( "http://localhost:4000/api/jobs", json={ diff --git a/projects/hello-world/container/src/requirements.txt b/projects/hello-world/container/src/requirements.txt index c080975..5d42a79 100644 --- a/projects/hello-world/container/src/requirements.txt +++ b/projects/hello-world/container/src/requirements.txt @@ -1,2 +1,2 @@ Flask>=3.0.0,<4.0.0 -gunicorn>=21.2.0,<22.0.0 \ No newline at end of file +gunicorn>=21.2.0,<22.0.0 diff --git a/projects/hello-world/contracts/Makefile b/projects/hello-world/contracts/Makefile index e71bd45..2af9de7 100644 --- a/projects/hello-world/contracts/Makefile +++ b/projects/hello-world/contracts/Makefile @@ -11,4 +11,4 @@ deploy: # calling sayGM() call-contract: - @PRIVATE_KEY=$(sender) forge script script/CallContract.s.sol:CallContract --broadcast --rpc-url $(RPC_URL) \ No newline at end of file + @PRIVATE_KEY=$(sender) forge script script/CallContract.s.sol:CallContract --broadcast --rpc-url $(RPC_URL) diff --git a/projects/hello-world/contracts/README.md b/projects/hello-world/contracts/README.md index 45bd826..932e8b1 100644 --- a/projects/hello-world/contracts/README.md +++ b/projects/hello-world/contracts/README.md @@ -1,15 +1,15 @@ # `Hello-World` Consumer Contracts This is a [foundry](https://book.getfoundry.sh/) project that implements a simple Consumer -contract, [`SaysGm`](./src/SaysGM.sol). +contract, [`SaysGm`](./src/SaysGM.sol). -This readme explains how to compile and deploy the contract to the Infernet Anvil Testnet network. +This readme explains how to compile and deploy the contract to the Infernet Anvil Testnet network. For a detailed tutorial on how to write a consumer contract, refer to the [tutorial doc](./Tutorial.md). -> [!IMPORTANT] -> Ensure that you are running the following scripts with the Infernet Anvil Testnet network. -> The [tutorial](./../../../README.md) at the root of this repository explains how to +> [!IMPORTANT] +> Ensure that you are running the following scripts with the Infernet Anvil Testnet network. +> The [tutorial](../hello-world) at the root of this repository explains how to > bring up an infernet node. ### Installing the libraries @@ -27,7 +27,7 @@ forge compile ### Deploying the contracts The deploy script at `script/Deploy.s.sol` deploys the `SaysGM` contract to the Infernet Anvil Testnet network. -We have the [following make target](./Makefile#L9) to deploy the contract. Refer to the Makefile +We have the [following make target](./Makefile#L9) to deploy the contract. Refer to the Makefile for more understanding around the deploy scripts. ```bash make deploy @@ -35,10 +35,9 @@ make deploy ### Requesting a job We also have a script called `CallContract.s.sol` that requests a job to the `SaysGM` contract. -Refer to the [script](./script/CallContract.s.sol) for more details. Similar to deployment, +Refer to the [script](./script/CallContract.s.sol) for more details. Similar to deployment, you can run that script using the following convenience make target. ```bash make call-contract ``` Refer to the [Makefile](./Makefile#L14) for more details. - diff --git a/projects/hello-world/contracts/Tutorial.md b/projects/hello-world/contracts/Tutorial.md index a24783a..174d3b7 100644 --- a/projects/hello-world/contracts/Tutorial.md +++ b/projects/hello-world/contracts/Tutorial.md @@ -218,7 +218,7 @@ PRIVATE_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a \ ``` ### Using a `Makefile` -To make running these commands easier, we can add them to a `Makefile`. This allows +To make running these commands easier, we can add them to a `Makefile`. This allows us to run `make deploy` and `make call` instead of typing out the full command every time. Refer to [this project's Makefile](./Makefile) for an example. @@ -226,4 +226,4 @@ Refer to [this project's Makefile](./Makefile) for an example. ### 🎉 Done! Congratulations! You've successfully created a contract that requests compute from -our `hello-world` container. +our `hello-world` container. diff --git a/projects/hello-world/hello-world.md b/projects/hello-world/hello-world.md new file mode 100644 index 0000000..74626c9 --- /dev/null +++ b/projects/hello-world/hello-world.md @@ -0,0 +1,231 @@ +# Hello, World! + +Welcome to the first tutorial of Infernet! In this tutorial we will guide you through the process of setting up and +running an Infernet Node, and then demonstrate how to create and monitor off-chain compute jobs and on-chain subscriptions. + +To interact with infernet, one could either create a job by accessing an infernet node directly through it's API (we'll +refer to this as an off-chain job), or by creating a subscription on-chain (we'll refer to this as an on-chain job). + +## Requesting an off-chain job: Hello World! + +This project is a simple [flask-app](container/src/app.py) that is compatible with `infernet`, and simply +[echoes what you send to it](container/src/app.py#L16). + +### Install Docker & Verify Installation + +To run this, you'll need to have docker installed. You can find instructions for installing docker [here](https://docs.docker.com/install/). + +After installing & running docker, you can verify that the docker daemon is running by running the following command: + +```bash copy +docker --version +# Docker version 25.0.2, build 29cf629 +``` + +### Clone the starter repository + +```bash copy +# Clone locally +git clone --recurse-submodules https://github.com/ritual-net/infernet-container-starter +# Navigate to the repository +cd infernet-container-starter +``` + +### Build the `hello-world` container +Once inside the repository directory, you can run a simple command to build the `hello-world` container: + +```bash copy +make build-container project=hello-world +``` + +### Running Locally + +Then, from the top-level project directory, Run the following make command: + +``` +make deploy-container project=hello-world +``` + +This will deploy an infernet node along with the `hello-world` image. + +### Creating an off-chain job through the API + +You can create an off-chain job by posting to the `node` directly. + +```bash +curl -X POST "http://127.0.0.1:4000/api/jobs" \ + -H "Content-Type: application/json" \ + -d '{"containers":["hello-world"], "data": {"some": "input"}}' +# returns +{"id":"d5281dd5-c4f4-4523-a9c2-266398e06007"} +``` + +This will return the id of that job. + +### Getting the status/result/errors of a job + +You can check the status of a job like so: + +```bash +curl -X GET "http://127.0.0.1:4000/api/jobs?id=d5281dd5-c4f4-4523-a9c2-266398e06007" +# returns +[{"id":"d5281dd5-c4f4-4523-a9c2-266398e06007", "result":{"container":"hello-world","output": {"output":"hello, world!, your input was: {'source': 1, 'data': {'some': 'input'}}"}} ,"status":"success"}] +``` + +### Configuration + +This project already comes with a pre-filled config file. The config file for the hello-world project is located +[here](container/config.json): + +```bash +projects/hello-world/config.json +``` + +## Requesting an on-chain job + +In this section we'll go over how to request an on-chain job in a local anvil node. + +### Infernet's Anvil Testnet + +To request an on-chain job, you'll need to deploy contracts using the infernet sdk. +We already have a public [anvil node](https://hub.docker.com/r/ritualnetwork/infernet-anvil) docker image which has the +corresponding infernet sdk contracts deployed, along with a node that has +registered itself to listen to on-chain subscription events. + +* Coordinator Address: `0x5FbDB2315678afecb367f032d93F642f64180aa3` +* Node Address: `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` (This is the second account in the anvil's accounts.) + +### Deploying Infernet Node & Infernet's Anvil Testnet + +This step is similar to the section above: + +```bash +project=hello-world make deploy-container +``` + +In another terminal, run `docker container ls`, you should see something like this + +```bash +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +c2ca0ffe7817 ritualnetwork/infernet-anvil:0.0.0 "anvil --host 0.0.0.…" 9 seconds ago Up 8 seconds 0.0.0.0:8545->3000/tcp anvil-node +0b686a6a0e5f ritualnetwork/hello-world-infernet:0.0.2 "gunicorn app:create…" 9 seconds ago Up 8 seconds 0.0.0.0:3000->3000/tcp hello-world +28b2e5608655 ritualnetwork/infernet-node:0.1.1 "/app/entrypoint.sh" 10 seconds ago Up 10 seconds 0.0.0.0:4000->4000/tcp deploy-node-1 +03ba51ff48b8 fluent/fluent-bit:latest "/fluent-bit/bin/flu…" 10 seconds ago Up 10 seconds 2020/tcp, 0.0.0.0:24224->24224/tcp deploy-fluentbit-1 +a0d96f29a238 redis:latest "docker-entrypoint.s…" 10 seconds ago Up 10 seconds 0.0.0.0:6379->6379/tcp deploy-redis-1 +``` + +You can see that the anvil node is running on port `8545`, and the infernet +node is running on port `4000`. Same as before. + +### Deploying Consumer Contracts + +We have a [sample forge project](./contracts) which contains +a simple consumer contract, [`SaysGM`](contracts/src/SaysGM.sol). +All this contract does is to request a job from the infernet node, and upon receiving +the result, it will use the `forge` console to print the result. + +**Anvil Logs**: First, it's useful to look at the logs of the anvil node to see what's going on. In +a new terminal, run `docker logs -f anvil-node`. + +**Deploying the contracts**: In another terminal, run the following command: + +```bash +project=hello-world make deploy-contracts +``` + +You should be able to see the following logs in the anvil logs: + +```bash +eth_sendRawTransaction +eth_getTransactionReceipt + + Transaction: 0x23ca6b1d1823ad5af175c207c2505112f60038fc000e1e22509816fa29a3afd6 + Contract created: 0x663f3ad617193148711d28f5334ee4ed07016602 + Gas used: 476669 + + Block Number: 1 + Block Hash: 0x6b026b70fbe97b4a733d4812ccd6e8e25899a1f6c622430c3fb07a2e5c5c96b7 + Block Time: "Wed, 17 Jan 2024 22:17:31 +0000" + +eth_getTransactionByHash +eth_getTransactionReceipt +eth_blockNumber +``` + +We can see that a new contract has been created at `0x663f3ad617193148711d28f5334ee4ed07016602`. +That's the address of the `SaysGM` contract. + +### Calling the contract + +Now, let's call the contract. In the same terminal, run the following command: + +```bash +project=hello-world make call-contract +``` + +You should first see that a transaction was sent to the `SaysGm` contract: + +```bash +eth_getTransactionReceipt + + Transaction: 0xe56b5b6ac713a978a1631a44d6a0c9eb6941dce929e1b66b4a2f7a61b0349d65 + Gas used: 123323 + + Block Number: 2 + Block Hash: 0x3d6678424adcdecfa0a8edd51e014290e5f54ee4707d4779e710a2a4d9867c08 + Block Time: "Wed, 17 Jan 2024 22:18:39 +0000" +eth_getTransactionByHash + +``` + +Then, right after that you should see another transaction submitted by the `node`, +which is the result of the job request: + +```bash +eth_chainId +eth_sendRawTransaction + + +_____ _____ _______ _ _ _ +| __ \|_ _|__ __| | | | /\ | | +| |__) | | | | | | | | | / \ | | +| _ / | | | | | | | |/ /\ \ | | +| | \ \ _| |_ | | | |__| / ____ \| |____ +|_| \_\_____| |_| \____/_/ \_\______| + + +subscription Id 1 +interval 1 +redundancy 1 +node 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 +input: +0x +output: +0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000607b276f7574707574273a202268656c6c6f2c20776f726c64212c20796f757220696e707574207761733a207b27736f75726365273a20302c202764617461273a20273437366636663634323036643666373236653639366536373231277d227d +proof: +0x + + Transaction: 0x949351d02e2c7f50ced2be06d14ca4311bd470ec80b135a2ce78a43f43e60d3d + Gas used: 94275 + + Block Number: 3 + Block Hash: 0x57ed0cf39e3fb3a91a0d8baa5f9cb5d2bdc1875f2ad5d6baf4a9466f522df354 + Block Time: "Wed, 17 Jan 2024 22:18:40 +0000" + + +eth_blockNumber +eth_newFilter + +``` + +We can see that the address of the `node` matches the address of the node in +our ritual anvil node. + +### Next Steps + +To learn more about on-chain requests, check out the following resources: + +1. [Tutorial](contracts/Tutorial.md) on this project's consumer smart contracts. +2. [Infernet Callback Consumer Tutorial](https://docs.ritual.net/infernet/sdk/consumers/Callback) +3. [Infernet Nodes Docoumentation](https://docs.ritual.net/infernet/node/introduction) +4. [Infernet-Compatible Containers](https://docs.ritual.net/infernet/node/containers) diff --git a/projects/onnx-iris/container/Dockerfile b/projects/onnx-iris/container/Dockerfile new file mode 100644 index 0000000..57add3f --- /dev/null +++ b/projects/onnx-iris/container/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3.11-slim as builder + +WORKDIR /app + +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PIP_NO_CACHE_DIR 1 +ENV RUNTIME docker +ENV PYTHONPATH src + +RUN apt-get update +RUN apt-get install -y git curl + +# install uv +ADD --chmod=755 https://astral.sh/uv/install.sh /install.sh +RUN /install.sh && rm /install.sh + +COPY src/requirements.txt . + +RUN /root/.cargo/bin/uv pip install --system --no-cache -r requirements.txt + +COPY src src + +ENTRYPOINT ["hypercorn", "app:create_app()"] +CMD ["-b", "0.0.0.0:3000"] diff --git a/projects/onnx-iris/container/Makefile b/projects/onnx-iris/container/Makefile new file mode 100644 index 0000000..f392f14 --- /dev/null +++ b/projects/onnx-iris/container/Makefile @@ -0,0 +1,17 @@ +DOCKER_ORG := ritualnetwork +EXAMPLE_NAME := onnx-iris +TAG := $(DOCKER_ORG)/example-$(EXAMPLE_NAME)-infernet:latest + +.phony: build run build-multiplatform + +build: + @docker build -t $(TAG) . + +run: + docker run -p 3000:3000 $(TAG) + +# You may need to set up a docker builder, to do so run: +# docker buildx create --name mybuilder --bootstrap --use +# refer to https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images for more info +build-multiplatform: + docker buildx build --platform linux/amd64,linux/arm64 -t $(TAG) --push . diff --git a/projects/onnx-iris/container/README.md b/projects/onnx-iris/container/README.md new file mode 100644 index 0000000..753d4ec --- /dev/null +++ b/projects/onnx-iris/container/README.md @@ -0,0 +1,96 @@ +# Iris Classification via ONNX Runtime + +This example uses a pre-trained model to classify iris flowers. The code for the model +is located at +our [simple-ml-models](https://github.com/ritual-net/simple-ml-models/tree/main/iris_classification) +repository. + +## Overview + +We're making use of +the [ONNXInferenceWorkflow](https://github.com/ritual-net/infernet-ml-internal/blob/main/src/ml/workflows/inference/onnx_inference_workflow.py) +class to run the model. This is one of many workflows that we currently support in our +[infernet-ml](https://github.com/ritual-net/infernet-ml-internal). Consult the library's +documentation for more info on workflows that +are supported. + +## Building & Running the Container in Isolation + +Note that this container is meant to be started by the infernet-node. For development & +Testing purposes, you can run the container in isolation using the following commands. + +### Building the Container + +Simply run the following command to build the container. + +```bash +make build +``` + +Consult the [Makefile](./Makefile) for the build command. + +### Running the Container + +To run the container, you can use the following command: + +```bash +make run +``` + +## Testing the Container + +Run the following command to run an inference: + +```bash +curl -X POST http://127.0.0.1:3000/service_output \ + -H "Content-Type: application/json" \ + -d '{"source":1, "data": {"input": [[1.0380048, 0.5586108, 1.1037828, 1.712096]]}}' +``` + +#### Note Regarding the Input + +The inputs provided above correspond to an iris flower with the following +characteristics. Refer to the + +1. Sepal Length: `5.5cm` +2. Sepal Width: `2.4cm` +3. Petal Length: `3.8cm` +4. Petal Width: `1.1cm` + +Putting this input into a vector and scaling it, we get the following scaled input: + +```python +[1.0380048, 0.5586108, 1.1037828, 1.712096] +``` + +Refer +to [this function in the model's repository](https://github.com/ritual-net/simple-ml-models/blob/03ebc6fb15d33efe20b7782505b1a65ce3975222/iris_classification/iris_inference_pytorch.py#L13) +for more information on how the input is scaled. + +For more context on the Iris dataset, refer to +the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/iris). + +### Output + +By running the above command, you should get a response similar to the following: + +```json +[ + [ + [ + 0.0010151526657864451, + 0.014391022734344006, + 0.9845937490463257 + ] + ] +] +``` + +The response corresponds to the model's prediction for each of the classes: + +```python +['setosa', 'versicolor', 'virginica'] +``` + +In this case, the model predicts that the input corresponds to the class `virginica`with +a probability of `0.9845937490463257`(~98.5%). diff --git a/projects/onnx-iris/container/config.json b/projects/onnx-iris/container/config.json new file mode 100644 index 0000000..aa9856a --- /dev/null +++ b/projects/onnx-iris/container/config.json @@ -0,0 +1,50 @@ +{ + "log_path": "infernet_node.log", + "server": { + "port": 4000 + }, + "chain": { + "enabled": true, + "trail_head_blocks": 0, + "rpc_url": "http://host.docker.internal:8545", + "coordinator_address": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "wallet": { + "max_gas_limit": 4000000, + "private_key": "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d" + } + }, + "startup_wait": 1.0, + "docker": { + "username": "your-username", + "password": "" + }, + "redis": { + "host": "redis", + "port": 6379 + }, + "forward_stats": true, + "containers": [ + { + "id": "onnx-iris", + "image": "ritualnetwork/example-onnx-iris-infernet:latest", + "external": true, + "port": "3000", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "--bind=0.0.0.0:3000 --workers=2", + "env": {} + }, + { + "id": "anvil-node", + "image": "ritualnetwork/infernet-anvil:0.0.0", + "external": true, + "port": "8545", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "", + "env": {} + } + ] +} diff --git a/projects/onnx-iris/container/scripts/sample_endpoints.py b/projects/onnx-iris/container/scripts/sample_endpoints.py new file mode 100644 index 0000000..37f9571 --- /dev/null +++ b/projects/onnx-iris/container/scripts/sample_endpoints.py @@ -0,0 +1,52 @@ +import asyncio + +import aiohttp +from eth_abi import encode, decode # type: ignore + + +async def ping(session: aiohttp.ClientSession) -> None: + async with session.get("http://127.0.0.1:3000/") as response: + print(await response.text()) + + +async def post_directly_web2(session: aiohttp.ClientSession) -> None: + async with session.post( + "http://127.0.0.1:3000/service_output", + json={ + "source": 1, + "data": {"input": [[1.0380048, 0.5586108, 1.1037828, 1.712096]]}, + }, + ) as response: + print(await response.json()) + + +async def post_directly_web3(session: aiohttp.ClientSession) -> None: + async with session.post( + "http://127.0.0.1:3000/service_output", + json={ + "source": 0, + "data": encode( + ["uint256[]"], [[1_038_004, 558_610, 1_103_782, 1_712_096]] + ).hex(), + }, + ) as response: + print(await response.text()) + result = await response.json() + output = result["raw_output"] + result = decode(["uint256[]"], bytes.fromhex(output))[0] + print(f"result: {result}") + + +# async maine +async def main(session: aiohttp.ClientSession) -> None: + await post_directly_web3(session) + + +if __name__ == "__main__": + # run main async + + async def provide_session() -> None: + async with aiohttp.ClientSession() as session: + await main(session) + + asyncio.run(provide_session()) diff --git a/projects/onnx-iris/container/src/app.py b/projects/onnx-iris/container/src/app.py new file mode 100644 index 0000000..46cfde9 --- /dev/null +++ b/projects/onnx-iris/container/src/app.py @@ -0,0 +1,107 @@ +import logging +from typing import Any, cast, List + +import numpy as np +from eth_abi import decode, encode # type: ignore +from infernet_ml.utils.model_loader import ModelSource +from infernet_ml.utils.service_models import InfernetInput, InfernetInputSource +from infernet_ml.workflows.inference.onnx_inference_workflow import ( + ONNXInferenceWorkflow, +) +from quart import Quart, request +from quart.json.provider import DefaultJSONProvider + +log = logging.getLogger(__name__) + + +class NumpyJsonEncodingProvider(DefaultJSONProvider): + @staticmethod + def default(obj: Any) -> Any: + if isinstance(obj, np.ndarray): + # Convert NumPy arrays to list + return obj.tolist() + # fallback to default JSON encoding + return DefaultJSONProvider.default(obj) + + +def create_app() -> Quart: + Quart.json_provider_class = NumpyJsonEncodingProvider + app = Quart(__name__) + # we are downloading the model from the hub. + # model repo is located at: https://huggingface.co/Ritual-Net/iris-dataset + model_source = ModelSource.HUGGINGFACE_HUB + model_args = {"repo_id": "Ritual-Net/iris-dataset", "filename": "iris.onnx"} + + workflow = ONNXInferenceWorkflow(model_source=model_source, model_args=model_args) + workflow.setup() + + @app.route("/") + def index() -> str: + """ + Utility endpoint to check if the service is running. + """ + return "ONNX Iris Classifier Example Program" + + @app.route("/service_output", methods=["POST"]) + async def inference() -> dict[str, Any]: + req_data = await request.get_json() + """ + InfernetInput has the format: + source: (0 on-chain, 1 off-chain) + data: dict[str, Any] + """ + infernet_input: InfernetInput = InfernetInput(**req_data) + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + web2_input = cast(dict[str, Any], infernet_input.data) + values = cast(List[List[float]], web2_input["input"]) + else: + # On-chain requests are sent as a generalized hex-string which we will + # decode to the appropriate format. + web3_input: List[int] = decode( + ["uint256[]"], bytes.fromhex(cast(str, infernet_input.data)) + )[0] + values = [[float(v) / 1e6 for v in web3_input]] + + """ + The input to the onnx inference workflow needs to conform to ONNX runtime's + input_feed format. For more information refer to: + https://docs.ritual.net/ml-workflows/inference-workflows/onnx_inference_workflow + """ + result: dict[str, Any] = workflow.inference({"input": values}) + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + """ + In case of an off-chain request, the result is returned as is. + """ + return result + else: + """ + In case of an on-chain request, the result is returned in the format: + { + "raw_input": str, + "processed_input": str, + "raw_output": str, + "processed_output": str, + "proof": str, + } + refer to: https://docs.ritual.net/infernet/node/containers for more info. + """ + predictions = cast(List[List[List[float]]], result) + predictions_normalized = [int(p * 1e6) for p in predictions[0][0]] + return { + "raw_input": "", + "processed_input": "", + "raw_output": encode(["uint256[]"], [predictions_normalized]).hex(), + "processed_output": "", + "proof": "", + } + + return app + + +if __name__ == "__main__": + """ + Utility to run the app locally. For development purposes only. + """ + create_app().run(port=3000) diff --git a/projects/onnx-iris/container/src/requirements.txt b/projects/onnx-iris/container/src/requirements.txt new file mode 100644 index 0000000..be6cb85 --- /dev/null +++ b/projects/onnx-iris/container/src/requirements.txt @@ -0,0 +1,7 @@ +quart==0.19.4 +infernet_ml==0.1.0 +PyArweave @ git+https://github.com/ritual-net/pyarweave.git +web3==6.15.0 +onnx==1.15.0 +onnxruntime==1.16.3 +torch==2.1.2 diff --git a/projects/onnx-iris/contracts/.gitignore b/projects/onnx-iris/contracts/.gitignore new file mode 100644 index 0000000..85198aa --- /dev/null +++ b/projects/onnx-iris/contracts/.gitignore @@ -0,0 +1,14 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/projects/onnx-iris/contracts/Makefile b/projects/onnx-iris/contracts/Makefile new file mode 100644 index 0000000..2af9de7 --- /dev/null +++ b/projects/onnx-iris/contracts/Makefile @@ -0,0 +1,14 @@ +# phony targets are targets that don't actually create a file +.phony: deploy + +# anvil's third default address +sender := 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a +RPC_URL := http://localhost:8545 + +# deploying the contract +deploy: + @PRIVATE_KEY=$(sender) forge script script/Deploy.s.sol:Deploy --broadcast --rpc-url $(RPC_URL) + +# calling sayGM() +call-contract: + @PRIVATE_KEY=$(sender) forge script script/CallContract.s.sol:CallContract --broadcast --rpc-url $(RPC_URL) diff --git a/projects/onnx-iris/contracts/README.md b/projects/onnx-iris/contracts/README.md new file mode 100644 index 0000000..e90b151 --- /dev/null +++ b/projects/onnx-iris/contracts/README.md @@ -0,0 +1,41 @@ +# `ONNX` Consumer Contracts + +This is a [foundry](https://book.getfoundry.sh/) project that implements a simple Consumer +contract, [`IrisClassifier`](./src/IrisClassifier.sol). + +This readme explains how to compile and deploy the contract to the Infernet Anvil Testnet network. + +> [!IMPORTANT] +> Ensure that you are running the following scripts with the Infernet Anvil Testnet network. +> The [tutorial](../../hello-world/README.mdADME.md) at the root of this repository explains how to +> bring up an infernet node. + +### Installing the libraries + +```bash +forge install +``` + +### Compiling the contracts + +```bash +forge compile +``` + +### Deploying the contracts +The deploy script at `script/Deploy.s.sol` deploys the `IrisClassifier` contract to the Infernet Anvil Testnet network. + +We have the [following make target](./Makefile#L9) to deploy the contract. Refer to the Makefile +for more understanding around the deploy scripts. +```bash +make deploy +``` + +### Requesting a job +We also have a script called `CallContract.s.sol` that requests a job to the `IrisClassifier` contract. +Refer to the [script](./script/CallContract.s.sol) for more details. Similar to deployment, +you can run that script using the following convenience make target. +```bash +make call-contract +``` +Refer to the [Makefile](./Makefile#L14) for more details. diff --git a/projects/onnx-iris/contracts/foundry.toml b/projects/onnx-iris/contracts/foundry.toml new file mode 100644 index 0000000..83816a2 --- /dev/null +++ b/projects/onnx-iris/contracts/foundry.toml @@ -0,0 +1,7 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] +via_ir = true + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/projects/onnx-iris/contracts/remappings.txt b/projects/onnx-iris/contracts/remappings.txt new file mode 100644 index 0000000..c788350 --- /dev/null +++ b/projects/onnx-iris/contracts/remappings.txt @@ -0,0 +1,2 @@ +forge-std/=lib/forge-std/src +infernet-sdk/=lib/infernet-sdk/src diff --git a/projects/onnx-iris/contracts/script/CallContract.s.sol b/projects/onnx-iris/contracts/script/CallContract.s.sol new file mode 100644 index 0000000..3612da2 --- /dev/null +++ b/projects/onnx-iris/contracts/script/CallContract.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.0; + +import {Script, console2} from "forge-std/Script.sol"; +import {IrisClassifier} from "../src/IrisClassifier.sol"; + +contract CallContract is Script { + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + IrisClassifier irisClassifier = IrisClassifier(0x663F3ad617193148711d28f5334eE4Ed07016602); + + irisClassifier.classifyIris(); + + vm.stopBroadcast(); + } +} diff --git a/projects/onnx-iris/contracts/script/Deploy.s.sol b/projects/onnx-iris/contracts/script/Deploy.s.sol new file mode 100644 index 0000000..94fb53e --- /dev/null +++ b/projects/onnx-iris/contracts/script/Deploy.s.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import {IrisClassifier} from "../src/IrisClassifier.sol"; + +contract Deploy is Script { + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + // Log address + address deployerAddress = vm.addr(deployerPrivateKey); + console2.log("Loaded deployer: ", deployerAddress); + + address coordinator = 0x5FbDB2315678afecb367f032d93F642f64180aa3; + // Create consumer + IrisClassifier classifier = new IrisClassifier(coordinator); + console2.log("Deployed IrisClassifier: ", address(classifier)); + + // Execute + vm.stopBroadcast(); + vm.broadcast(); + } +} diff --git a/projects/onnx-iris/contracts/src/IrisClassifier.sol b/projects/onnx-iris/contracts/src/IrisClassifier.sol new file mode 100644 index 0000000..1fd5eb4 --- /dev/null +++ b/projects/onnx-iris/contracts/src/IrisClassifier.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {console2} from "forge-std/console2.sol"; +import {CallbackConsumer} from "infernet-sdk/consumer/Callback.sol"; + + +contract IrisClassifier is CallbackConsumer { + string private EXTREMELY_COOL_BANNER = "\n\n" + "_____ _____ _______ _ _ _\n" + "| __ \\|_ _|__ __| | | | /\\ | |\n" + "| |__) | | | | | | | | | / \\ | |\n" + "| _ / | | | | | | | |/ /\\ \\ | |\n" + "| | \\ \\ _| |_ | | | |__| / ____ \\| |____\n" + "|_| \\_\\_____| |_| \\____/_/ \\_\\______|\n\n"; + + constructor(address coordinator) CallbackConsumer(coordinator) {} + + function classifyIris() public { + /// @dev Iris data is in the following format: + /// @dev [sepal_length, sepal_width, petal_length, petal_width] + /// @dev the following vector corresponds to the following properties: + /// "sepal_length": 5.5cm + /// "sepal_width": 2.4cm + /// "petal_length": 3.8cm + /// "petal_width": 1.1cm + /// @dev The data is normalized & scaled. + /// refer to [this function in the model's repository](https://github.com/ritual-net/simple-ml-models/blob/03ebc6fb15d33efe20b7782505b1a65ce3975222/iris_classification/iris_inference_pytorch.py#L13) + /// for more info on normalization. + /// @dev The data is adjusted by 6 decimals + + uint256[] memory iris_data = new uint256[](4); + iris_data[0] = 1_038_004; + iris_data[1] = 558_610; + iris_data[2] = 1_103_782; + iris_data[3] = 1_712_096; + + _requestCompute( + "onnx-iris", + abi.encode(iris_data), + 20 gwei, + 1_000_000, + 1 + ); + } + + function _receiveCompute( + uint32 subscriptionId, + uint32 interval, + uint16 redundancy, + address node, + bytes calldata input, + bytes calldata output, + bytes calldata proof + ) internal override { + console2.log(EXTREMELY_COOL_BANNER); + (bytes memory raw_output, bytes memory processed_output) = abi.decode(output, (bytes, bytes)); + (uint256[] memory classes) = abi.decode(raw_output, (uint256[])); + uint256 setosa = classes[0]; + uint256 versicolor = classes[1]; + uint256 virginica = classes[2]; + console2.log("predictions: (adjusted by 6 decimals, 1_000_000 = 100%, 1_000 = 0.1%)"); + console2.log("Setosa: ", setosa); + console2.log("Versicolor: ", versicolor); + console2.log("Virginica: ", virginica); + } +} diff --git a/projects/onnx-iris/onnx-iris.md b/projects/onnx-iris/onnx-iris.md new file mode 100644 index 0000000..b3b01cd --- /dev/null +++ b/projects/onnx-iris/onnx-iris.md @@ -0,0 +1,271 @@ +# Running an ONNX Model on Infernet + +Welcome to this comprehensive guide where we'll explore how to run an ONNX model on Infernet, using our [infernet-container-starter](https://github.com/ritual-net/infernet-container-starter/) +examples repository. This tutorial is designed to give you and end-to-end understanding of how you can run your own +custom pre-trained models, and interact with them on-chain and off-chain. + +**Model:** This example uses a pre-trained model to classify iris flowers. The code for the model +is located at our [`simple-ml-models`](https://github.com/ritual-net/simple-ml-models/tree/main/iris_classification) repository. + +## Pre-requisites + +For this tutorial you'll need to have the following installed. + +1. [Docker](https://docs.docker.com/engine/install/) +2. [Foundry](https://book.getfoundry.sh/getting-started/installation) + +### Ensure `docker` & `foundry` exist + +To check for `docker`, run the following command in your terminal: + +```bash copy +docker --version +# Docker version 25.0.2, build 29cf629 (example output) +``` + +You'll also need to ensure that docker-compose exists in your terminal: + +```bash copy +which docker-compose +# /usr/local/bin/docker-compose (example output) +``` + +To check for `foundry`, run the following command in your terminal: + +```bash copy +forge --version +# forge 0.2.0 (551bcb5 2024-02-28T07:40:42.782478000Z) (example output) +``` + +### Clone the starter repository + +If you haven't already, clone the infernet-container-starter repository. All of the code for this tutorial is located +under the `projects/onnx-iris` directory. + +```bash copy +# Clone locally +git clone --recurse-submodules https://github.com/ritual-net/infernet-container-starter +# Navigate to the repository +cd infernet-container-starter +``` + +## Making Inference Requests via Node API (a la Web2 request) + +### Build the `onnx-iris` container + +From the top-level directory of this repository, simply run the following command to build the `onnx-iris` container: + +```bash copy +make build-container project=onnx-iris +``` + +After the container is built, you can deploy an infernet-node that utilizes that +container by running the following command: + +```bash copy +make deploy-container project=onnx-iris +``` + +Now, you can make inference requests to the infernet-node. In a new tab, run: + +```bash copy +curl -X POST "http://127.0.0.1:4000/api/jobs" \ + -H "Content-Type: application/json" \ + -d '{"containers":["onnx-iris"], "data": {"input": [[1.0380048, 0.5586108, 1.1037828, 1.712096]]}}' +``` + +You should get an output similar to the following: + +```json +{ + "id": "074b9e98-f1f6-463c-b185-651878f3b4f6" +} +``` + +Now, you can check the status of the job by running (Make sure job id matches the one +you got from the previous request): + +```bash +curl -X GET "http://127.0.0.1:4000/api/jobs?id=074b9e98-f1f6-463c-b185-651878f3b4f6" +``` + +Should return: + +```json +[ + { + "id": "074b9e98-f1f6-463c-b185-651878f3b4f6", + "result": { + "container": "onnx-iris", + "output": [ + [ + [ + 0.0010151526657864451, + 0.014391022734344006, + 0.9845937490463257 + ] + ] + ] + }, + "status": "success" + } +] +``` + +The `output` corresponds to the model's prediction for each of the classes: + +```python +['setosa', 'versicolor', 'virginica'] +``` + +In this case, the model predicts that the input corresponds to the class `virginica`with +a probability of `0.9845937490463257`(~98.5%). + +#### Note Regarding the Input + +The inputs provided above correspond to an iris flower with the following +characteristics. Refer to the + +1. Sepal Length: `5.5cm` +2. Sepal Width: `2.4cm` +3. Petal Length: `3.8cm` +4. Petal Width: `1.1cm` + +Putting this input into a vector and scaling it, we get the following scaled input: + +```python +[1.0380048, 0.5586108, 1.1037828, 1.712096] +``` + +Refer +to [this function in the model's repository](https://github.com/ritual-net/simple-ml-models/blob/03ebc6fb15d33efe20b7782505b1a65ce3975222/iris_classification/iris_inference_pytorch.py#L13) +for more information on how the input is scaled. + +For more context on the Iris dataset, refer to +the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/iris). + +## Making Inference Requests via Contracts (a la Web3 request) + +The [contracts](contracts) directory contains a simple forge +project that can be used to interact with the Infernet Node. + +Here, we have a very simple +contract, [IrisClassifier](contracts/src/IrisClassifier.sol), +that requests a compute job from the Infernet Node and then retrieves the result. +We are going to make the same request as above, but this time using a smart contract. +Since floats are not supported in Solidity, we convert all floats to `uint256` by +multiplying the input vector entries by `1e6`: + +```Solidity + uint256[] memory iris_data = new uint256[](4); +iris_data[0] = 1_038_004; +iris_data[1] = 558_610; +iris_data[2] = 1_103_782; +iris_data[3] = 1_712_096; +``` + +We have multiplied the input by 1e6 to have enough accuracy. This can be seen +[here](contracts/src/IrisClassifier.sol#19) in the contract's +code. + +### Monitoring the EVM Logs + +The infernet node configuration for this project includes +an [infernet anvil node](projects/hello-world/README.mdllo-world/README.md#77) with pre-deployed contracts. You can view the +logs of the anvil node to see what's going on. In a new terminal, run: + +```bash +docker logs -f anvil-node +``` + +As you deploy the contract and make requests, you should see logs indicating the +requests and responses. + +### Deploying the Contract + +Simply run the following command to deploy the contract: + +```bash +project=onnx-iris make deploy-contracts +``` + +In your anvil logs you should see the following: + +```bash +eth_getTransactionReceipt + + Transaction: 0xeed605eacdace39a48635f6d14215b386523766f80a113b4484f542d862889a4 + Contract created: 0x663f3ad617193148711d28f5334ee4ed07016602 + Gas used: 714269 + + Block Number: 1 + Block Hash: 0x4e6333f91e86a0a0be357b63fba9eb5f5ba287805ac35aaa7698fd05445730f5 + Block Time: "Mon, 19 Feb 2024 20:31:17 +0000" + +eth_blockNumber +``` + +beautiful, we can see that a new contract has been created +at `0x663f3ad617193148711d28f5334ee4ed07016602`. That's the address of +the `IrisClassifier` contract. We are now going to call this contract. To do so, +we are using +the [CallContract.s.sol](contracts/script/CallContract.s.sol) +script. Note that the address of the +contract [is hardcoded in the script](contracts/script/CallContract.s.sol#L13), +and should match the address we see above. Since this is a test environment and we're +using a test deployer address, this address is quite deterministic and shouldn't change. +Otherwise, change the address in the script to match the address of the contract you +just deployed. + +### Calling the Contract + +To call the contract, run the following command: + +```bash +project=onnx-iris make call-contract +``` + +In the anvil logs, you should see the following: + +```bash +eth_sendRawTransaction + + +_____ _____ _______ _ _ _ +| __ \|_ _|__ __| | | | /\ | | +| |__) | | | | | | | | | / \ | | +| _ / | | | | | | | |/ /\ \ | | +| | \ \ _| |_ | | | |__| / ____ \| |____ +|_| \_\_____| |_| \____/_/ \_\______| + + +predictions: (adjusted by 6 decimals, 1_000_000 = 100%, 1_000 = 0.1%) +Setosa: 1015 +Versicolor: 14391 +Virginica: 984593 + + Transaction: 0x77c7ff26ed20ffb1a32baf467a3cead6ed81fe5ae7d2e419491ca92b4ac826f0 + Gas used: 111091 + + Block Number: 3 + Block Hash: 0x78f98f4d54ebdca2a8aa46c3b9b7e7ae36348373dbeb83c91a4600dd6aba2c55 + Block Time: "Mon, 19 Feb 2024 20:33:00 +0000" + +eth_blockNumber +eth_newFilter +eth_getFilterLogs +``` + +Beautiful! We can see that the same result has been posted to the contract. + +### Next Steps + +From here, you can bring your own pre-trained ONNX model, and with minimal changes, you can make it both work with an +infernet-node as well as a smart contract. + +### More Information + +1. Check out our [other examples](../../readme.md) if you haven't already +2. [Infernet Callback Consumer Tutorial](https://docs.ritual.net/infernet/sdk/consumers/Callback) +3. [Infernet Nodes Docoumentation](https://docs.ritual.net/infernet/node/introduction) +4. [Infernet-Compatible Containers](https://docs.ritual.net/infernet/node/containers) diff --git a/projects/prompt-to-nft/.gitignore b/projects/prompt-to-nft/.gitignore new file mode 100644 index 0000000..0ac1401 --- /dev/null +++ b/projects/prompt-to-nft/.gitignore @@ -0,0 +1,2 @@ +# modal service outputs +modal/outputs diff --git a/projects/prompt-to-nft/container/.gitignore b/projects/prompt-to-nft/container/.gitignore new file mode 100644 index 0000000..9c6605c --- /dev/null +++ b/projects/prompt-to-nft/container/.gitignore @@ -0,0 +1,3 @@ +wallet +config.json +**/keyfile-arweave.json diff --git a/projects/prompt-to-nft/container/Dockerfile b/projects/prompt-to-nft/container/Dockerfile new file mode 100644 index 0000000..eb12000 --- /dev/null +++ b/projects/prompt-to-nft/container/Dockerfile @@ -0,0 +1,27 @@ +FROM python:3.11-slim as builder + +WORKDIR /app + +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PIP_NO_CACHE_DIR 1 +ENV RUNTIME docker +ENV PYTHONPATH src + +RUN apt-get update +RUN apt-get install -y git curl + +# install uv +ADD --chmod=755 https://astral.sh/uv/install.sh /install.sh +RUN /install.sh && rm /install.sh + +COPY src/requirements.txt . + +RUN /root/.cargo/bin/uv pip install --system --no-cache -r requirements.txt + +copy wallet wallet + +COPY src src + +ENTRYPOINT ["hypercorn", "app:create_app()"] +CMD ["-b", "0.0.0.0:3000"] diff --git a/projects/prompt-to-nft/container/Makefile b/projects/prompt-to-nft/container/Makefile new file mode 100644 index 0000000..2c67657 --- /dev/null +++ b/projects/prompt-to-nft/container/Makefile @@ -0,0 +1,23 @@ +DOCKER_ORG := ritualnetwork +EXAMPLE_NAME := prompt-to-nft +TAG := $(DOCKER_ORG)/example-$(EXAMPLE_NAME)-infernet:latest + +.phony: build run build-multiplatform + +build: +ifdef CI + mkdir -p wallet # in CI we don't have a wallet directory. This enables to bypass that and ensure that the image + # is built successfully +endif + @docker build -t $(TAG) . + +wallet_dir ?= /app/wallet + +run: + docker run -p 3000:3000 -v ./wallet:$(wallet_dir) --env-file prompt_to_nft.env $(TAG) + +# You may need to set up a docker builder, to do so run: +# docker buildx create --name mybuilder --bootstrap --use +# refer to https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images for more info +build-multiplatform: + docker buildx build --platform linux/amd64,linux/arm64 -t $(TAG) --push . diff --git a/projects/prompt-to-nft/container/README.md b/projects/prompt-to-nft/container/README.md new file mode 100644 index 0000000..67c25fe --- /dev/null +++ b/projects/prompt-to-nft/container/README.md @@ -0,0 +1,91 @@ +# Prompt-to-NFT Container + + +## Overview + + +## Building & Running the Container in Isolation + +Note that this container is meant to be started by the infernet-node. For development & +Testing purposes, you can run the container in isolation using the following commands. + +### Building the Container + +Simply run the following command to build the container. + +```bash +make build +``` + +Consult the [Makefile](./Makefile) for the build command. + +### Adding Arweave File +Add your arweave wallet file + + + +### Running the Container + +To run the container, you can use the following command: + +```bash +make run +``` + +## Testing the Container + +Run the following command to run an inference: + +```bash +curl -X POST http://127.0.0.1:3000/service_output \ + -H "Content-Type: application/json" \ + -d '{"source":1, "data": {"prompt": "a golden retriever skiing"}}' +``` + +#### Note Regarding the Input + +The inputs provided above correspond to an iris flower with the following +characteristics. Refer to the + +1. Sepal Length: `5.5cm` +2. Sepal Width: `2.4cm` +3. Petal Length: `3.8cm` +4. Petal Width: `1.1cm` + +Putting this input into a vector and scaling it, we get the following scaled input: + +```python +[1.0380048, 0.5586108, 1.1037828, 1.712096] +``` + +Refer +to [this function in the model's repository](https://github.com/ritual-net/simple-ml-models/blob/03ebc6fb15d33efe20b7782505b1a65ce3975222/iris_classification/iris_inference_pytorch.py#L13) +for more information on how the input is scaled. + +For more context on the Iris dataset, refer to +the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/iris). + +### Output + +By running the above command, you should get a response similar to the following: + +```json +[ + [ + [ + 0.0010151526657864451, + 0.014391022734344006, + 0.9845937490463257 + ] + ] +] +``` + +The response corresponds to the model's prediction for each of the classes: + +```python +['setosa', 'versicolor', 'virginica'] +``` + +In this case, the model predicts that the input corresponds to the class `virginica`with +a probability of `0.9845937490463257`(~98.5%). diff --git a/projects/prompt-to-nft/container/config.sample.json b/projects/prompt-to-nft/container/config.sample.json new file mode 100644 index 0000000..40f05de --- /dev/null +++ b/projects/prompt-to-nft/container/config.sample.json @@ -0,0 +1,53 @@ +{ + "log_path": "infernet_node.log", + "server": { + "port": 4000 + }, + "chain": { + "enabled": true, + "trail_head_blocks": 0, + "rpc_url": "http://host.docker.internal:8545", + "coordinator_address": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "wallet": { + "max_gas_limit": 4000000, + "private_key": "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d" + } + }, + "startup_wait": 1.0, + "docker": { + "username": "your-username", + "password": "" + }, + "redis": { + "host": "redis", + "port": 6379 + }, + "forward_stats": true, + "containers": [ + { + "id": "prompt-to-nft", + "image": "ritualnetwork/example-prompt-to-nft-infernet:latest", + "external": true, + "port": "3000", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "--bind=0.0.0.0:3000 --workers=2", + "env": { + "ARWEAVE_WALLET_FILE_PATH": "wallet/keyfile-arweave.json", + "IMAGE_GEN_SERVICE_URL": "http://your.services.ip:port" + } + }, + { + "id": "anvil-node", + "image": "ritualnetwork/infernet-anvil:0.0.0", + "external": true, + "port": "8545", + "allowed_delegate_addresses": [], + "allowed_addresses": [], + "allowed_ips": [], + "command": "", + "env": {} + } + ] +} diff --git a/projects/prompt-to-nft/container/prompt_to_nft.env.sample b/projects/prompt-to-nft/container/prompt_to_nft.env.sample new file mode 100644 index 0000000..1483d42 --- /dev/null +++ b/projects/prompt-to-nft/container/prompt_to_nft.env.sample @@ -0,0 +1,2 @@ +ARWEAVE_WALLET_FILE_PATH= +IMAGE_GEN_SERVICE_URL= diff --git a/projects/prompt-to-nft/container/src/__init__.py b/projects/prompt-to-nft/container/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/projects/prompt-to-nft/container/src/app.py b/projects/prompt-to-nft/container/src/app.py new file mode 100644 index 0000000..4ae07c9 --- /dev/null +++ b/projects/prompt-to-nft/container/src/app.py @@ -0,0 +1,109 @@ +import logging +import os +from pathlib import Path +from typing import Any, cast + +import aiohttp +from eth_abi import decode, encode # type: ignore +from infernet_ml.utils.arweave import upload, load_wallet +from infernet_ml.utils.service_models import InfernetInput, InfernetInputSource +from quart import Quart, request + +log = logging.getLogger(__name__) + + +async def run_inference(prompt: str, output_path: str) -> None: + async with aiohttp.ClientSession() as session: + app_url = os.getenv("IMAGE_GEN_SERVICE_URL") + async with session.post( + f"{app_url}/service_output", + json={ + "prompt": prompt, + }, + ) as response: + image_bytes = await response.read() + with open(output_path, "wb") as f: + f.write(image_bytes) + + +def ensure_env_vars() -> None: + if not os.getenv("IMAGE_GEN_SERVICE_URL"): + raise ValueError("IMAGE_GEN_SERVICE_URL environment variable not set") + load_wallet() + + +def create_app() -> Quart: + app = Quart(__name__) + ensure_env_vars() + + @app.route("/") + def index() -> str: + """ + Utility endpoint to check if the service is running. + """ + return "Stable Diffusion Example Program" + + @app.route("/service_output", methods=["POST"]) + async def inference() -> dict[str, Any]: + req_data = await request.get_json() + """ + InfernetInput has the format: + source: (0 on-chain, 1 off-chain) + data: dict[str, Any] + """ + infernet_input: InfernetInput = InfernetInput(**req_data) + temp_file = "image.png" + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + prompt: str = cast(dict[str, str], infernet_input.data)["prompt"] + else: + # On-chain requests are sent as a generalized hex-string which we will + # decode to the appropriate format. + (prompt, mintTo) = decode( + ["string", "address"], bytes.fromhex(cast(str, infernet_input.data)) + ) + log.info("mintTo: %s", mintTo) + log.info("prompt: %s", prompt) + + # run the inference and download the image to a temp file + await run_inference(prompt, temp_file) + + tx = upload(Path(temp_file), {"Content-Type": "image/png"}) + + if infernet_input.source == InfernetInputSource.OFFCHAIN: + """ + In case of an off-chain request, the result is returned as is. + """ + return { + "prompt": prompt, + "hash": tx.id, + "image_url": f"https://arweave.net/{tx.id}", + } + else: + """ + In case of an on-chain request, the result is returned in the format: + { + "raw_input": str, + "processed_input": str, + "raw_output": str, + "processed_output": str, + "proof": str, + } + refer to: https://docs.ritual.net/infernet/node/containers for more info. + """ + return { + "raw_input": infernet_input.data, + "processed_input": "", + "raw_output": encode(["string"], [tx.id]).hex(), + "processed_output": "", + "proof": "", + } + + return app + + +if __name__ == "__main__": + """ + Utility to run the app locally. For development purposes only. + """ + create_app().run(host="0.0.0.0", port=3000) diff --git a/projects/prompt-to-nft/container/src/requirements.txt b/projects/prompt-to-nft/container/src/requirements.txt new file mode 100644 index 0000000..5ac781d --- /dev/null +++ b/projects/prompt-to-nft/container/src/requirements.txt @@ -0,0 +1,5 @@ +quart==0.19.4 +infernet_ml==0.1.0 +PyArweave @ git+https://github.com/ritual-net/pyarweave.git +web3==6.15.0 +tqdm==4.66.1 diff --git a/projects/prompt-to-nft/contracts/.gitignore b/projects/prompt-to-nft/contracts/.gitignore new file mode 100644 index 0000000..85198aa --- /dev/null +++ b/projects/prompt-to-nft/contracts/.gitignore @@ -0,0 +1,14 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/projects/prompt-to-nft/contracts/Makefile b/projects/prompt-to-nft/contracts/Makefile new file mode 100644 index 0000000..2af9de7 --- /dev/null +++ b/projects/prompt-to-nft/contracts/Makefile @@ -0,0 +1,14 @@ +# phony targets are targets that don't actually create a file +.phony: deploy + +# anvil's third default address +sender := 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a +RPC_URL := http://localhost:8545 + +# deploying the contract +deploy: + @PRIVATE_KEY=$(sender) forge script script/Deploy.s.sol:Deploy --broadcast --rpc-url $(RPC_URL) + +# calling sayGM() +call-contract: + @PRIVATE_KEY=$(sender) forge script script/CallContract.s.sol:CallContract --broadcast --rpc-url $(RPC_URL) diff --git a/projects/prompt-to-nft/contracts/foundry.toml b/projects/prompt-to-nft/contracts/foundry.toml new file mode 100644 index 0000000..83816a2 --- /dev/null +++ b/projects/prompt-to-nft/contracts/foundry.toml @@ -0,0 +1,7 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] +via_ir = true + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/projects/prompt-to-nft/contracts/remappings.txt b/projects/prompt-to-nft/contracts/remappings.txt new file mode 100644 index 0000000..1e986ec --- /dev/null +++ b/projects/prompt-to-nft/contracts/remappings.txt @@ -0,0 +1,3 @@ +forge-std/=lib/forge-std/src +infernet-sdk/=lib/infernet-sdk/src +solmate/=lib/solmate/src diff --git a/projects/prompt-to-nft/contracts/script/CallContract.s.sol b/projects/prompt-to-nft/contracts/script/CallContract.s.sol new file mode 100644 index 0000000..f1c5906 --- /dev/null +++ b/projects/prompt-to-nft/contracts/script/CallContract.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.0; + +import {Script, console2} from "forge-std/Script.sol"; +import {DiffusionNFT} from "../src/DiffusionNFT.sol"; + +contract CallContract is Script { +string defaultPrompt = "A picture of a shrimp dunking a basketball"; + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address mintTo = vm.envOr("mint_to", msg.sender); + string memory prompt = vm.envOr("prompt", defaultPrompt); + vm.startBroadcast(deployerPrivateKey); + + DiffusionNFT nft = DiffusionNFT(0x663F3ad617193148711d28f5334eE4Ed07016602); + + nft.mint(prompt, mintTo); + + vm.stopBroadcast(); + } +} diff --git a/projects/prompt-to-nft/contracts/script/Deploy.s.sol b/projects/prompt-to-nft/contracts/script/Deploy.s.sol new file mode 100644 index 0000000..4520c16 --- /dev/null +++ b/projects/prompt-to-nft/contracts/script/Deploy.s.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import {DiffusionNFT} from "../src/DiffusionNFT.sol"; + +contract Deploy is Script { + function run() public { + // Setup wallet + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + // Log address + address deployerAddress = vm.addr(deployerPrivateKey); + console2.log("Loaded deployer: ", deployerAddress); + + address coordinator = 0x5FbDB2315678afecb367f032d93F642f64180aa3; + // Create consumer + DiffusionNFT nft = new DiffusionNFT(coordinator); + console2.log("Deployed IrisClassifier: ", address(nft)); + + // Execute + vm.stopBroadcast(); + vm.broadcast(); + } +} diff --git a/projects/prompt-to-nft/contracts/src/DiffusionNFT.sol b/projects/prompt-to-nft/contracts/src/DiffusionNFT.sol new file mode 100644 index 0000000..4f6c151 --- /dev/null +++ b/projects/prompt-to-nft/contracts/src/DiffusionNFT.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.13; + +import {console2} from "forge-std/console2.sol"; +import {CallbackConsumer} from "infernet-sdk/consumer/Callback.sol"; +import {ERC721} from "solmate/tokens/ERC721.sol"; + +contract DiffusionNFT is CallbackConsumer, ERC721 { + string private EXTREMELY_COOL_BANNER = "\n\n" "_____ _____ _______ _ _ _\n" + "| __ \\|_ _|__ __| | | | /\\ | |\n" "| |__) | | | | | | | | | / \\ | |\n" + "| _ / | | | | | | | |/ /\\ \\ | |\n" "| | \\ \\ _| |_ | | | |__| / ____ \\| |____\n" + "|_| \\_\\_____| |_| \\____/_/ \\_\\______|\n\n"; + + constructor(address coordinator) CallbackConsumer(coordinator) ERC721("DiffusionNFT", "DN") {} + + function mint(string memory prompt, address to) public { + _requestCompute("prompt-to-nft", abi.encode(prompt, to), 20 gwei, 1_000_000, 1); + } + + uint256 public counter = 0; + + mapping(uint256 => string) public arweaveHashes; + + function tokenURI(uint256 tokenId) public view override returns (string memory) { + return string.concat("https://arweave.net/", arweaveHashes[tokenId]); + } + + function nftCollection() public view returns (uint256[] memory) { + uint256 balance = balanceOf(msg.sender); + uint256[] memory collection = new uint256[](balance); + uint256 j = 0; + for (uint256 i = 0; i < counter; i++) { + if (ownerOf(i) == msg.sender) { + collection[j] = i; + j++; + } + } + return collection; + } + + + function _receiveCompute( + uint32 subscriptionId, + uint32 interval, + uint16 redundancy, + address node, + bytes calldata input, + bytes calldata output, + bytes calldata proof + ) internal override { + console2.log(EXTREMELY_COOL_BANNER); + (bytes memory raw_output, bytes memory processed_output) = abi.decode(output, (bytes, bytes)); + (string memory arweaveHash) = abi.decode(raw_output, (string)); + (bytes memory raw_input, bytes memory processed_input) = abi.decode(input, (bytes, bytes)); + (string memory prompt, address to) = abi.decode(raw_input, (string, address)); + counter += 1; + arweaveHashes[counter] = arweaveHash; + console2.log("nft minted!", string.concat("https://arweave.net/", arweaveHashes[counter])); + console2.log("nft id", counter); + console2.log("nft owner", to); + _mint(to, counter); + } +} diff --git a/projects/prompt-to-nft/img/fetching-from-arweave.png b/projects/prompt-to-nft/img/fetching-from-arweave.png new file mode 100644 index 0000000000000000000000000000000000000000..70fa007c2c99bc01548ac6c08a510269cf236099 GIT binary patch literal 518025 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�ha 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%0A^pjpS!kxywpoVWH}m5#hw&Xr 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 bnpr{35kTp#9uicXXuy#O8{Q_#a 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