{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "1dc6faae", "metadata": {}, "outputs": [], "source": [ "import os\n", "import base64\n", "import requests\n", "from dotenv import load_dotenv" ] }, { "cell_type": "code", "execution_count": null, "id": "b3107275", "metadata": {}, "outputs": [], "source": [ "load_dotenv()\n", "\n", "ACCOUNT_ID = os.environ[\"CF_ACCOUNT_ID\"]\n", "API_TOKEN = os.environ[\"CF_API_TOKEN\"]" ] }, { "cell_type": "markdown", "id": "999adf95", "metadata": {}, "source": [ "## Text to image" ] }, { "cell_type": "code", "execution_count": null, "id": "40b35163", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved: output.jpg (263282 bytes)\n", "Saved: image9.jpg (263282 bytes)\n" ] } ], "source": [ "MODEL = \"@cf/black-forest-labs/flux-1-schnell\"\n", "URL = f\"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}\"\n", "\n", "payload = {\n", " \"prompt\": \"a slightly curved broadsword with a fancy golden crossguard\",\n", "}\n", "\n", "headers = {\n", " \"Authorization\": f\"Bearer {API_TOKEN}\",\n", " \"Content-Type\": \"application/json\",\n", "}\n", "\n", "resp = requests.post(URL, json=payload, headers=headers, timeout=60)\n", "resp.raise_for_status()\n", "\n", "data = resp.json()\n", "b64 = data[\"result\"][\"image\"]\n", "if not b64:\n", " raise RuntimeError(f\"Unexpected response structure: {data}\")\n", "\n", "img_bytes = base64.b64decode(b64)\n", "\n", "out_path = \"output.jpg\"\n", "with open(out_path, \"wb\") as f:\n", " f.write(img_bytes)\n", "\n", "print(f\"Saved: {out_path} ({len(img_bytes)} bytes)\")\n", "\n", "b64 = data[\"result\"][\"image\"]\n", "if not b64:\n", " raise RuntimeError(f\"Unexpected response structure: {data}\")\n", "\n", "img_bytes = base64.b64decode(b64)\n", "\n", "out_path = \"image9.jpg\"\n", "with open(out_path, \"wb\") as f:\n", " f.write(img_bytes)\n", "\n", "print(f\"Saved: {out_path} ({len(img_bytes)} bytes)\")" ] }, { "cell_type": "markdown", "id": "14a874c4", "metadata": {}, "source": [ "## Text prompt refinement" ] }, { "cell_type": "code", "execution_count": 13, "id": "485f6f46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"dark wooden battleaxe with bronze blade\"\n" ] } ], "source": [ "MODEL = \"@cf/meta/llama-3.2-3b-instruct\"\n", "URL = f\"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}\"\n", "\n", "instructions = \"\"\"\n", "User is talking about some object. Your task is to generate a short and concise description of it. Use only user's own words, keep it as short as possible.\n", "Example:\n", "User: 'Umm, okay, I would like a really cool sword, with for example a bright orange crossguard. And also it should be slightly curved.'\n", "You: 'a slightly curved sword with bright orange crossguard'\n", "\"\"\"\n", "prompt = \"Umm, alright, can you please give me an epic battleaxe? It should have a dark wooden shaft and bronze blade.\"\n", "\n", "response = requests.post(URL,\n", " headers={\"Authorization\": f\"Bearer {API_TOKEN}\"},\n", " json={\n", " \"messages\": [\n", " {\"role\": \"system\", \"content\": instructions},\n", " {\"role\": \"user\", \"content\": prompt}\n", " ]\n", " }\n", ")\n", "data = response.json()\n", "result_text = data[\"result\"][\"response\"]\n", "print(result_text)" ] }, { "cell_type": "code", "execution_count": null, "id": "76fa21f0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.0" } }, "nbformat": 4, "nbformat_minor": 5 }