{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "OPENAI_KEY1 = \"sk-XXX\"\n", "OPENAI_KEY2 = \"sk-XX\"" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Use OpenAI\n", "\n", "Set you `OPENAI_API_KEY` environment variable." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from manifest import Manifest\n", "from manifest.connections.client_pool import ClientConnection\n", "\n", "openai_ada = ClientConnection(\n", " client_name=\"openai\",\n", " client_connection=OPENAI_KEY1,\n", " engine=\"text-ada-001\"\n", ")\n", "\n", "openai_curie = ClientConnection(\n", " client_name=\"openai\",\n", " client_connection=OPENAI_KEY2,\n", " engine=\"text-curie-001\"\n", ")\n", "\n", "manifest = Manifest(client_pool=[openai_ada, openai_curie], client_pool_schedule=\"round_robin\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "I am a model.\n", "1\n", "I am a MacBook Pro with a retina\n" ] } ], "source": [ "res = manifest.run(\"What model are you?\", temperature=0.0)\n", "print(manifest.client_pool.current_client_id)\n", "print(res)\n", "res = manifest.run(\"What model are you?\", temperature=0.0)\n", "print(manifest.client_pool.current_client_id)\n", "print(res)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## With Async" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import nest_asyncio\n", "# This is required for asyncio.run(...) to work in Jupyter notebooks.\n", "nest_asyncio.apply()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from manifest import Manifest\n", "from manifest.connections.client_pool import ClientConnection\n", "\n", "openai_ada = ClientConnection(\n", " client_name=\"openai\",\n", " client_connection=OPENAI_KEY1,\n", " engine=\"text-ada-001\"\n", ")\n", "\n", "openai_babbage = ClientConnection(\n", " client_name=\"openai\",\n", " client_connection=OPENAI_KEY2,\n", " engine=\"text-babbage-001\"\n", ")\n", "\n", "openai_curie = ClientConnection(\n", " client_name=\"openai\",\n", " client_connection=OPENAI_KEY2,\n", " engine=\"text-curie-001\"\n", ")\n", "\n", "manifest = Manifest(client_pool=[openai_ada, openai_babbage, openai_curie], client_pool_schedule=\"round_robin\")\n", "manifest_single_client = Manifest(client_pool=[openai_babbage])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For loop: 128.68\n", "Running with async single client\n", "Running 1 tasks across all clients.\n", "Async loop: 4.02\n", "Running with async two clients but not chunking\n", "Running 1 tasks across all clients.\n", "Async loop: 3.92\n", "Running with async two clients and chunk size\n", "Running 20 tasks across all clients.\n", "Async loop: 1.44\n" ] } ], "source": [ "import time\n", "import asyncio\n", "\n", "prompts = [f\"Tell me something interesting about {i}\" for i in range(400)]\n", "st = time.time()\n", "for pmt in prompts:\n", " _ = manifest_single_client.run(pmt, max_tokens=30)\n", "print(f\"For loop: {time.time() - st :.2f}\")\n", "\n", "print(\"Running with async single client\")\n", "st = time.time()\n", "_ = asyncio.run(manifest_single_client.arun_batch(prompts, max_tokens=30, chunk_size=-1))\n", "print(f\"Async loop: {time.time() - st :.2f}\")\n", "\n", "print(\"Running with async two clients but not chunking\")\n", "st = time.time()\n", "_ = asyncio.run(manifest.arun_batch(prompts, max_tokens=30, chunk_size=-1))\n", "print(f\"Async loop: {time.time() - st :.2f}\")\n", "\n", "print(\"Running with async two clients and chunk size\")\n", "st = time.time()\n", "_ = asyncio.run(manifest.arun_batch(prompts, max_tokens=30, chunk_size=20))\n", "print(f\"Async loop: {time.time() - st :.2f}\")" ] } ], "metadata": { "kernelspec": { "display_name": "manifest", "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.4" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "fddffe4ac3b9f00470127629076101c1b5f38ecb1e7358b567d19305425e9491" } } }, "nbformat": 4, "nbformat_minor": 2 }