From b2e7c9549b249f9826bce2daad97501ac414317d Mon Sep 17 00:00:00 2001 From: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Date: Mon, 22 Jan 2024 15:08:06 -0800 Subject: [PATCH 01/14] Upgrades cohere dependency, model list (#594) --- .../jupyter_ai_magics/embedding_providers.py | 10 +++++++++- packages/jupyter-ai-magics/pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/embedding_providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/embedding_providers.py index ca9fed4b4..9ef8720ba 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/embedding_providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/embedding_providers.py @@ -80,7 +80,15 @@ class OpenAIEmbeddingsProvider(BaseEmbeddingsProvider, OpenAIEmbeddings): class CohereEmbeddingsProvider(BaseEmbeddingsProvider, CohereEmbeddings): id = "cohere" name = "Cohere" - models = ["large", "multilingual-22-12", "small"] + models = [ + "embed-english-v2.0", + "embed-english-light-v2.0", + "embed-multilingual-v2.0", + "embed-english-v3.0", + "embed-english-light-v3.0", + "embed-multilingual-v3.0", + "embed-multilingual-light-v3.0", + ] model_id_key = "model" pypi_package_deps = ["cohere"] auth_strategy = EnvAuthStrategy(name="COHERE_API_KEY") diff --git a/packages/jupyter-ai-magics/pyproject.toml b/packages/jupyter-ai-magics/pyproject.toml index 0d7d73078..c57511791 100644 --- a/packages/jupyter-ai-magics/pyproject.toml +++ b/packages/jupyter-ai-magics/pyproject.toml @@ -37,7 +37,7 @@ test = ["coverage", "pytest", "pytest-asyncio", "pytest-cov"] all = [ "ai21", "anthropic~=0.3.0", - "cohere", + "cohere>4.40,<5", "gpt4all", "huggingface_hub", "ipywidgets", From 71227d9bb32ab91cdc5addfa3f01059567139797 Mon Sep 17 00:00:00 2001 From: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Date: Tue, 23 Jan 2024 11:08:25 -0800 Subject: [PATCH 02/14] Removes deprecated models, adds updated models for openai (#596) * Removes deprecated models, adds updated models for openai * ASCIIbetical sort --- examples/commands.ipynb | 726 ++++++++++++------ .../jupyter_ai_magics/aliases.py | 2 +- .../jupyter_ai_magics/providers.py | 22 +- .../{{cookiecutter.python_name}}/engine.py | 2 +- 4 files changed, 511 insertions(+), 241 deletions(-) diff --git a/examples/commands.ipynb b/examples/commands.ipynb index 6990df577..b640a7001 100644 --- a/examples/commands.ipynb +++ b/examples/commands.ipynb @@ -137,14 +137,17 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-tg1-large`, `bedrock:anthropic.claude-v1`, `bedrock:anthropic.claude-instant-v1`, `bedrock:anthropic.claude-v2`, `bedrock:ai21.j2-jumbo-instruct`, `bedrock:ai21.j2-grande-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", + "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy` |\n", + "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-4-32k-0613` |\n", + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -152,13 +155,16 @@ "| Name | Target |\n", "|------|--------|\n", "| `gpt2` | `huggingface_hub:gpt2` |\n", - "| `gpt3` | `openai:text-davinci-003` |\n", + "| `gpt3` | `openai:davinci-002` |\n", "| `chatgpt` | `openai-chat:gpt-3.5-turbo` |\n", - "| `gpt4` | `openai-chat:gpt-4` |\n" + "| `gpt4` | `openai-chat:gpt-4` |\n", + "| `ernie-bot` | `qianfan:ERNIE-Bot` |\n", + "| `ernie-bot-4` | `qianfan:ERNIE-Bot-4` |\n", + "| `titan` | `bedrock:amazon.titan-tg1-large` |\n" ], "text/plain": [ "ai21\n", - "Requires environment variable AI21_API_KEY (set)\n", + "Requires environment variable: AI21_API_KEY (set)\n", "* ai21:j1-large\n", "* ai21:j1-grande\n", "* ai21:j1-jumbo\n", @@ -170,65 +176,97 @@ "* ai21:j2-jumbo-instruct\n", "\n", "bedrock\n", - "* bedrock:amazon.titan-tg1-large\n", - "* bedrock:anthropic.claude-v1\n", - "* bedrock:anthropic.claude-instant-v1\n", - "* bedrock:anthropic.claude-v2\n", - "* bedrock:ai21.j2-jumbo-instruct\n", - "* bedrock:ai21.j2-grande-instruct\n", + "* bedrock:amazon.titan-text-express-v1\n", + "* bedrock:ai21.j2-ultra-v1\n", + "* bedrock:ai21.j2-mid-v1\n", + "* bedrock:cohere.command-light-text-v14\n", + "* bedrock:cohere.command-text-v14\n", + "* bedrock:meta.llama2-13b-chat-v1\n", + "* bedrock:meta.llama2-70b-chat-v1\n", + "\n", + "bedrock-chat\n", + "* bedrock-chat:anthropic.claude-v1\n", + "* bedrock-chat:anthropic.claude-v2\n", + "* bedrock-chat:anthropic.claude-v2:1\n", + "* bedrock-chat:anthropic.claude-instant-v1\n", "\n", "anthropic\n", - "Requires environment variable ANTHROPIC_API_KEY (set)\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", "* anthropic:claude-2\n", + "* anthropic:claude-2.0\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", + "* anthropic:claude-instant-v1.2\n", + "\n", + "anthropic-chat\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", + "* anthropic-chat:claude-v1\n", + "* anthropic-chat:claude-v1.0\n", + "* anthropic-chat:claude-v1.2\n", + "* anthropic-chat:claude-2\n", + "* anthropic-chat:claude-2.0\n", + "* anthropic-chat:claude-instant-v1\n", + "* anthropic-chat:claude-instant-v1.0\n", + "* anthropic-chat:claude-instant-v1.2\n", "\n", "azure-chat-openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* This provider does not define a list of models.\n", "\n", "cohere\n", - "Requires environment variable COHERE_API_KEY (set)\n", - "* cohere:medium\n", - "* cohere:xlarge\n", + "Requires environment variable: COHERE_API_KEY (set)\n", + "* cohere:command\n", + "* cohere:command-nightly\n", + "* cohere:command-light\n", + "* cohere:command-light-nightly\n", "\n", "gpt4all\n", "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "* gpt4all:mistral-7b-openorca.Q4_0\n", + "* gpt4all:mistral-7b-instruct-v0.1.Q4_0\n", + "* gpt4all:gpt4all-falcon-q4_0\n", + "* gpt4all:wizardlm-13b-v1.2.Q4_0\n", + "* gpt4all:nous-hermes-llama2-13b.Q4_0\n", + "* gpt4all:gpt4all-13b-snoozy-q4_0\n", + "* gpt4all:mpt-7b-chat-merges-q4_0\n", + "* gpt4all:orca-mini-3b-gguf2-q4_0\n", + "* gpt4all:starcoder-q4_0\n", + "* gpt4all:rift-coder-v0-7b-q4_0\n", + "* gpt4all:em_german_mistral_v01.Q4_0\n", "\n", "huggingface_hub\n", - "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", + "Requires environment variable: HUGGINGFACEHUB_API_TOKEN (set)\n", "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n", "openai-chat\n", - "Requires environment variable OPENAI_API_KEY (set)\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-1106\n", "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", - "* openai-chat:gpt-4-0314\n", "* openai-chat:gpt-4-0613\n", "* openai-chat:gpt-4-32k\n", - "* openai-chat:gpt-4-32k-0314\n", "* openai-chat:gpt-4-32k-0613\n", + "* openai-chat:gpt-4-1106-preview\n", + "\n", + "qianfan\n", + "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "* qianfan:ERNIE-Bot\n", + "* qianfan:ERNIE-Bot-4\n", "\n", "sagemaker-endpoint\n", "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", @@ -236,9 +274,12 @@ "\n", "Aliases and custom commands:\n", "gpt2 - huggingface_hub:gpt2\n", - "gpt3 - openai:text-davinci-003\n", + "gpt3 - openai:davinci-002\n", "chatgpt - openai-chat:gpt-3.5-turbo\n", - "gpt4 - openai-chat:gpt-4\n" + "gpt4 - openai-chat:gpt-4\n", + "ernie-bot - qianfan:ERNIE-Bot\n", + "ernie-bot-4 - qianfan:ERNIE-Bot-4\n", + "titan - bedrock:amazon.titan-tg1-large\n" ] }, "execution_count": 4, @@ -261,20 +302,14 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n" + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n" ], "text/plain": [ "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n" ] }, @@ -335,14 +370,17 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-tg1-large`, `bedrock:anthropic.claude-v1`, `bedrock:anthropic.claude-instant-v1`, `bedrock:anthropic.claude-v2`, `bedrock:ai21.j2-jumbo-instruct`, `bedrock:ai21.j2-grande-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", + "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy` |\n", + "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-4-32k-0613` |\n", + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -350,14 +388,17 @@ "| Name | Target |\n", "|------|--------|\n", "| `gpt2` | `huggingface_hub:gpt2` |\n", - "| `gpt3` | `openai:text-davinci-003` |\n", + "| `gpt3` | `openai:davinci-002` |\n", "| `chatgpt` | `openai-chat:gpt-3.5-turbo` |\n", "| `gpt4` | `openai-chat:gpt-4` |\n", + "| `ernie-bot` | `qianfan:ERNIE-Bot` |\n", + "| `ernie-bot-4` | `qianfan:ERNIE-Bot-4` |\n", + "| `titan` | `bedrock:amazon.titan-tg1-large` |\n", "| `mychat` | `openai-chat:gpt-4` |\n" ], "text/plain": [ "ai21\n", - "Requires environment variable AI21_API_KEY (set)\n", + "Requires environment variable: AI21_API_KEY (set)\n", "* ai21:j1-large\n", "* ai21:j1-grande\n", "* ai21:j1-jumbo\n", @@ -369,65 +410,97 @@ "* ai21:j2-jumbo-instruct\n", "\n", "bedrock\n", - "* bedrock:amazon.titan-tg1-large\n", - "* bedrock:anthropic.claude-v1\n", - "* bedrock:anthropic.claude-instant-v1\n", - "* bedrock:anthropic.claude-v2\n", - "* bedrock:ai21.j2-jumbo-instruct\n", - "* bedrock:ai21.j2-grande-instruct\n", + "* bedrock:amazon.titan-text-express-v1\n", + "* bedrock:ai21.j2-ultra-v1\n", + "* bedrock:ai21.j2-mid-v1\n", + "* bedrock:cohere.command-light-text-v14\n", + "* bedrock:cohere.command-text-v14\n", + "* bedrock:meta.llama2-13b-chat-v1\n", + "* bedrock:meta.llama2-70b-chat-v1\n", + "\n", + "bedrock-chat\n", + "* bedrock-chat:anthropic.claude-v1\n", + "* bedrock-chat:anthropic.claude-v2\n", + "* bedrock-chat:anthropic.claude-v2:1\n", + "* bedrock-chat:anthropic.claude-instant-v1\n", "\n", "anthropic\n", - "Requires environment variable ANTHROPIC_API_KEY (set)\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", "* anthropic:claude-2\n", + "* anthropic:claude-2.0\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", + "* anthropic:claude-instant-v1.2\n", + "\n", + "anthropic-chat\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", + "* anthropic-chat:claude-v1\n", + "* anthropic-chat:claude-v1.0\n", + "* anthropic-chat:claude-v1.2\n", + "* anthropic-chat:claude-2\n", + "* anthropic-chat:claude-2.0\n", + "* anthropic-chat:claude-instant-v1\n", + "* anthropic-chat:claude-instant-v1.0\n", + "* anthropic-chat:claude-instant-v1.2\n", "\n", "azure-chat-openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* This provider does not define a list of models.\n", "\n", "cohere\n", - "Requires environment variable COHERE_API_KEY (set)\n", - "* cohere:medium\n", - "* cohere:xlarge\n", + "Requires environment variable: COHERE_API_KEY (set)\n", + "* cohere:command\n", + "* cohere:command-nightly\n", + "* cohere:command-light\n", + "* cohere:command-light-nightly\n", "\n", "gpt4all\n", "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "* gpt4all:mistral-7b-openorca.Q4_0\n", + "* gpt4all:mistral-7b-instruct-v0.1.Q4_0\n", + "* gpt4all:gpt4all-falcon-q4_0\n", + "* gpt4all:wizardlm-13b-v1.2.Q4_0\n", + "* gpt4all:nous-hermes-llama2-13b.Q4_0\n", + "* gpt4all:gpt4all-13b-snoozy-q4_0\n", + "* gpt4all:mpt-7b-chat-merges-q4_0\n", + "* gpt4all:orca-mini-3b-gguf2-q4_0\n", + "* gpt4all:starcoder-q4_0\n", + "* gpt4all:rift-coder-v0-7b-q4_0\n", + "* gpt4all:em_german_mistral_v01.Q4_0\n", "\n", "huggingface_hub\n", - "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", + "Requires environment variable: HUGGINGFACEHUB_API_TOKEN (set)\n", "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n", "openai-chat\n", - "Requires environment variable OPENAI_API_KEY (set)\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-1106\n", "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", - "* openai-chat:gpt-4-0314\n", "* openai-chat:gpt-4-0613\n", "* openai-chat:gpt-4-32k\n", - "* openai-chat:gpt-4-32k-0314\n", "* openai-chat:gpt-4-32k-0613\n", + "* openai-chat:gpt-4-1106-preview\n", + "\n", + "qianfan\n", + "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "* qianfan:ERNIE-Bot\n", + "* qianfan:ERNIE-Bot-4\n", "\n", "sagemaker-endpoint\n", "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", @@ -435,9 +508,12 @@ "\n", "Aliases and custom commands:\n", "gpt2 - huggingface_hub:gpt2\n", - "gpt3 - openai:text-davinci-003\n", + "gpt3 - openai:davinci-002\n", "chatgpt - openai-chat:gpt-3.5-turbo\n", "gpt4 - openai-chat:gpt-4\n", + "ernie-bot - qianfan:ERNIE-Bot\n", + "ernie-bot-4 - qianfan:ERNIE-Bot-4\n", + "titan - bedrock:amazon.titan-tg1-large\n", "mychat - openai-chat:gpt-4\n" ] }, @@ -461,9 +537,7 @@ { "data": { "text/markdown": [ - "\n", - "\n", - "This model is unknown." + "As an AI developed by OpenAI, I'm sorry but I can't provide the information you're asking for because your instruction lacks specific details. Could you please provide more context or details?" ], "text/plain": [ "" @@ -473,8 +547,8 @@ "metadata": { "text/markdown": { "jupyter_ai": { - "model_id": "text-davinci-003", - "provider_id": "openai" + "model_id": "gpt-4", + "provider_id": "openai-chat" } } }, @@ -482,7 +556,7 @@ } ], "source": [ - "%%ai gpt3\n", + "%%ai gpt4\n", "What model is this?" ] }, @@ -507,7 +581,7 @@ } ], "source": [ - "%ai update mychat openai:text-davinci-003" + "%ai update mychat openai:babbage-002" ] }, { @@ -521,9 +595,27 @@ { "data": { "text/markdown": [ + " This means no HTML, tables, images or other formatting. If you generate output, you must use Markdown. See the Markdown Syntax for more information.\n", + "\n", + "What do you mean by a programming language?\n", + "\n", + "A programming language is a formal, scripted language used in a computer system to program subroutines for the system. Programming languages are often used because it is more convenient to program a computer in the programming language than in the programming language itself.\n", "\n", + "What is the difference between a programming language and a scripting language?\n", "\n", - "This model is not specified." + "A scripting language is a programming language designed to enable a user to create applications that are specific to a particular application, such as a web browser or word processing application. … Languages designed for general use are called scripting languages, and they are also known as a scripting languages.\n", + "\n", + "Can you use Python to program?\n", + "\n", + "Python is a high-level programming language. … Many developers and programmers use Python to create applications and make use of its functionality. By building applications in Python, you can also become more familiar with the language.\n", + "\n", + "What are the 2 types of programming languages?\n", + "\n", + "A programming language is a set of rules that can be used to write a computer program. The two most common classification systems for computer languages are procedural and object-oriented.\n", + "\n", + "What is the difference between Python and C?\n", + "\n", + "C is" ], "text/plain": [ "" @@ -533,7 +625,7 @@ "metadata": { "text/markdown": { "jupyter_ai": { - "model_id": "text-davinci-003", + "model_id": "babbage-002", "provider_id": "openai" } } @@ -543,7 +635,7 @@ ], "source": [ "%%ai mychat\n", - "What model is this?" + "Tell me about mathematical symbols" ] }, { @@ -560,26 +652,35 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301` |\n", - "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", + "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", + "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", "\n", "| Name | Target |\n", "|------|--------|\n", "| `gpt2` | `huggingface_hub:gpt2` |\n", - "| `gpt3` | `openai:text-davinci-003` |\n", + "| `gpt3` | `openai:davinci-002` |\n", "| `chatgpt` | `openai-chat:gpt-3.5-turbo` |\n", "| `gpt4` | `openai-chat:gpt-4` |\n", - "| `mychat` | `openai:text-davinci-003` |\n" + "| `ernie-bot` | `qianfan:ERNIE-Bot` |\n", + "| `ernie-bot-4` | `qianfan:ERNIE-Bot-4` |\n", + "| `titan` | `bedrock:amazon.titan-tg1-large` |\n", + "| `mychat` | `openai:babbage-002` |\n" ], "text/plain": [ "ai21\n", - "Requires environment variable AI21_API_KEY (set)\n", + "Requires environment variable: AI21_API_KEY (set)\n", "* ai21:j1-large\n", "* ai21:j1-grande\n", "* ai21:j1-jumbo\n", @@ -590,54 +691,112 @@ "* ai21:j2-grande-instruct\n", "* ai21:j2-jumbo-instruct\n", "\n", + "bedrock\n", + "* bedrock:amazon.titan-text-express-v1\n", + "* bedrock:ai21.j2-ultra-v1\n", + "* bedrock:ai21.j2-mid-v1\n", + "* bedrock:cohere.command-light-text-v14\n", + "* bedrock:cohere.command-text-v14\n", + "* bedrock:meta.llama2-13b-chat-v1\n", + "* bedrock:meta.llama2-70b-chat-v1\n", + "\n", + "bedrock-chat\n", + "* bedrock-chat:anthropic.claude-v1\n", + "* bedrock-chat:anthropic.claude-v2\n", + "* bedrock-chat:anthropic.claude-v2:1\n", + "* bedrock-chat:anthropic.claude-instant-v1\n", + "\n", "anthropic\n", - "Requires environment variable ANTHROPIC_API_KEY (set)\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", + "* anthropic:claude-2\n", + "* anthropic:claude-2.0\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", + "* anthropic:claude-instant-v1.2\n", + "\n", + "anthropic-chat\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", + "* anthropic-chat:claude-v1\n", + "* anthropic-chat:claude-v1.0\n", + "* anthropic-chat:claude-v1.2\n", + "* anthropic-chat:claude-2\n", + "* anthropic-chat:claude-2.0\n", + "* anthropic-chat:claude-instant-v1\n", + "* anthropic-chat:claude-instant-v1.0\n", + "* anthropic-chat:claude-instant-v1.2\n", + "\n", + "azure-chat-openai\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* This provider does not define a list of models.\n", "\n", "cohere\n", - "Requires environment variable COHERE_API_KEY (set)\n", - "* cohere:medium\n", - "* cohere:xlarge\n", + "Requires environment variable: COHERE_API_KEY (set)\n", + "* cohere:command\n", + "* cohere:command-nightly\n", + "* cohere:command-light\n", + "* cohere:command-light-nightly\n", + "\n", + "gpt4all\n", + "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", + "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", + "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "* gpt4all:mistral-7b-openorca.Q4_0\n", + "* gpt4all:mistral-7b-instruct-v0.1.Q4_0\n", + "* gpt4all:gpt4all-falcon-q4_0\n", + "* gpt4all:wizardlm-13b-v1.2.Q4_0\n", + "* gpt4all:nous-hermes-llama2-13b.Q4_0\n", + "* gpt4all:gpt4all-13b-snoozy-q4_0\n", + "* gpt4all:mpt-7b-chat-merges-q4_0\n", + "* gpt4all:orca-mini-3b-gguf2-q4_0\n", + "* gpt4all:starcoder-q4_0\n", + "* gpt4all:rift-coder-v0-7b-q4_0\n", + "* gpt4all:em_german_mistral_v01.Q4_0\n", "\n", "huggingface_hub\n", - "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", - "* See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", + "Requires environment variable: HUGGINGFACEHUB_API_TOKEN (set)\n", + "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n", "openai-chat\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai-chat:gpt-4\n", - "* openai-chat:gpt-4-0314\n", - "* openai-chat:gpt-4-32k\n", - "* openai-chat:gpt-4-32k-0314\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-16k-0613\n", + "* openai-chat:gpt-4\n", + "* openai-chat:gpt-4-0613\n", + "* openai-chat:gpt-4-32k\n", + "* openai-chat:gpt-4-32k-0613\n", + "* openai-chat:gpt-4-1106-preview\n", + "\n", + "qianfan\n", + "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "* qianfan:ERNIE-Bot\n", + "* qianfan:ERNIE-Bot-4\n", "\n", "sagemaker-endpoint\n", - "* Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", + "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", "\n", "\n", "Aliases and custom commands:\n", "gpt2 - huggingface_hub:gpt2\n", - "gpt3 - openai:text-davinci-003\n", + "gpt3 - openai:davinci-002\n", "chatgpt - openai-chat:gpt-3.5-turbo\n", "gpt4 - openai-chat:gpt-4\n", - "mychat - openai:text-davinci-003\n" + "ernie-bot - qianfan:ERNIE-Bot\n", + "ernie-bot-4 - qianfan:ERNIE-Bot-4\n", + "titan - bedrock:amazon.titan-tg1-large\n", + "mychat - openai:babbage-002\n" ] }, "execution_count": 11, @@ -689,25 +848,34 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301` |\n", - "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", + "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", + "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", "\n", "| Name | Target |\n", "|------|--------|\n", "| `gpt2` | `huggingface_hub:gpt2` |\n", - "| `gpt3` | `openai:text-davinci-003` |\n", + "| `gpt3` | `openai:davinci-002` |\n", "| `chatgpt` | `openai-chat:gpt-3.5-turbo` |\n", - "| `gpt4` | `openai-chat:gpt-4` |\n" + "| `gpt4` | `openai-chat:gpt-4` |\n", + "| `ernie-bot` | `qianfan:ERNIE-Bot` |\n", + "| `ernie-bot-4` | `qianfan:ERNIE-Bot-4` |\n", + "| `titan` | `bedrock:amazon.titan-tg1-large` |\n" ], "text/plain": [ "ai21\n", - "Requires environment variable AI21_API_KEY (set)\n", + "Requires environment variable: AI21_API_KEY (set)\n", "* ai21:j1-large\n", "* ai21:j1-grande\n", "* ai21:j1-jumbo\n", @@ -718,53 +886,111 @@ "* ai21:j2-grande-instruct\n", "* ai21:j2-jumbo-instruct\n", "\n", + "bedrock\n", + "* bedrock:amazon.titan-text-express-v1\n", + "* bedrock:ai21.j2-ultra-v1\n", + "* bedrock:ai21.j2-mid-v1\n", + "* bedrock:cohere.command-light-text-v14\n", + "* bedrock:cohere.command-text-v14\n", + "* bedrock:meta.llama2-13b-chat-v1\n", + "* bedrock:meta.llama2-70b-chat-v1\n", + "\n", + "bedrock-chat\n", + "* bedrock-chat:anthropic.claude-v1\n", + "* bedrock-chat:anthropic.claude-v2\n", + "* bedrock-chat:anthropic.claude-v2:1\n", + "* bedrock-chat:anthropic.claude-instant-v1\n", + "\n", "anthropic\n", - "Requires environment variable ANTHROPIC_API_KEY (set)\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", + "* anthropic:claude-2\n", + "* anthropic:claude-2.0\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", + "* anthropic:claude-instant-v1.2\n", + "\n", + "anthropic-chat\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", + "* anthropic-chat:claude-v1\n", + "* anthropic-chat:claude-v1.0\n", + "* anthropic-chat:claude-v1.2\n", + "* anthropic-chat:claude-2\n", + "* anthropic-chat:claude-2.0\n", + "* anthropic-chat:claude-instant-v1\n", + "* anthropic-chat:claude-instant-v1.0\n", + "* anthropic-chat:claude-instant-v1.2\n", + "\n", + "azure-chat-openai\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* This provider does not define a list of models.\n", "\n", "cohere\n", - "Requires environment variable COHERE_API_KEY (set)\n", - "* cohere:medium\n", - "* cohere:xlarge\n", + "Requires environment variable: COHERE_API_KEY (set)\n", + "* cohere:command\n", + "* cohere:command-nightly\n", + "* cohere:command-light\n", + "* cohere:command-light-nightly\n", + "\n", + "gpt4all\n", + "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", + "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", + "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "* gpt4all:mistral-7b-openorca.Q4_0\n", + "* gpt4all:mistral-7b-instruct-v0.1.Q4_0\n", + "* gpt4all:gpt4all-falcon-q4_0\n", + "* gpt4all:wizardlm-13b-v1.2.Q4_0\n", + "* gpt4all:nous-hermes-llama2-13b.Q4_0\n", + "* gpt4all:gpt4all-13b-snoozy-q4_0\n", + "* gpt4all:mpt-7b-chat-merges-q4_0\n", + "* gpt4all:orca-mini-3b-gguf2-q4_0\n", + "* gpt4all:starcoder-q4_0\n", + "* gpt4all:rift-coder-v0-7b-q4_0\n", + "* gpt4all:em_german_mistral_v01.Q4_0\n", "\n", "huggingface_hub\n", - "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", - "* See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", + "Requires environment variable: HUGGINGFACEHUB_API_TOKEN (set)\n", + "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n", "openai-chat\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai-chat:gpt-4\n", - "* openai-chat:gpt-4-0314\n", - "* openai-chat:gpt-4-32k\n", - "* openai-chat:gpt-4-32k-0314\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-16k-0613\n", + "* openai-chat:gpt-4\n", + "* openai-chat:gpt-4-0613\n", + "* openai-chat:gpt-4-32k\n", + "* openai-chat:gpt-4-32k-0613\n", + "* openai-chat:gpt-4-1106-preview\n", + "\n", + "qianfan\n", + "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "* qianfan:ERNIE-Bot\n", + "* qianfan:ERNIE-Bot-4\n", "\n", "sagemaker-endpoint\n", - "* Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", + "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", "\n", "\n", "Aliases and custom commands:\n", "gpt2 - huggingface_hub:gpt2\n", - "gpt3 - openai:text-davinci-003\n", + "gpt3 - openai:davinci-002\n", "chatgpt - openai-chat:gpt-3.5-turbo\n", - "gpt4 - openai-chat:gpt-4\n" + "gpt4 - openai-chat:gpt-4\n", + "ernie-bot - qianfan:ERNIE-Bot\n", + "ernie-bot-4 - qianfan:ERNIE-Bot-4\n", + "titan - bedrock:amazon.titan-tg1-large\n" ] }, "execution_count": 13, @@ -797,12 +1023,12 @@ "source": [ "from langchain.chains import LLMChain\n", "from langchain.prompts import PromptTemplate\n", - "from langchain.llms import OpenAI\n", + "from langchain_community.llms import Cohere\n", "\n", - "llm = OpenAI(temperature=0.9)\n", + "llm = Cohere(model=\"command\", max_tokens=256, temperature=0.75)\n", "prompt = PromptTemplate(\n", " input_variables=[\"product\"],\n", - " template=\"What is a good name for a company that makes {product}?\",\n", + " template=\"What is a good name for a company that makes {product}? Provide only one name. Do not provide any other text than the name. Do not provide other info\",\n", ")\n", "chain = LLMChain(llm=llm, prompt=prompt)" ] @@ -810,19 +1036,6 @@ { "cell_type": "code", "execution_count": 15, - "id": "29d5239f-7601-405e-b059-4e881ebf7ab1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from langchain.chains import LLMChain\n", - "chain = LLMChain(llm=llm, prompt=prompt)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, "id": "43e7a77c-93af-4ef7-a104-f932c9f54183", "metadata": { "tags": [] @@ -832,20 +1045,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "\n", - "Bright Toes Socks.\n" + "{'product': 'colorful socks', 'text': ' Chroma Sox'}\n" ] } ], "source": [ "# Run the chain only specifying the input variable.\n", - "print(chain.run(\"colorful socks\"))" + "print(chain.invoke(\"colorful socks\"))" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "9badc567-9720-4e33-ab4a-54fda5129f36", "metadata": { "tags": [] @@ -860,7 +1071,7 @@ "Registered new alias `company`" ] }, - "execution_count": 17, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -871,7 +1082,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "92b75d71-8844-4872-b424-b0023706abb1", "metadata": { "tags": [] @@ -883,26 +1094,35 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301` |\n", - "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", + "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", + "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", + "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", "\n", "| Name | Target |\n", "|------|--------|\n", "| `gpt2` | `huggingface_hub:gpt2` |\n", - "| `gpt3` | `openai:text-davinci-003` |\n", + "| `gpt3` | `openai:davinci-002` |\n", "| `chatgpt` | `openai-chat:gpt-3.5-turbo` |\n", "| `gpt4` | `openai-chat:gpt-4` |\n", + "| `ernie-bot` | `qianfan:ERNIE-Bot` |\n", + "| `ernie-bot-4` | `qianfan:ERNIE-Bot-4` |\n", + "| `titan` | `bedrock:amazon.titan-tg1-large` |\n", "| `company` | *custom chain* |\n" ], "text/plain": [ "ai21\n", - "Requires environment variable AI21_API_KEY (set)\n", + "Requires environment variable: AI21_API_KEY (set)\n", "* ai21:j1-large\n", "* ai21:j1-grande\n", "* ai21:j1-jumbo\n", @@ -913,57 +1133,115 @@ "* ai21:j2-grande-instruct\n", "* ai21:j2-jumbo-instruct\n", "\n", + "bedrock\n", + "* bedrock:amazon.titan-text-express-v1\n", + "* bedrock:ai21.j2-ultra-v1\n", + "* bedrock:ai21.j2-mid-v1\n", + "* bedrock:cohere.command-light-text-v14\n", + "* bedrock:cohere.command-text-v14\n", + "* bedrock:meta.llama2-13b-chat-v1\n", + "* bedrock:meta.llama2-70b-chat-v1\n", + "\n", + "bedrock-chat\n", + "* bedrock-chat:anthropic.claude-v1\n", + "* bedrock-chat:anthropic.claude-v2\n", + "* bedrock-chat:anthropic.claude-v2:1\n", + "* bedrock-chat:anthropic.claude-instant-v1\n", + "\n", "anthropic\n", - "Requires environment variable ANTHROPIC_API_KEY (set)\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", + "* anthropic:claude-2\n", + "* anthropic:claude-2.0\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", + "* anthropic:claude-instant-v1.2\n", + "\n", + "anthropic-chat\n", + "Requires environment variable: ANTHROPIC_API_KEY (set)\n", + "* anthropic-chat:claude-v1\n", + "* anthropic-chat:claude-v1.0\n", + "* anthropic-chat:claude-v1.2\n", + "* anthropic-chat:claude-2\n", + "* anthropic-chat:claude-2.0\n", + "* anthropic-chat:claude-instant-v1\n", + "* anthropic-chat:claude-instant-v1.0\n", + "* anthropic-chat:claude-instant-v1.2\n", + "\n", + "azure-chat-openai\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* This provider does not define a list of models.\n", "\n", "cohere\n", - "Requires environment variable COHERE_API_KEY (set)\n", - "* cohere:medium\n", - "* cohere:xlarge\n", + "Requires environment variable: COHERE_API_KEY (set)\n", + "* cohere:command\n", + "* cohere:command-nightly\n", + "* cohere:command-light\n", + "* cohere:command-light-nightly\n", + "\n", + "gpt4all\n", + "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", + "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", + "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "* gpt4all:mistral-7b-openorca.Q4_0\n", + "* gpt4all:mistral-7b-instruct-v0.1.Q4_0\n", + "* gpt4all:gpt4all-falcon-q4_0\n", + "* gpt4all:wizardlm-13b-v1.2.Q4_0\n", + "* gpt4all:nous-hermes-llama2-13b.Q4_0\n", + "* gpt4all:gpt4all-13b-snoozy-q4_0\n", + "* gpt4all:mpt-7b-chat-merges-q4_0\n", + "* gpt4all:orca-mini-3b-gguf2-q4_0\n", + "* gpt4all:starcoder-q4_0\n", + "* gpt4all:rift-coder-v0-7b-q4_0\n", + "* gpt4all:em_german_mistral_v01.Q4_0\n", "\n", "huggingface_hub\n", - "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", - "* See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", + "Requires environment variable: HUGGINGFACEHUB_API_TOKEN (set)\n", + "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai:text-davinci-003\n", - "* openai:text-davinci-002\n", - "* openai:text-curie-001\n", - "* openai:text-babbage-001\n", - "* openai:text-ada-001\n", - "* openai:davinci\n", - "* openai:curie\n", - "* openai:babbage\n", - "* openai:ada\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", + "* openai:babbage-002\n", + "* openai:davinci-002\n", + "* openai:gpt-3.5-turbo-instruct\n", "\n", "openai-chat\n", - "Requires environment variable OPENAI_API_KEY (set)\n", - "* openai-chat:gpt-4\n", - "* openai-chat:gpt-4-0314\n", - "* openai-chat:gpt-4-32k\n", - "* openai-chat:gpt-4-32k-0314\n", + "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-16k-0613\n", + "* openai-chat:gpt-4\n", + "* openai-chat:gpt-4-0613\n", + "* openai-chat:gpt-4-32k\n", + "* openai-chat:gpt-4-32k-0613\n", + "* openai-chat:gpt-4-1106-preview\n", + "\n", + "qianfan\n", + "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "* qianfan:ERNIE-Bot\n", + "* qianfan:ERNIE-Bot-4\n", "\n", "sagemaker-endpoint\n", - "* Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", + "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", "\n", "\n", "Aliases and custom commands:\n", "gpt2 - huggingface_hub:gpt2\n", - "gpt3 - openai:text-davinci-003\n", + "gpt3 - openai:davinci-002\n", "chatgpt - openai-chat:gpt-3.5-turbo\n", "gpt4 - openai-chat:gpt-4\n", + "ernie-bot - qianfan:ERNIE-Bot\n", + "ernie-bot-4 - qianfan:ERNIE-Bot-4\n", + "titan - bedrock:amazon.titan-tg1-large\n", "company - custom chain\n" ] }, - "execution_count": 18, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -974,22 +1252,28 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "cfef0fee-a7c6-49e4-8d90-9aa12f7b91d1", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/miniconda3/envs/jupyter-ai-jl4/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `run` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", + " warn_deprecated(\n" + ] + }, { "data": { "text/markdown": [ - "\n", - "\n", - "**Brightsocks**" + " Chroma Socks " ], "text/plain": [ "" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": { "text/markdown": { "jupyter_ai": { @@ -1007,19 +1291,17 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "06c698e7-e2cf-41b5-88de-2be4d3b60eba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "\n", - "\n", - "FunkySox." + " Chroma Socks " ] }, - "execution_count": 20, + "execution_count": 19, "metadata": { "jupyter_ai": { "custom_chain_id": "company" diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/aliases.py b/packages/jupyter-ai-magics/jupyter_ai_magics/aliases.py index 96cac4efe..f34826428 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/aliases.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/aliases.py @@ -1,6 +1,6 @@ MODEL_ID_ALIASES = { "gpt2": "huggingface_hub:gpt2", - "gpt3": "openai:text-davinci-003", + "gpt3": "openai:davinci-002", "chatgpt": "openai-chat:gpt-3.5-turbo", "gpt4": "openai-chat:gpt-4", "ernie-bot": "qianfan:ERNIE-Bot", diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 21e766c3b..5762f2560 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -536,18 +536,7 @@ async def _acall(self, *args, **kwargs) -> Coroutine[Any, Any, str]: class OpenAIProvider(BaseProvider, OpenAI): id = "openai" name = "OpenAI" - models = [ - "text-davinci-003", - "text-davinci-002", - "text-curie-001", - "text-babbage-001", - "text-ada-001", - "gpt-3.5-turbo-instruct", - "davinci", - "curie", - "babbage", - "ada", - ] + models = ["babbage-002", "davinci-002", "gpt-3.5-turbo-instruct"] model_id_key = "model_name" pypi_package_deps = ["openai"] auth_strategy = EnvAuthStrategy(name="OPENAI_API_KEY") @@ -570,15 +559,14 @@ class ChatOpenAIProvider(BaseProvider, ChatOpenAI): name = "OpenAI" models = [ "gpt-3.5-turbo", + "gpt-3.5-turbo-0301", # Deprecated as of 2024-06-13 + "gpt-3.5-turbo-0613", # Deprecated as of 2024-06-13 + "gpt-3.5-turbo-1106", "gpt-3.5-turbo-16k", - "gpt-3.5-turbo-0301", - "gpt-3.5-turbo-0613", - "gpt-3.5-turbo-16k-0613", + "gpt-3.5-turbo-16k-0613", # Deprecated as of 2024-06-13 "gpt-4", - "gpt-4-0314", "gpt-4-0613", "gpt-4-32k", - "gpt-4-32k-0314", "gpt-4-32k-0613", "gpt-4-1106-preview", ] diff --git a/packages/jupyter-ai-module-cookiecutter/{{cookiecutter.labextension_name}}/{{cookiecutter.python_name}}/engine.py b/packages/jupyter-ai-module-cookiecutter/{{cookiecutter.labextension_name}}/{{cookiecutter.python_name}}/engine.py index c32e86148..63066ef07 100644 --- a/packages/jupyter-ai-module-cookiecutter/{{cookiecutter.labextension_name}}/{{cookiecutter.python_name}}/engine.py +++ b/packages/jupyter-ai-module-cookiecutter/{{cookiecutter.labextension_name}}/{{cookiecutter.python_name}}/engine.py @@ -29,7 +29,7 @@ async def execute( # prompt = task.prompt_template.format(**prompt_variables) # openai.api_key = self.api_key # response = openai.Completion.create( - # model="text-davinci-003", + # model="davinci-002", # prompt=prompt, # ... # ) From ca03e2c9a846344c379d50ccbe8323f7e0c7b1ed Mon Sep 17 00:00:00 2001 From: Garson R Chow <58149459+garsonbyte@users.noreply.github.com> Date: Tue, 23 Jan 2024 18:20:25 -0500 Subject: [PATCH 03/14] Reflect theme changes without a refresh (#575) * Reflect theme changes without a refresh By leveraging `IThemeManager.themeChanged`, we can listen on theme change signals and rebuild the theme object in response. This allows CSS variable changes to reflect in the MUI theme without having to refresh the page. * update yarn.lock * pass themeManager as a prop instead of using top-level scope * remove theme hack added in #192 --------- Co-authored-by: gchow Co-authored-by: David L. Qiu --- packages/jupyter-ai/src/components/chat.tsx | 4 +++- .../src/components/jl-theme-provider.tsx | 6 +++++- packages/jupyter-ai/src/index.ts | 16 +++++++++++----- packages/jupyter-ai/src/theme-provider.ts | 8 +------- packages/jupyter-ai/src/widgets/chat-error.tsx | 9 ++++++--- packages/jupyter-ai/src/widgets/chat-sidebar.tsx | 5 ++++- yarn.lock | 4 ++-- 7 files changed, 32 insertions(+), 20 deletions(-) diff --git a/packages/jupyter-ai/src/components/chat.tsx b/packages/jupyter-ai/src/components/chat.tsx index ded339c70..53ba45f1a 100644 --- a/packages/jupyter-ai/src/components/chat.tsx +++ b/packages/jupyter-ai/src/components/chat.tsx @@ -4,6 +4,7 @@ import { Button, IconButton, Stack } from '@mui/material'; import SettingsIcon from '@mui/icons-material/Settings'; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import type { Awareness } from 'y-protocols/awareness'; +import type { IThemeManager } from '@jupyterlab/apputils'; import { JlThemeProvider } from './jl-theme-provider'; import { ChatMessages } from './chat-messages'; @@ -178,6 +179,7 @@ export type ChatProps = { selectionWatcher: SelectionWatcher; chatHandler: ChatHandler; globalAwareness: Awareness | null; + themeManager: IThemeManager | null; chatView?: ChatView; }; @@ -190,7 +192,7 @@ export function Chat(props: ChatProps): JSX.Element { const [view, setView] = useState(props.chatView || ChatView.Chat); return ( - + (createTheme()); @@ -12,7 +14,9 @@ export function JlThemeProvider(props: { async function setJlTheme() { setTheme(await getJupyterLabTheme()); } + setJlTheme(); + props.themeManager?.themeChanged.connect(setJlTheme); }, []); return {props.children}; diff --git a/packages/jupyter-ai/src/index.ts b/packages/jupyter-ai/src/index.ts index f6832f878..807629eae 100644 --- a/packages/jupyter-ai/src/index.ts +++ b/packages/jupyter-ai/src/index.ts @@ -4,7 +4,11 @@ import { ILayoutRestorer } from '@jupyterlab/application'; -import { IWidgetTracker, ReactWidget } from '@jupyterlab/apputils'; +import { + IWidgetTracker, + ReactWidget, + IThemeManager +} from '@jupyterlab/apputils'; import { IDocumentWidget } from '@jupyterlab/docregistry'; import { IGlobalAwareness } from '@jupyter/collaboration'; import type { Awareness } from 'y-protocols/awareness'; @@ -23,11 +27,12 @@ export type DocumentTracker = IWidgetTracker; const plugin: JupyterFrontEndPlugin = { id: 'jupyter_ai:plugin', autoStart: true, - optional: [IGlobalAwareness, ILayoutRestorer], + optional: [IGlobalAwareness, ILayoutRestorer, IThemeManager], activate: async ( app: JupyterFrontEnd, globalAwareness: Awareness | null, - restorer: ILayoutRestorer | null + restorer: ILayoutRestorer | null, + themeManager: IThemeManager | null ) => { /** * Initialize selection watcher singleton @@ -45,10 +50,11 @@ const plugin: JupyterFrontEndPlugin = { chatWidget = buildChatSidebar( selectionWatcher, chatHandler, - globalAwareness + globalAwareness, + themeManager ); } catch (e) { - chatWidget = buildErrorWidget(); + chatWidget = buildErrorWidget(themeManager); } /** diff --git a/packages/jupyter-ai/src/theme-provider.ts b/packages/jupyter-ai/src/theme-provider.ts index 405f08198..02db8d369 100644 --- a/packages/jupyter-ai/src/theme-provider.ts +++ b/packages/jupyter-ai/src/theme-provider.ts @@ -13,7 +13,6 @@ export async function pollUntilReady(): Promise { export async function getJupyterLabTheme(): Promise { await pollUntilReady(); const light = document.body.getAttribute('data-jp-theme-light'); - const primaryFontColor = getCSSVariable('--jp-ui-font-color1'); return createTheme({ spacing: 4, components: { @@ -113,7 +112,7 @@ export async function getJupyterLabTheme(): Promise { dark: getCSSVariable('--jp-success-color0') }, text: { - primary: primaryFontColor, + primary: getCSSVariable('--jp-ui-font-color1'), secondary: getCSSVariable('--jp-ui-font-color2'), disabled: getCSSVariable('--jp-ui-font-color3') } @@ -127,11 +126,6 @@ export async function getJupyterLabTheme(): Promise { htmlFontSize: 16, button: { textTransform: 'capitalize' - }, - // this is undocumented as of the time of writing. - // https://stackoverflow.com/a/62950304/12548458 - allVariants: { - color: primaryFontColor } } }); diff --git a/packages/jupyter-ai/src/widgets/chat-error.tsx b/packages/jupyter-ai/src/widgets/chat-error.tsx index 3b8f8ef95..8ae9cbb44 100644 --- a/packages/jupyter-ai/src/widgets/chat-error.tsx +++ b/packages/jupyter-ai/src/widgets/chat-error.tsx @@ -1,13 +1,16 @@ import React from 'react'; import { ReactWidget } from '@jupyterlab/apputils'; +import type { IThemeManager } from '@jupyterlab/apputils'; +import { Alert, Box } from '@mui/material'; import { chatIcon } from '../icons'; -import { Alert, Box } from '@mui/material'; import { JlThemeProvider } from '../components/jl-theme-provider'; -export function buildErrorWidget(): ReactWidget { +export function buildErrorWidget( + themeManager: IThemeManager | null +): ReactWidget { const ErrorWidget = ReactWidget.create( - + ); ChatWidget.id = 'jupyter-ai::chat'; diff --git a/yarn.lock b/yarn.lock index ddc039416..0df949cb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14822,11 +14822,11 @@ __metadata: "typescript@patch:typescript@^3 || ^4#~builtin, typescript@patch:typescript@~4.9.0#~builtin": version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=289587" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d + checksum: 1f8f3b6aaea19f0f67cba79057674ba580438a7db55057eb89cc06950483c5d632115c14077f6663ea76fd09fce3c190e6414bb98582ec80aa5a4eaf345d5b68 languageName: node linkType: hard From cde6d35dc7e522b25e5c9693fe657b71ea6603a5 Mon Sep 17 00:00:00 2001 From: SALES <5235127+adriens@users.noreply.github.com> Date: Thu, 25 Jan 2024 07:07:58 +1100 Subject: [PATCH 04/14] Add Kaggle to supported platforms (#577) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5943bb23e..94e7af17b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ and powerful way to explore generative AI models in notebooks and improve your p in JupyterLab and the Jupyter Notebook. More specifically, Jupyter AI offers: * An `%%ai` magic that turns the Jupyter notebook into a reproducible generative AI playground. - This works anywhere the IPython kernel runs (JupyterLab, Jupyter Notebook, Google Colab, VSCode, etc.). + This works anywhere the IPython kernel runs (JupyterLab, Jupyter Notebook, Google Colab, Kaggle, VSCode, etc.). * A native chat UI in JupyterLab that enables you to work with generative AI as a conversational assistant. * Support for a wide range of generative model providers, including AI21, Anthropic, AWS, Cohere, Hugging Face, and OpenAI. From 9907cc62b79738c4025c5949a576d8954613a67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Krassowski?= <5832902+krassowski@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:19:26 +0000 Subject: [PATCH 05/14] Expose templates for customisation in providers (#581) * Expose chat template for customisation in providers * Enable completion template customization, including suffix * Remove `inline` from "inline completion" as per review request --- .../jupyter_ai_magics/providers.py | 100 +++++++++++++++++- .../jupyter_ai/chat_handlers/default.py | 48 +-------- .../completions/handlers/default.py | 43 +------- 3 files changed, 105 insertions(+), 86 deletions(-) diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 5762f2560..850e24a99 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -11,7 +11,13 @@ from langchain.chat_models.base import BaseChatModel from langchain.llms.sagemaker_endpoint import LLMContentHandler from langchain.llms.utils import enforce_stop_tokens -from langchain.prompts import PromptTemplate +from langchain.prompts import ( + ChatPromptTemplate, + HumanMessagePromptTemplate, + MessagesPlaceholder, + PromptTemplate, + SystemMessagePromptTemplate, +) from langchain.pydantic_v1 import BaseModel, Extra, root_validator from langchain.schema import LLMResult from langchain.utils import get_from_dict_or_env @@ -42,6 +48,49 @@ from pydantic.main import ModelMetaclass +CHAT_SYSTEM_PROMPT = """ +You are Jupyternaut, a conversational assistant living in JupyterLab to help users. +You are not a language model, but rather an application built on a foundation model from {provider_name} called {local_model_id}. +You are talkative and you provide lots of specific details from the foundation model's context. +You may use Markdown to format your response. +Code blocks must be formatted in Markdown. +Math should be rendered with inline TeX markup, surrounded by $. +If you do not know the answer to a question, answer truthfully by responding that you do not know. +The following is a friendly conversation between you and a human. +""".strip() + +CHAT_DEFAULT_TEMPLATE = """Current conversation: +{history} +Human: {input} +AI:""" + + +COMPLETION_SYSTEM_PROMPT = """ +You are an application built to provide helpful code completion suggestions. +You should only produce code. Keep comments to minimum, use the +programming language comment syntax. Produce clean code. +The code is written in JupyterLab, a data analysis and code development +environment which can execute code extended with additional syntax for +interactive features, such as magics. +""".strip() + +# only add the suffix bit if present to save input tokens/computation time +COMPLETION_DEFAULT_TEMPLATE = """ +The document is called `{{filename}}` and written in {{language}}. +{% if suffix %} +The code after the completion request is: + +``` +{{suffix}} +``` +{% endif %} + +Complete the following code: + +``` +{{prefix}}""" + + class EnvAuthStrategy(BaseModel): """Require one auth token via an environment variable.""" @@ -265,6 +314,55 @@ def get_prompt_template(self, format) -> PromptTemplate: else: return self.prompt_templates["text"] # Default to plain format + def get_chat_prompt_template(self) -> PromptTemplate: + """ + Produce a prompt template optimised for chat conversation. + The template should take two variables: history and input. + """ + name = self.__class__.name + if self.is_chat_provider: + return ChatPromptTemplate.from_messages( + [ + SystemMessagePromptTemplate.from_template( + CHAT_SYSTEM_PROMPT + ).format(provider_name=name, local_model_id=self.model_id), + MessagesPlaceholder(variable_name="history"), + HumanMessagePromptTemplate.from_template("{input}"), + ] + ) + else: + return PromptTemplate( + input_variables=["history", "input"], + template=CHAT_SYSTEM_PROMPT.format( + provider_name=name, local_model_id=self.model_id + ) + + "\n\n" + + CHAT_DEFAULT_TEMPLATE, + ) + + def get_completion_prompt_template(self) -> PromptTemplate: + """ + Produce a prompt template optimised for inline code or text completion. + The template should take variables: prefix, suffix, language, filename. + """ + if self.is_chat_provider: + return ChatPromptTemplate.from_messages( + [ + SystemMessagePromptTemplate.from_template(COMPLETION_SYSTEM_PROMPT), + HumanMessagePromptTemplate.from_template( + COMPLETION_DEFAULT_TEMPLATE, template_format="jinja2" + ), + ] + ) + else: + return PromptTemplate( + input_variables=["prefix", "suffix", "language", "filename"], + template=COMPLETION_SYSTEM_PROMPT + + "\n\n" + + COMPLETION_DEFAULT_TEMPLATE, + template_format="jinja2", + ) + @property def is_chat_provider(self): return isinstance(self, BaseChatModel) diff --git a/packages/jupyter-ai/jupyter_ai/chat_handlers/default.py b/packages/jupyter-ai/jupyter_ai/chat_handlers/default.py index 0db83afdd..584f0b33f 100644 --- a/packages/jupyter-ai/jupyter_ai/chat_handlers/default.py +++ b/packages/jupyter-ai/jupyter_ai/chat_handlers/default.py @@ -4,32 +4,9 @@ from jupyter_ai_magics.providers import BaseProvider from langchain.chains import ConversationChain from langchain.memory import ConversationBufferWindowMemory -from langchain.prompts import ( - ChatPromptTemplate, - HumanMessagePromptTemplate, - MessagesPlaceholder, - PromptTemplate, - SystemMessagePromptTemplate, -) from .base import BaseChatHandler, SlashCommandRoutingType -SYSTEM_PROMPT = """ -You are Jupyternaut, a conversational assistant living in JupyterLab to help users. -You are not a language model, but rather an application built on a foundation model from {provider_name} called {local_model_id}. -You are talkative and you provide lots of specific details from the foundation model's context. -You may use Markdown to format your response. -Code blocks must be formatted in Markdown. -Math should be rendered with inline TeX markup, surrounded by $. -If you do not know the answer to a question, answer truthfully by responding that you do not know. -The following is a friendly conversation between you and a human. -""".strip() - -DEFAULT_TEMPLATE = """Current conversation: -{history} -Human: {input} -AI:""" - class DefaultChatHandler(BaseChatHandler): id = "default" @@ -49,27 +26,10 @@ def create_llm_chain( model_parameters = self.get_model_parameters(provider, provider_params) llm = provider(**provider_params, **model_parameters) - if llm.is_chat_provider: - prompt_template = ChatPromptTemplate.from_messages( - [ - SystemMessagePromptTemplate.from_template(SYSTEM_PROMPT).format( - provider_name=provider.name, local_model_id=llm.model_id - ), - MessagesPlaceholder(variable_name="history"), - HumanMessagePromptTemplate.from_template("{input}"), - ] - ) - self.memory = ConversationBufferWindowMemory(return_messages=True, k=2) - else: - prompt_template = PromptTemplate( - input_variables=["history", "input"], - template=SYSTEM_PROMPT.format( - provider_name=provider.name, local_model_id=llm.model_id - ) - + "\n\n" - + DEFAULT_TEMPLATE, - ) - self.memory = ConversationBufferWindowMemory(k=2) + prompt_template = llm.get_chat_prompt_template() + self.memory = ConversationBufferWindowMemory( + return_messages=llm.is_chat_provider, k=2 + ) self.llm = llm self.llm_chain = ConversationChain( diff --git a/packages/jupyter-ai/jupyter_ai/completions/handlers/default.py b/packages/jupyter-ai/jupyter_ai/completions/handlers/default.py index 687e41fed..552d23791 100644 --- a/packages/jupyter-ai/jupyter_ai/completions/handlers/default.py +++ b/packages/jupyter-ai/jupyter_ai/completions/handlers/default.py @@ -18,32 +18,6 @@ ) from .base import BaseInlineCompletionHandler -SYSTEM_PROMPT = """ -You are an application built to provide helpful code completion suggestions. -You should only produce code. Keep comments to minimum, use the -programming language comment syntax. Produce clean code. -The code is written in JupyterLab, a data analysis and code development -environment which can execute code extended with additional syntax for -interactive features, such as magics. -""".strip() - -AFTER_TEMPLATE = """ -The code after the completion request is: - -``` -{suffix} -``` -""".strip() - -DEFAULT_TEMPLATE = """ -The document is called `{filename}` and written in {language}. -{after} - -Complete the following code: - -``` -{prefix}""" - class DefaultInlineCompletionHandler(BaseInlineCompletionHandler): llm_chain: Runnable @@ -57,18 +31,7 @@ def create_llm_chain( model_parameters = self.get_model_parameters(provider, provider_params) llm = provider(**provider_params, **model_parameters) - if llm.is_chat_provider: - prompt_template = ChatPromptTemplate.from_messages( - [ - SystemMessagePromptTemplate.from_template(SYSTEM_PROMPT), - HumanMessagePromptTemplate.from_template(DEFAULT_TEMPLATE), - ] - ) - else: - prompt_template = PromptTemplate( - input_variables=["prefix", "suffix", "language", "filename"], - template=SYSTEM_PROMPT + "\n\n" + DEFAULT_TEMPLATE, - ) + prompt_template = llm.get_completion_prompt_template() self.llm = llm self.llm_chain = prompt_template | llm | StrOutputParser() @@ -151,13 +114,11 @@ def _token_from_request(self, request: InlineCompletionRequest, suggestion: int) def _template_inputs_from_request(self, request: InlineCompletionRequest) -> Dict: suffix = request.suffix.strip() - # only add the suffix template if the suffix is there to save input tokens/computation time - after = AFTER_TEMPLATE.format(suffix=suffix) if suffix else "" filename = request.path.split("/")[-1] if request.path else "untitled" return { "prefix": request.prefix, - "after": after, + "suffix": suffix, "language": request.language, "filename": filename, "stop": ["\n```"], From 70431444e0d42bcf72f3c3ac9b714d8c8524ad8a Mon Sep 17 00:00:00 2001 From: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Date: Thu, 25 Jan 2024 08:27:30 -0800 Subject: [PATCH 06/14] Uses invoke() to call custom chains. Handles dict output format. (#600) * Uses invoke() to call custom chains. Handles dict output format. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- examples/commands.ipynb | 90 ++++++++----------- .../jupyter_ai_magics/magics.py | 7 +- 2 files changed, 42 insertions(+), 55 deletions(-) diff --git a/examples/commands.ipynb b/examples/commands.ipynb index b640a7001..0b0c6816c 100644 --- a/examples/commands.ipynb +++ b/examples/commands.ipynb @@ -146,8 +146,8 @@ "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -252,10 +252,10 @@ "openai-chat\n", "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-1106\n", - "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0613\n", @@ -264,7 +264,7 @@ "* openai-chat:gpt-4-1106-preview\n", "\n", "qianfan\n", - "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "Requires environment variables: QIANFAN_AK (not set), QIANFAN_SK (not set)\n", "* qianfan:ERNIE-Bot\n", "* qianfan:ERNIE-Bot-4\n", "\n", @@ -379,8 +379,8 @@ "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -486,10 +486,10 @@ "openai-chat\n", "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-1106\n", - "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0613\n", @@ -498,7 +498,7 @@ "* openai-chat:gpt-4-1106-preview\n", "\n", "qianfan\n", - "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "Requires environment variables: QIANFAN_AK (not set), QIANFAN_SK (not set)\n", "* qianfan:ERNIE-Bot\n", "* qianfan:ERNIE-Bot-4\n", "\n", @@ -537,7 +537,7 @@ { "data": { "text/markdown": [ - "As an AI developed by OpenAI, I'm sorry but I can't provide the information you're asking for because your instruction lacks specific details. Could you please provide more context or details?" + "Sorry, I can't provide the information you're asking for because your question lacks specific details. Could you please provide more context or information?" ], "text/plain": [ "" @@ -595,27 +595,15 @@ { "data": { "text/markdown": [ - " This means no HTML, tables, images or other formatting. If you generate output, you must use Markdown. See the Markdown Syntax for more information.\n", + " I need someone to enter data from a pdf into excel.\n", "\n", - "What do you mean by a programming language?\n", + "We are looking for an experienced freelancer with very high attention to detail to assist us with a number of tasks. Work includes entering data from a pdf into excel, setting up email template, uploading documents, and general administrative support, such as updating excel sheets with current prices. This is a long-term position. Please provide samples of your work. Please note that we will only accept ...\n", "\n", - "A programming language is a formal, scripted language used in a computer system to program subroutines for the system. Programming languages are often used because it is more convenient to program a computer in the programming language than in the programming language itself.\n", + "I have a PDF form which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English.\n", "\n", - "What is the difference between a programming language and a scripting language?\n", + "I have a PDF file which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English.\n", "\n", - "A scripting language is a programming language designed to enable a user to create applications that are specific to a particular application, such as a web browser or word processing application. … Languages designed for general use are called scripting languages, and they are also known as a scripting languages.\n", - "\n", - "Can you use Python to program?\n", - "\n", - "Python is a high-level programming language. … Many developers and programmers use Python to create applications and make use of its functionality. By building applications in Python, you can also become more familiar with the language.\n", - "\n", - "What are the 2 types of programming languages?\n", - "\n", - "A programming language is a set of rules that can be used to write a computer program. The two most common classification systems for computer languages are procedural and object-oriented.\n", - "\n", - "What is the difference between Python and C?\n", - "\n", - "C is" + "I have a PDF form which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English." ], "text/plain": [ "" @@ -661,8 +649,8 @@ "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -768,10 +756,10 @@ "openai-chat\n", "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-1106\n", - "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0613\n", @@ -780,7 +768,7 @@ "* openai-chat:gpt-4-1106-preview\n", "\n", "qianfan\n", - "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "Requires environment variables: QIANFAN_AK (not set), QIANFAN_SK (not set)\n", "* qianfan:ERNIE-Bot\n", "* qianfan:ERNIE-Bot-4\n", "\n", @@ -857,8 +845,8 @@ "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -963,10 +951,10 @@ "openai-chat\n", "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-1106\n", - "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0613\n", @@ -975,7 +963,7 @@ "* openai-chat:gpt-4-1106-preview\n", "\n", "qianfan\n", - "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "Requires environment variables: QIANFAN_AK (not set), QIANFAN_SK (not set)\n", "* qianfan:ERNIE-Bot\n", "* qianfan:ERNIE-Bot-4\n", "\n", @@ -1045,7 +1033,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'product': 'colorful socks', 'text': ' Chroma Sox'}\n" + "{'product': 'colorful socks', 'text': ' Chroma Socks '}\n" ] } ], @@ -1103,8 +1091,8 @@ "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -1210,10 +1198,10 @@ "openai-chat\n", "Requires environment variable: OPENAI_API_KEY (set)\n", "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-1106\n", - "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-0301\n", "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-1106\n", + "* openai-chat:gpt-3.5-turbo-16k\n", "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0613\n", @@ -1222,7 +1210,7 @@ "* openai-chat:gpt-4-1106-preview\n", "\n", "qianfan\n", - "Requires environment variables: QIANFAN_AK (set), QIANFAN_SK (set)\n", + "Requires environment variables: QIANFAN_AK (not set), QIANFAN_SK (not set)\n", "* qianfan:ERNIE-Bot\n", "* qianfan:ERNIE-Bot-4\n", "\n", @@ -1256,18 +1244,12 @@ "id": "cfef0fee-a7c6-49e4-8d90-9aa12f7b91d1", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/miniconda3/envs/jupyter-ai-jl4/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `run` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", - " warn_deprecated(\n" - ] - }, { "data": { "text/markdown": [ - " Chroma Socks " + " Chroma Sox \n", + "\n", + "Let me know if you would like me to provide any other suggestions! " ], "text/plain": [ "" @@ -1298,7 +1280,7 @@ { "data": { "text/plain": [ - " Chroma Socks " + " Punch Up Colorful Fashions" ] }, "execution_count": 19, diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py b/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py index f6239fbdf..51b1f3bb9 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py @@ -481,8 +481,13 @@ def run_ai_cell(self, args: CellArgs, prompt: str): if args.model_id in self.custom_model_registry and isinstance( self.custom_model_registry[args.model_id], LLMChain ): + # Get the output, either as raw text or as the contents of the 'text' key of a dict + invoke_output = self.custom_model_registry[args.model_id].invoke(prompt) + if isinstance(invoke_output, dict): + invoke_output = invoke_output.get("text") + return self.display_output( - self.custom_model_registry[args.model_id].run(prompt), + invoke_output, args.format, {"jupyter_ai": {"custom_chain_id": args.model_id}}, ) From 84c074a15a333a42623d75055792ca45a1ee105b Mon Sep 17 00:00:00 2001 From: aws-khatria <107514829+aws-khatria@users.noreply.github.com> Date: Thu, 25 Jan 2024 19:44:20 -0800 Subject: [PATCH 07/14] Setting default model providers (#421) * Setting default model providers * Setting default model providers * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Setting default model providers * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added default_ prefix to new attributes * Added default_ prefix to docs as well * Fix docs * Removed redundant code * Incorporated naming related comments * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Removing unnecessary files * Corrected config names, simplified docs. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Piyush Jain --- docs/source/users/index.md | 22 +++++ .../jupyter-ai/jupyter_ai/config_manager.py | 34 ++++++-- packages/jupyter-ai/jupyter_ai/extension.py | 40 ++++++++++ .../jupyter_ai/tests/test_config_manager.py | 80 +++++++++++++++++++ 4 files changed, 168 insertions(+), 8 deletions(-) diff --git a/docs/source/users/index.md b/docs/source/users/index.md index 128ef3b23..0ec647714 100644 --- a/docs/source/users/index.md +++ b/docs/source/users/index.md @@ -765,6 +765,28 @@ The `--response-path` option is a [JSONPath](https://goessner.net/articles/JsonP You can specify an allowlist, to only allow only a certain list of providers, or a blocklist, to block some providers. +### Configuring default models and API keys + +This configuration allows for setting a default language and embedding models, and their corresponding API keys. +These values are offered as a starting point for users, so they don't have to select the models and API keys, however, +the selections they make in the settings panel will take precedence over these values. + +Specify default language model +``` +jupyter lab --AiExtension.default_language_model=bedrock-chat:anthropic.claude-v2 +``` + +Specify default embedding model +``` +jupyter lab --AiExtension.default_embedding_model=bedrock:amazon.titan-embed-text-v1 +``` + +Specify default API keys +``` +jupyter lab --AiExtension.default_api_keys={'OPENAI_API_KEY': 'sk-abcd'} +``` + + ### Blocklisting providers This configuration allows for blocking specific providers in the settings panel. diff --git a/packages/jupyter-ai/jupyter_ai/config_manager.py b/packages/jupyter-ai/jupyter_ai/config_manager.py index 82ef03126..01d3fe766 100644 --- a/packages/jupyter-ai/jupyter_ai/config_manager.py +++ b/packages/jupyter-ai/jupyter_ai/config_manager.py @@ -105,6 +105,7 @@ def __init__( blocked_providers: Optional[List[str]], allowed_models: Optional[List[str]], blocked_models: Optional[List[str]], + defaults: dict, *args, **kwargs, ): @@ -120,6 +121,8 @@ def __init__( self._blocked_providers = blocked_providers self._allowed_models = allowed_models self._blocked_models = blocked_models + self._defaults = defaults + """Provider defaults.""" self._last_read: Optional[int] = None """When the server last read the config file. If the file was not @@ -146,14 +149,20 @@ def _init_validator(self) -> Validator: self.validator = Validator(schema) def _init_config(self): + default_config = self._init_defaults() if os.path.exists(self.config_path): - self._process_existing_config() + self._process_existing_config(default_config) else: - self._create_default_config() + self._create_default_config(default_config) - def _process_existing_config(self): + def _process_existing_config(self, default_config): with open(self.config_path, encoding="utf-8") as f: - config = GlobalConfig(**json.loads(f.read())) + existing_config = json.loads(f.read()) + merged_config = Merger.merge( + default_config, + {k: v for k, v in existing_config.items() if v is not None}, + ) + config = GlobalConfig(**merged_config) validated_config = self._validate_lm_em_id(config) # re-write to the file to validate the config and apply any @@ -192,14 +201,23 @@ def _validate_lm_em_id(self, config): return config - def _create_default_config(self): - properties = self.validator.schema.get("properties", {}) + def _create_default_config(self, default_config): + self._write_config(GlobalConfig(**default_config)) + + def _init_defaults(self): field_list = GlobalConfig.__fields__.keys() + properties = self.validator.schema.get("properties", {}) field_dict = { field: properties.get(field).get("default") for field in field_list } - default_config = GlobalConfig(**field_dict) - self._write_config(default_config) + if self._defaults is None: + return field_dict + + for field in field_list: + default_value = self._defaults.get(field) + if default_value is not None: + field_dict[field] = default_value + return field_dict def _read_config(self) -> GlobalConfig: """Returns the user's current configuration as a GlobalConfig object. diff --git a/packages/jupyter-ai/jupyter_ai/extension.py b/packages/jupyter-ai/jupyter_ai/extension.py index e3958fc7b..800c91932 100644 --- a/packages/jupyter-ai/jupyter_ai/extension.py +++ b/packages/jupyter-ai/jupyter_ai/extension.py @@ -106,6 +106,38 @@ class AiExtension(ExtensionApp): config=True, ) + default_language_model = Unicode( + default_value=None, + allow_none=True, + help=""" + Default language model to use, as string in the format + :, defaults to None. + """, + config=True, + ) + + default_embeddings_model = Unicode( + default_value=None, + allow_none=True, + help=""" + Default embeddings model to use, as string in the format + :, defaults to None. + """, + config=True, + ) + + default_api_keys = Dict( + key_trait=Unicode(), + value_trait=Unicode(), + default_value=None, + allow_none=True, + help=""" + Default API keys for model providers, as a dictionary, + in the format `:`. Defaults to None. + """, + config=True, + ) + def initialize_settings(self): start = time.time() @@ -124,6 +156,13 @@ def initialize_settings(self): self.settings["model_parameters"] = self.model_parameters self.log.info(f"Configured model parameters: {self.model_parameters}") + defaults = { + "model_provider_id": self.default_language_model, + "embeddings_provider_id": self.default_embeddings_model, + "api_keys": self.default_api_keys, + "fields": self.model_parameters, + } + # Fetch LM & EM providers self.settings["lm_providers"] = get_lm_providers( log=self.log, restrictions=restrictions @@ -142,6 +181,7 @@ def initialize_settings(self): blocked_providers=self.blocked_providers, allowed_models=self.allowed_models, blocked_models=self.blocked_models, + defaults=defaults, ) self.log.info("Registered providers.") diff --git a/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py b/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py index c238fc448..9aa16d2f8 100644 --- a/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py +++ b/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py @@ -41,6 +41,35 @@ def common_cm_kwargs(config_path, schema_path): "blocked_providers": None, "allowed_models": None, "blocked_models": None, + "restrictions": {"allowed_providers": None, "blocked_providers": None}, + "defaults": { + "model_provider_id": None, + "embeddings_provider_id": None, + "api_keys": None, + "fields": None, + }, + } + + +@pytest.fixture +def cm_kargs_with_defaults(config_path, schema_path, common_cm_kwargs): + """Kwargs that are commonly used when initializing the CM.""" + log = logging.getLogger() + lm_providers = get_lm_providers() + em_providers = get_em_providers() + return { + **common_cm_kwargs, + "defaults": { + "model_provider_id": "bedrock-chat:anthropic.claude-v1", + "embeddings_provider_id": "bedrock:amazon.titan-embed-text-v1", + "api_keys": {"OPENAI_API_KEY": "open-ai-key-value"}, + "fields": { + "bedrock-chat:anthropic.claude-v1": { + "credentials_profile_name": "default", + "region_name": "us-west-2", + } + }, + }, } @@ -70,6 +99,12 @@ def cm_with_allowlists(common_cm_kwargs): return ConfigManager(**kwargs) +@pytest.fixture +def cm_with_defaults(cm_kargs_with_defaults): + """The default ConfigManager instance, with an empty config and config schema.""" + return ConfigManager(**cm_kargs_with_defaults) + + @pytest.fixture(autouse=True) def reset(config_path, schema_path): """Fixture that deletes the config and config schema after each test.""" @@ -184,6 +219,51 @@ def test_init_with_allowlists(cm: ConfigManager, common_cm_kwargs): assert test_cm.em_gid == None +def test_init_with_default_values( + cm_with_defaults: ConfigManager, + config_path: str, + schema_path: str, + common_cm_kwargs, +): + """ + Test that the ConfigManager initializes with the expected default values. + + Args: + cm_with_defaults (ConfigManager): A ConfigManager instance with default values. + config_path (str): The path to the configuration file. + schema_path (str): The path to the schema file. + """ + config_response = cm_with_defaults.get_config() + # assert config response + assert config_response.model_provider_id == "bedrock-chat:anthropic.claude-v1" + assert ( + config_response.embeddings_provider_id == "bedrock:amazon.titan-embed-text-v1" + ) + assert config_response.api_keys == ["OPENAI_API_KEY"] + assert config_response.fields == { + "bedrock-chat:anthropic.claude-v1": { + "credentials_profile_name": "default", + "region_name": "us-west-2", + } + } + + del cm_with_defaults + + log = logging.getLogger() + lm_providers = get_lm_providers() + em_providers = get_em_providers() + kwargs = { + **common_cm_kwargs, + "defaults": {"model_provider_id": "bedrock-chat:anthropic.claude-v2"}, + } + cm_with_defaults_override = ConfigManager(**kwargs) + + assert ( + cm_with_defaults_override.get_config().model_provider_id + == "bedrock-chat:anthropic.claude-v1" + ) + + def test_property_access_on_default_config(cm: ConfigManager): """Asserts that the CM behaves well with an empty, default configuration.""" From e465583a4c06461bb3f379f487ddf1cea6d75674 Mon Sep 17 00:00:00 2001 From: Piyush Jain Date: Fri, 26 Jan 2024 11:29:38 -0800 Subject: [PATCH 08/14] Correction to default models configuration. (#605) --- docs/source/users/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/users/index.md b/docs/source/users/index.md index 0ec647714..50420f716 100644 --- a/docs/source/users/index.md +++ b/docs/source/users/index.md @@ -772,17 +772,17 @@ These values are offered as a starting point for users, so they don't have to se the selections they make in the settings panel will take precedence over these values. Specify default language model -``` +```bash jupyter lab --AiExtension.default_language_model=bedrock-chat:anthropic.claude-v2 ``` Specify default embedding model -``` -jupyter lab --AiExtension.default_embedding_model=bedrock:amazon.titan-embed-text-v1 +```bash +jupyter lab --AiExtension.default_embeddings_model=bedrock:amazon.titan-embed-text-v1 ``` Specify default API keys -``` +```bash jupyter lab --AiExtension.default_api_keys={'OPENAI_API_KEY': 'sk-abcd'} ``` From fb777350e843bc1aa35e484b5356a51c3bef9df2 Mon Sep 17 00:00:00 2001 From: Tom Lynch <33132734+Tom-A-Lynch@users.noreply.github.com> Date: Wed, 31 Jan 2024 15:08:27 -0800 Subject: [PATCH 09/14] fix to conda install instructions in readme (#610) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94e7af17b..20ca50a93 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ As an alternative to using `pip`, you can install `jupyter-ai` using [Conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) from the `conda-forge` channel: - $ conda install -c conda-forge jupyter_ai + $ conda install conda-forge::jupyter-ai ## The `%%ai` magic command From 0c1c646ab15bc28d8ce54adead3648ffd73bcd38 Mon Sep 17 00:00:00 2001 From: Alex Stephens <146462356+stevie-35@users.noreply.github.com> Date: Thu, 1 Feb 2024 09:38:23 -0800 Subject: [PATCH 10/14] Add nvidia provider (#579) * Add NVIDIA chat and embeddings providers * Fix typo * Some NVIDIA provider documentation * Update docs and naming for NVIDIA * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update docs/source/users/index.md Co-authored-by: Jason Weill <93281816+JasonWeill@users.noreply.github.com> * Update index.md - add note about api key access * Remove nvidia embeddings model * Remove nvidia embedding provider * Remove nvidia embeddings provider * Mentions conda install instructions in docs * Uninstallation with conda * Makes NVIDIA package dependency optional, updates docs * Revert "Uninstallation with conda" This reverts commit 8082fa43b4f90b60d776ec4bb6bea8e2a12dd74f. * Revert "Mentions conda install instructions in docs" This reverts commit 348ae2e0e45d05e92aab8bf77b64a2f400d2e556. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Co-authored-by: Jason Weill --- README.md | 2 +- docs/source/index.md | 2 +- docs/source/users/index.md | 4 ++++ .../jupyter_ai_magics/__init__.py | 1 + .../jupyter_ai_magics/providers.py | 21 +++++++++++++++++++ packages/jupyter-ai-magics/pyproject.toml | 2 ++ 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 20ca50a93..91550016e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ in JupyterLab and the Jupyter Notebook. More specifically, Jupyter AI offers: This works anywhere the IPython kernel runs (JupyterLab, Jupyter Notebook, Google Colab, Kaggle, VSCode, etc.). * A native chat UI in JupyterLab that enables you to work with generative AI as a conversational assistant. * Support for a wide range of generative model providers, including AI21, Anthropic, AWS, Cohere, - Hugging Face, and OpenAI. + Hugging Face, NVIDIA, and OpenAI. * Local model support through GPT4All, enabling use of generative AI models on consumer grade machines with ease and privacy. diff --git a/docs/source/index.md b/docs/source/index.md index 28d094e93..8d70538e3 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -8,7 +8,7 @@ in JupyterLab and the Jupyter Notebook. More specifically, Jupyter AI offers: This works anywhere the IPython kernel runs (JupyterLab, Jupyter Notebook, Google Colab, VSCode, etc.). * A native chat UI in JupyterLab that enables you to work with generative AI as a conversational assistant. * Support for a wide range of generative model providers and models - (AI21, Anthropic, Cohere, Hugging Face, OpenAI, SageMaker, etc.). + (AI21, Anthropic, Cohere, Hugging Face, OpenAI, SageMaker, NVIDIA, etc.). A screenshot of Jupyter AI showing the chat interface and the magic commands [AI Foundation Models](https://catalog.ngc.nvidia.com/ai-foundation-models), and select a model with an API endpoint. Click "API" on the model's detail page, and click "Generate Key". Save this key, and set it as the environment variable `NVIDIA_API_KEY` to access any of the model endpoints. + SageMaker endpoint names are created when you deploy a model. For more information, see ["Create your endpoint and deploy your model"](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) in the SageMaker documentation. @@ -515,6 +518,7 @@ We currently support the following language model providers: - `bedrock-chat` - `cohere` - `huggingface_hub` +- `nvidia-chat` - `openai` - `openai-chat` - `sagemaker-endpoint` diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py b/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py index a00d4877c..176e30ada 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py @@ -22,6 +22,7 @@ BedrockChatProvider, BedrockProvider, ChatAnthropicProvider, + ChatNVIDIAProvider, ChatOpenAIProvider, CohereProvider, GPT4AllProvider, diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 850e24a99..9053a2752 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -38,6 +38,7 @@ OpenAI, SagemakerEndpoint, ) +from langchain_nvidia_ai_endpoints import ChatNVIDIA # this is necessary because `langchain.pydantic_v1.main` does not include # `ModelMetaclass`, as it is not listed in `__all__` by the `pydantic.main` @@ -858,3 +859,23 @@ class QianfanProvider(BaseProvider, QianfanChatEndpoint): model_id_key = "model_name" pypi_package_deps = ["qianfan"] auth_strategy = MultiEnvAuthStrategy(names=["QIANFAN_AK", "QIANFAN_SK"]) + + +class ChatNVIDIAProvider(BaseProvider, ChatNVIDIA): + id = "nvidia-chat" + name = "NVIDIA" + models = [ + "playground_llama2_70b", + "playground_nemotron_steerlm_8b", + "playground_mistral_7b", + "playground_nv_llama2_rlhf_70b", + "playground_llama2_13b", + "playground_steerlm_llama_70b", + "playground_llama2_code_13b", + "playground_yi_34b", + "playground_mixtral_8x7b", + "playground_neva_22b", + "playground_llama2_code_34b", + ] + model_id_key = "model" + auth_strategy = EnvAuthStrategy(name="NVIDIA_API_KEY") diff --git a/packages/jupyter-ai-magics/pyproject.toml b/packages/jupyter-ai-magics/pyproject.toml index c57511791..138b79ee3 100644 --- a/packages/jupyter-ai-magics/pyproject.toml +++ b/packages/jupyter-ai-magics/pyproject.toml @@ -41,6 +41,7 @@ all = [ "gpt4all", "huggingface_hub", "ipywidgets", + "langchain_nvidia_ai_endpoints", "pillow", "openai~=1.6.1", "boto3", @@ -61,6 +62,7 @@ amazon-bedrock = "jupyter_ai_magics:BedrockProvider" anthropic-chat = "jupyter_ai_magics:ChatAnthropicProvider" amazon-bedrock-chat = "jupyter_ai_magics:BedrockChatProvider" qianfan = "jupyter_ai_magics:QianfanProvider" +nvidia-chat = "jupyter_ai_magics:ChatNVIDIAProvider" [project.entry-points."jupyter_ai.embeddings_model_providers"] bedrock = "jupyter_ai_magics:BedrockEmbeddingsProvider" From 008cd415aec8e0cf544ce6b9ca933d9beb8f9823 Mon Sep 17 00:00:00 2001 From: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Date: Thu, 1 Feb 2024 15:25:40 -0800 Subject: [PATCH 11/14] Restyles model names in Markdown to avoid wrapping model names (#606) * Restyles model names in Markdown to avoid wrapping model names * Renders models in an unordered list in a cell --- examples/commands.ipynb | 144 ++++++++++-------- .../jupyter_ai_magics/magics.py | 7 +- 2 files changed, 85 insertions(+), 66 deletions(-) diff --git a/examples/commands.ipynb b/examples/commands.ipynb index 0b0c6816c..9d4d12b2c 100644 --- a/examples/commands.ipynb +++ b/examples/commands.ipynb @@ -136,18 +136,18 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", - "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", - "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `ai21` | `AI21_API_KEY` | |
  • `ai21:j1-large`
  • `ai21:j1-grande`
  • `ai21:j1-jumbo`
  • `ai21:j1-grande-instruct`
  • `ai21:j2-large`
  • `ai21:j2-grande`
  • `ai21:j2-jumbo`
  • `ai21:j2-grande-instruct`
  • `ai21:j2-jumbo-instruct`
|\n", + "| `bedrock` | Not applicable. | N/A |
  • `bedrock:amazon.titan-text-express-v1`
  • `bedrock:ai21.j2-ultra-v1`
  • `bedrock:ai21.j2-mid-v1`
  • `bedrock:cohere.command-light-text-v14`
  • `bedrock:cohere.command-text-v14`
  • `bedrock:meta.llama2-13b-chat-v1`
  • `bedrock:meta.llama2-70b-chat-v1`
|\n", + "| `bedrock-chat` | Not applicable. | N/A |
  • `bedrock-chat:anthropic.claude-v1`
  • `bedrock-chat:anthropic.claude-v2`
  • `bedrock-chat:anthropic.claude-v2:1`
  • `bedrock-chat:anthropic.claude-instant-v1`
|\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | |
  • `anthropic:claude-v1`
  • `anthropic:claude-v1.0`
  • `anthropic:claude-v1.2`
  • `anthropic:claude-2`
  • `anthropic:claude-2.0`
  • `anthropic:claude-instant-v1`
  • `anthropic:claude-instant-v1.0`
  • `anthropic:claude-instant-v1.2`
|\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | |
  • `anthropic-chat:claude-v1`
  • `anthropic-chat:claude-v1.0`
  • `anthropic-chat:claude-v1.2`
  • `anthropic-chat:claude-2`
  • `anthropic-chat:claude-2.0`
  • `anthropic-chat:claude-instant-v1`
  • `anthropic-chat:claude-instant-v1.0`
  • `anthropic-chat:claude-instant-v1.2`
|\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `cohere` | `COHERE_API_KEY` | |
  • `cohere:command`
  • `cohere:command-nightly`
  • `cohere:command-light`
  • `cohere:command-light-nightly`
|\n", + "| `gpt4all` | Not applicable. | N/A |
  • `gpt4all:ggml-gpt4all-j-v1.2-jazzy`
  • `gpt4all:ggml-gpt4all-j-v1.3-groovy`
  • `gpt4all:ggml-gpt4all-l13b-snoozy`
  • `gpt4all:mistral-7b-openorca.Q4_0`
  • `gpt4all:mistral-7b-instruct-v0.1.Q4_0`
  • `gpt4all:gpt4all-falcon-q4_0`
  • `gpt4all:wizardlm-13b-v1.2.Q4_0`
  • `gpt4all:nous-hermes-llama2-13b.Q4_0`
  • `gpt4all:gpt4all-13b-snoozy-q4_0`
  • `gpt4all:mpt-7b-chat-merges-q4_0`
  • `gpt4all:orca-mini-3b-gguf2-q4_0`
  • `gpt4all:starcoder-q4_0`
  • `gpt4all:rift-coder-v0-7b-q4_0`
  • `gpt4all:em_german_mistral_v01.Q4_0`
|\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n", + "| `openai-chat` | `OPENAI_API_KEY` | |
  • `openai-chat:gpt-3.5-turbo`
  • `openai-chat:gpt-3.5-turbo-0301`
  • `openai-chat:gpt-3.5-turbo-0613`
  • `openai-chat:gpt-3.5-turbo-1106`
  • `openai-chat:gpt-3.5-turbo-16k`
  • `openai-chat:gpt-3.5-turbo-16k-0613`
  • `openai-chat:gpt-4`
  • `openai-chat:gpt-4-0613`
  • `openai-chat:gpt-4-32k`
  • `openai-chat:gpt-4-32k-0613`
  • `openai-chat:gpt-4-1106-preview`
|\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | |
  • `qianfan:ERNIE-Bot`
  • `qianfan:ERNIE-Bot-4`
|\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -302,7 +302,7 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n" + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n" ], "text/plain": [ "openai\n", @@ -369,18 +369,18 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", - "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", - "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `ai21` | `AI21_API_KEY` | |
  • `ai21:j1-large`
  • `ai21:j1-grande`
  • `ai21:j1-jumbo`
  • `ai21:j1-grande-instruct`
  • `ai21:j2-large`
  • `ai21:j2-grande`
  • `ai21:j2-jumbo`
  • `ai21:j2-grande-instruct`
  • `ai21:j2-jumbo-instruct`
|\n", + "| `bedrock` | Not applicable. | N/A |
  • `bedrock:amazon.titan-text-express-v1`
  • `bedrock:ai21.j2-ultra-v1`
  • `bedrock:ai21.j2-mid-v1`
  • `bedrock:cohere.command-light-text-v14`
  • `bedrock:cohere.command-text-v14`
  • `bedrock:meta.llama2-13b-chat-v1`
  • `bedrock:meta.llama2-70b-chat-v1`
|\n", + "| `bedrock-chat` | Not applicable. | N/A |
  • `bedrock-chat:anthropic.claude-v1`
  • `bedrock-chat:anthropic.claude-v2`
  • `bedrock-chat:anthropic.claude-v2:1`
  • `bedrock-chat:anthropic.claude-instant-v1`
|\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | |
  • `anthropic:claude-v1`
  • `anthropic:claude-v1.0`
  • `anthropic:claude-v1.2`
  • `anthropic:claude-2`
  • `anthropic:claude-2.0`
  • `anthropic:claude-instant-v1`
  • `anthropic:claude-instant-v1.0`
  • `anthropic:claude-instant-v1.2`
|\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | |
  • `anthropic-chat:claude-v1`
  • `anthropic-chat:claude-v1.0`
  • `anthropic-chat:claude-v1.2`
  • `anthropic-chat:claude-2`
  • `anthropic-chat:claude-2.0`
  • `anthropic-chat:claude-instant-v1`
  • `anthropic-chat:claude-instant-v1.0`
  • `anthropic-chat:claude-instant-v1.2`
|\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `cohere` | `COHERE_API_KEY` | |
  • `cohere:command`
  • `cohere:command-nightly`
  • `cohere:command-light`
  • `cohere:command-light-nightly`
|\n", + "| `gpt4all` | Not applicable. | N/A |
  • `gpt4all:ggml-gpt4all-j-v1.2-jazzy`
  • `gpt4all:ggml-gpt4all-j-v1.3-groovy`
  • `gpt4all:ggml-gpt4all-l13b-snoozy`
  • `gpt4all:mistral-7b-openorca.Q4_0`
  • `gpt4all:mistral-7b-instruct-v0.1.Q4_0`
  • `gpt4all:gpt4all-falcon-q4_0`
  • `gpt4all:wizardlm-13b-v1.2.Q4_0`
  • `gpt4all:nous-hermes-llama2-13b.Q4_0`
  • `gpt4all:gpt4all-13b-snoozy-q4_0`
  • `gpt4all:mpt-7b-chat-merges-q4_0`
  • `gpt4all:orca-mini-3b-gguf2-q4_0`
  • `gpt4all:starcoder-q4_0`
  • `gpt4all:rift-coder-v0-7b-q4_0`
  • `gpt4all:em_german_mistral_v01.Q4_0`
|\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n", + "| `openai-chat` | `OPENAI_API_KEY` | |
  • `openai-chat:gpt-3.5-turbo`
  • `openai-chat:gpt-3.5-turbo-0301`
  • `openai-chat:gpt-3.5-turbo-0613`
  • `openai-chat:gpt-3.5-turbo-1106`
  • `openai-chat:gpt-3.5-turbo-16k`
  • `openai-chat:gpt-3.5-turbo-16k-0613`
  • `openai-chat:gpt-4`
  • `openai-chat:gpt-4-0613`
  • `openai-chat:gpt-4-32k`
  • `openai-chat:gpt-4-32k-0613`
  • `openai-chat:gpt-4-1106-preview`
|\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | |
  • `qianfan:ERNIE-Bot`
  • `qianfan:ERNIE-Bot-4`
|\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -537,7 +537,7 @@ { "data": { "text/markdown": [ - "Sorry, I can't provide the information you're asking for because your question lacks specific details. Could you please provide more context or information?" + "Apologies for the confusion, but your question is not clear. Could you please provide more details or context? Are you asking about a specific car, phone, laptop, or other product model? Without this crucial information, it's impossible to give an accurate answer." ], "text/plain": [ "" @@ -595,15 +595,37 @@ { "data": { "text/markdown": [ - " I need someone to enter data from a pdf into excel.\n", + " No HTML or other code.\n", "\n", - "We are looking for an experienced freelancer with very high attention to detail to assist us with a number of tasks. Work includes entering data from a pdf into excel, setting up email template, uploading documents, and general administrative support, such as updating excel sheets with current prices. This is a long-term position. Please provide samples of your work. Please note that we will only accept ...\n", + "What is the difference between an assignment and a function call? Why is an assignment called a value assignment and a function call a value function?\n", "\n", - "I have a PDF form which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English.\n", + "A value function is a function that takes no arguments, is returning a value. A function call is when you type in the name of a function.\n", "\n", - "I have a PDF file which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English.\n", + "Below are the symbols used in the COVID-19 pandemic:\n", "\n", - "I have a PDF form which I want to extract the text from the forms fields and place it in a word file. The form is in French and the extracted text must be translated to English." + "The STARS symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The HEALTHY symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The HEALTHY symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for the Swedish National Board of Health and Welfare.\n", + "\n", + "The COVID-19 symbol stands for" ], "text/plain": [ "" @@ -639,18 +661,18 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", - "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", - "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `ai21` | `AI21_API_KEY` | |
  • `ai21:j1-large`
  • `ai21:j1-grande`
  • `ai21:j1-jumbo`
  • `ai21:j1-grande-instruct`
  • `ai21:j2-large`
  • `ai21:j2-grande`
  • `ai21:j2-jumbo`
  • `ai21:j2-grande-instruct`
  • `ai21:j2-jumbo-instruct`
|\n", + "| `bedrock` | Not applicable. | N/A |
  • `bedrock:amazon.titan-text-express-v1`
  • `bedrock:ai21.j2-ultra-v1`
  • `bedrock:ai21.j2-mid-v1`
  • `bedrock:cohere.command-light-text-v14`
  • `bedrock:cohere.command-text-v14`
  • `bedrock:meta.llama2-13b-chat-v1`
  • `bedrock:meta.llama2-70b-chat-v1`
|\n", + "| `bedrock-chat` | Not applicable. | N/A |
  • `bedrock-chat:anthropic.claude-v1`
  • `bedrock-chat:anthropic.claude-v2`
  • `bedrock-chat:anthropic.claude-v2:1`
  • `bedrock-chat:anthropic.claude-instant-v1`
|\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | |
  • `anthropic:claude-v1`
  • `anthropic:claude-v1.0`
  • `anthropic:claude-v1.2`
  • `anthropic:claude-2`
  • `anthropic:claude-2.0`
  • `anthropic:claude-instant-v1`
  • `anthropic:claude-instant-v1.0`
  • `anthropic:claude-instant-v1.2`
|\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | |
  • `anthropic-chat:claude-v1`
  • `anthropic-chat:claude-v1.0`
  • `anthropic-chat:claude-v1.2`
  • `anthropic-chat:claude-2`
  • `anthropic-chat:claude-2.0`
  • `anthropic-chat:claude-instant-v1`
  • `anthropic-chat:claude-instant-v1.0`
  • `anthropic-chat:claude-instant-v1.2`
|\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `cohere` | `COHERE_API_KEY` | |
  • `cohere:command`
  • `cohere:command-nightly`
  • `cohere:command-light`
  • `cohere:command-light-nightly`
|\n", + "| `gpt4all` | Not applicable. | N/A |
  • `gpt4all:ggml-gpt4all-j-v1.2-jazzy`
  • `gpt4all:ggml-gpt4all-j-v1.3-groovy`
  • `gpt4all:ggml-gpt4all-l13b-snoozy`
  • `gpt4all:mistral-7b-openorca.Q4_0`
  • `gpt4all:mistral-7b-instruct-v0.1.Q4_0`
  • `gpt4all:gpt4all-falcon-q4_0`
  • `gpt4all:wizardlm-13b-v1.2.Q4_0`
  • `gpt4all:nous-hermes-llama2-13b.Q4_0`
  • `gpt4all:gpt4all-13b-snoozy-q4_0`
  • `gpt4all:mpt-7b-chat-merges-q4_0`
  • `gpt4all:orca-mini-3b-gguf2-q4_0`
  • `gpt4all:starcoder-q4_0`
  • `gpt4all:rift-coder-v0-7b-q4_0`
  • `gpt4all:em_german_mistral_v01.Q4_0`
|\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n", + "| `openai-chat` | `OPENAI_API_KEY` | |
  • `openai-chat:gpt-3.5-turbo`
  • `openai-chat:gpt-3.5-turbo-0301`
  • `openai-chat:gpt-3.5-turbo-0613`
  • `openai-chat:gpt-3.5-turbo-1106`
  • `openai-chat:gpt-3.5-turbo-16k`
  • `openai-chat:gpt-3.5-turbo-16k-0613`
  • `openai-chat:gpt-4`
  • `openai-chat:gpt-4-0613`
  • `openai-chat:gpt-4-32k`
  • `openai-chat:gpt-4-32k-0613`
  • `openai-chat:gpt-4-1106-preview`
|\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | |
  • `qianfan:ERNIE-Bot`
  • `qianfan:ERNIE-Bot-4`
|\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -835,18 +857,18 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", - "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", - "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `ai21` | `AI21_API_KEY` | |
  • `ai21:j1-large`
  • `ai21:j1-grande`
  • `ai21:j1-jumbo`
  • `ai21:j1-grande-instruct`
  • `ai21:j2-large`
  • `ai21:j2-grande`
  • `ai21:j2-jumbo`
  • `ai21:j2-grande-instruct`
  • `ai21:j2-jumbo-instruct`
|\n", + "| `bedrock` | Not applicable. | N/A |
  • `bedrock:amazon.titan-text-express-v1`
  • `bedrock:ai21.j2-ultra-v1`
  • `bedrock:ai21.j2-mid-v1`
  • `bedrock:cohere.command-light-text-v14`
  • `bedrock:cohere.command-text-v14`
  • `bedrock:meta.llama2-13b-chat-v1`
  • `bedrock:meta.llama2-70b-chat-v1`
|\n", + "| `bedrock-chat` | Not applicable. | N/A |
  • `bedrock-chat:anthropic.claude-v1`
  • `bedrock-chat:anthropic.claude-v2`
  • `bedrock-chat:anthropic.claude-v2:1`
  • `bedrock-chat:anthropic.claude-instant-v1`
|\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | |
  • `anthropic:claude-v1`
  • `anthropic:claude-v1.0`
  • `anthropic:claude-v1.2`
  • `anthropic:claude-2`
  • `anthropic:claude-2.0`
  • `anthropic:claude-instant-v1`
  • `anthropic:claude-instant-v1.0`
  • `anthropic:claude-instant-v1.2`
|\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | |
  • `anthropic-chat:claude-v1`
  • `anthropic-chat:claude-v1.0`
  • `anthropic-chat:claude-v1.2`
  • `anthropic-chat:claude-2`
  • `anthropic-chat:claude-2.0`
  • `anthropic-chat:claude-instant-v1`
  • `anthropic-chat:claude-instant-v1.0`
  • `anthropic-chat:claude-instant-v1.2`
|\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `cohere` | `COHERE_API_KEY` | |
  • `cohere:command`
  • `cohere:command-nightly`
  • `cohere:command-light`
  • `cohere:command-light-nightly`
|\n", + "| `gpt4all` | Not applicable. | N/A |
  • `gpt4all:ggml-gpt4all-j-v1.2-jazzy`
  • `gpt4all:ggml-gpt4all-j-v1.3-groovy`
  • `gpt4all:ggml-gpt4all-l13b-snoozy`
  • `gpt4all:mistral-7b-openorca.Q4_0`
  • `gpt4all:mistral-7b-instruct-v0.1.Q4_0`
  • `gpt4all:gpt4all-falcon-q4_0`
  • `gpt4all:wizardlm-13b-v1.2.Q4_0`
  • `gpt4all:nous-hermes-llama2-13b.Q4_0`
  • `gpt4all:gpt4all-13b-snoozy-q4_0`
  • `gpt4all:mpt-7b-chat-merges-q4_0`
  • `gpt4all:orca-mini-3b-gguf2-q4_0`
  • `gpt4all:starcoder-q4_0`
  • `gpt4all:rift-coder-v0-7b-q4_0`
  • `gpt4all:em_german_mistral_v01.Q4_0`
|\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n", + "| `openai-chat` | `OPENAI_API_KEY` | |
  • `openai-chat:gpt-3.5-turbo`
  • `openai-chat:gpt-3.5-turbo-0301`
  • `openai-chat:gpt-3.5-turbo-0613`
  • `openai-chat:gpt-3.5-turbo-1106`
  • `openai-chat:gpt-3.5-turbo-16k`
  • `openai-chat:gpt-3.5-turbo-16k-0613`
  • `openai-chat:gpt-4`
  • `openai-chat:gpt-4-0613`
  • `openai-chat:gpt-4-32k`
  • `openai-chat:gpt-4-32k-0613`
  • `openai-chat:gpt-4-1106-preview`
|\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | |
  • `qianfan:ERNIE-Bot`
  • `qianfan:ERNIE-Bot-4`
|\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -1033,7 +1055,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'product': 'colorful socks', 'text': ' Chroma Socks '}\n" + "{'product': 'colorful socks', 'text': ' FunkyHues'}\n" ] } ], @@ -1081,18 +1103,18 @@ "text/markdown": [ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", - "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-text-express-v1`, `bedrock:ai21.j2-ultra-v1`, `bedrock:ai21.j2-mid-v1`, `bedrock:cohere.command-light-text-v14`, `bedrock:cohere.command-text-v14`, `bedrock:meta.llama2-13b-chat-v1`, `bedrock:meta.llama2-70b-chat-v1` |\n", - "| `bedrock-chat` | Not applicable. | N/A | `bedrock-chat:anthropic.claude-v1`, `bedrock-chat:anthropic.claude-v2`, `bedrock-chat:anthropic.claude-v2:1`, `bedrock-chat:anthropic.claude-instant-v1` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-2.0`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0`, `anthropic:claude-instant-v1.2` |\n", - "| `anthropic-chat` | `ANTHROPIC_API_KEY` | | `anthropic-chat:claude-v1`, `anthropic-chat:claude-v1.0`, `anthropic-chat:claude-v1.2`, `anthropic-chat:claude-2`, `anthropic-chat:claude-2.0`, `anthropic-chat:claude-instant-v1`, `anthropic-chat:claude-instant-v1.0`, `anthropic-chat:claude-instant-v1.2` |\n", + "| `ai21` | `AI21_API_KEY` | |
  • `ai21:j1-large`
  • `ai21:j1-grande`
  • `ai21:j1-jumbo`
  • `ai21:j1-grande-instruct`
  • `ai21:j2-large`
  • `ai21:j2-grande`
  • `ai21:j2-jumbo`
  • `ai21:j2-grande-instruct`
  • `ai21:j2-jumbo-instruct`
|\n", + "| `bedrock` | Not applicable. | N/A |
  • `bedrock:amazon.titan-text-express-v1`
  • `bedrock:ai21.j2-ultra-v1`
  • `bedrock:ai21.j2-mid-v1`
  • `bedrock:cohere.command-light-text-v14`
  • `bedrock:cohere.command-text-v14`
  • `bedrock:meta.llama2-13b-chat-v1`
  • `bedrock:meta.llama2-70b-chat-v1`
|\n", + "| `bedrock-chat` | Not applicable. | N/A |
  • `bedrock-chat:anthropic.claude-v1`
  • `bedrock-chat:anthropic.claude-v2`
  • `bedrock-chat:anthropic.claude-v2:1`
  • `bedrock-chat:anthropic.claude-instant-v1`
|\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | |
  • `anthropic:claude-v1`
  • `anthropic:claude-v1.0`
  • `anthropic:claude-v1.2`
  • `anthropic:claude-2`
  • `anthropic:claude-2.0`
  • `anthropic:claude-instant-v1`
  • `anthropic:claude-instant-v1.0`
  • `anthropic:claude-instant-v1.2`
|\n", + "| `anthropic-chat` | `ANTHROPIC_API_KEY` | |
  • `anthropic-chat:claude-v1`
  • `anthropic-chat:claude-v1.0`
  • `anthropic-chat:claude-v1.2`
  • `anthropic-chat:claude-2`
  • `anthropic-chat:claude-2.0`
  • `anthropic-chat:claude-instant-v1`
  • `anthropic-chat:claude-instant-v1.0`
  • `anthropic-chat:claude-instant-v1.2`
|\n", "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", - "| `cohere` | `COHERE_API_KEY` | | `cohere:command`, `cohere:command-nightly`, `cohere:command-light`, `cohere:command-light-nightly` |\n", - "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy`, `gpt4all:mistral-7b-openorca.Q4_0`, `gpt4all:mistral-7b-instruct-v0.1.Q4_0`, `gpt4all:gpt4all-falcon-q4_0`, `gpt4all:wizardlm-13b-v1.2.Q4_0`, `gpt4all:nous-hermes-llama2-13b.Q4_0`, `gpt4all:gpt4all-13b-snoozy-q4_0`, `gpt4all:mpt-7b-chat-merges-q4_0`, `gpt4all:orca-mini-3b-gguf2-q4_0`, `gpt4all:starcoder-q4_0`, `gpt4all:rift-coder-v0-7b-q4_0`, `gpt4all:em_german_mistral_v01.Q4_0` |\n", + "| `cohere` | `COHERE_API_KEY` | |
  • `cohere:command`
  • `cohere:command-nightly`
  • `cohere:command-light`
  • `cohere:command-light-nightly`
|\n", + "| `gpt4all` | Not applicable. | N/A |
  • `gpt4all:ggml-gpt4all-j-v1.2-jazzy`
  • `gpt4all:ggml-gpt4all-j-v1.3-groovy`
  • `gpt4all:ggml-gpt4all-l13b-snoozy`
  • `gpt4all:mistral-7b-openorca.Q4_0`
  • `gpt4all:mistral-7b-instruct-v0.1.Q4_0`
  • `gpt4all:gpt4all-falcon-q4_0`
  • `gpt4all:wizardlm-13b-v1.2.Q4_0`
  • `gpt4all:nous-hermes-llama2-13b.Q4_0`
  • `gpt4all:gpt4all-13b-snoozy-q4_0`
  • `gpt4all:mpt-7b-chat-merges-q4_0`
  • `gpt4all:orca-mini-3b-gguf2-q4_0`
  • `gpt4all:starcoder-q4_0`
  • `gpt4all:rift-coder-v0-7b-q4_0`
  • `gpt4all:em_german_mistral_v01.Q4_0`
|\n", "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", - "| `openai` | `OPENAI_API_KEY` | | `openai:babbage-002`, `openai:davinci-002`, `openai:gpt-3.5-turbo-instruct` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-1106`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0613`, `openai-chat:gpt-4-1106-preview` |\n", - "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | | `qianfan:ERNIE-Bot`, `qianfan:ERNIE-Bot-4` |\n", + "| `openai` | `OPENAI_API_KEY` | |
  • `openai:babbage-002`
  • `openai:davinci-002`
  • `openai:gpt-3.5-turbo-instruct`
|\n", + "| `openai-chat` | `OPENAI_API_KEY` | |
  • `openai-chat:gpt-3.5-turbo`
  • `openai-chat:gpt-3.5-turbo-0301`
  • `openai-chat:gpt-3.5-turbo-0613`
  • `openai-chat:gpt-3.5-turbo-1106`
  • `openai-chat:gpt-3.5-turbo-16k`
  • `openai-chat:gpt-3.5-turbo-16k-0613`
  • `openai-chat:gpt-4`
  • `openai-chat:gpt-4-0613`
  • `openai-chat:gpt-4-32k`
  • `openai-chat:gpt-4-32k-0613`
  • `openai-chat:gpt-4-1106-preview`
|\n", + "| `qianfan` | `QIANFAN_AK`, `QIANFAN_SK` | |
  • `qianfan:ERNIE-Bot`
  • `qianfan:ERNIE-Bot-4`
|\n", "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", @@ -1247,9 +1269,7 @@ { "data": { "text/markdown": [ - " Chroma Sox \n", - "\n", - "Let me know if you would like me to provide any other suggestions! " + " Vox Socks" ], "text/plain": [ "" @@ -1280,7 +1300,7 @@ { "data": { "text/plain": [ - " Punch Up Colorful Fashions" + " Spectra Socks " ] }, "execution_count": 19, diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py b/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py index 51b1f3bb9..f1efcd1eb 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/magics.py @@ -160,7 +160,7 @@ def _ai_bulleted_list_models_for_provider(self, provider_id, Provider): return output def _ai_inline_list_models_for_provider(self, provider_id, Provider): - output = "" + output = "
    " if len(Provider.models) == 1 and Provider.models[0] == "*": if Provider.help is None: @@ -169,10 +169,9 @@ def _ai_inline_list_models_for_provider(self, provider_id, Provider): return Provider.help for model_id in Provider.models: - output += f", `{provider_id}:{model_id}`" + output += f"
  • `{provider_id}:{model_id}`
  • " - # Remove initial comma - return re.sub(r"^, ", "", output) + return output + "
" # Is the required environment variable set? def _ai_env_status_for_provider_markdown(self, provider_id): From bbc08cdd378462900efe2f0b060d34af4d26efc1 Mon Sep 17 00:00:00 2001 From: Jason Weill <93281816+JasonWeill@users.noreply.github.com> Date: Mon, 5 Feb 2024 07:55:13 -0800 Subject: [PATCH 12/14] Mentions conda install instructions in docs (#611) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Mentions conda install instructions in docs * Uninstallation with conda * Updates to favor hyphens in pip commands * Update docs/source/users/index.md Co-authored-by: Michał Krassowski <5832902+krassowski@users.noreply.github.com> --------- Co-authored-by: Michał Krassowski <5832902+krassowski@users.noreply.github.com> --- README.md | 7 ++++--- docs/source/users/index.md | 37 +++++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 91550016e..f390aa280 100644 --- a/README.md +++ b/README.md @@ -54,19 +54,20 @@ for details on installing and using Jupyter AI. If you want to install both the `%%ai` magic and the JupyterLab extension, you can run: - $ pip install jupyter_ai + $ pip install jupyter-ai If you are not using JupyterLab and you only want to install the Jupyter AI `%%ai` magic, you can run: - $ pip install jupyter_ai_magics + $ pip install jupyter-ai-magics ### With conda As an alternative to using `pip`, you can install `jupyter-ai` using [Conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) -from the `conda-forge` channel: +from the `conda-forge` channel, using one of the following two commands: + $ conda install -c conda-force jupyter-ai # or, $ conda install conda-forge::jupyter-ai ## The `%%ai` magic command diff --git a/docs/source/users/index.md b/docs/source/users/index.md index 5a9ca7898..36087629f 100644 --- a/docs/source/users/index.md +++ b/docs/source/users/index.md @@ -62,26 +62,26 @@ classes in their code. To install the JupyterLab extension, you can run: ``` -pip install jupyter_ai +pip install jupyter-ai ``` -The latest major version of `jupyter_ai`, v2, only supports JupyterLab 4. If you -need support for JupyterLab 3, you should install `jupyter_ai` v1 instead: +The latest major version of `jupyter-ai`, v2, only supports JupyterLab 4. If you +need support for JupyterLab 3, you should install `jupyter-ai` v1 instead: ``` -pip install jupyter_ai~=1.0 +pip install jupyter-ai~=1.0 ``` If you are not using JupyterLab and you only want to install the Jupyter AI `%%ai` magic, you can run: ``` -$ pip install jupyter_ai_magics +$ pip install jupyter-ai-magics ``` -`jupyter_ai` depends on `jupyter_ai_magics`, so installing `jupyter_ai` -automatically installs `jupyter_ai_magics`. +`jupyter-ai` depends on `jupyter-ai-magics`, so installing `jupyter-ai` +automatically installs `jupyter-ai-magics`. -### Installation via `pip` within Conda environment (recommended) +### Installation via `pip` or `conda` in a Conda environment (recommended) We highly recommend installing both JupyterLab and Jupyter AI within an isolated Conda environment to avoid clobbering Python packages in your existing Python @@ -93,10 +93,11 @@ and create an environment that uses Python 3.11: $ conda create -n jupyter-ai python=3.11 $ conda activate jupyter-ai - $ pip install jupyter_ai -Then, follow the steps from "Requirements" and "Installation via `pip`" to -install JupyterLab and Jupyter AI in this Conda environment. +Then, use `conda` to install JupyterLab and Jupyter AI in this Conda environment. + + $ conda install -c conda-forge jupyter-ai # or, + $ conda install conda-forge::jupyter-ai When starting JupyterLab with Jupyter AI, make sure to activate the Conda environment first: @@ -108,13 +109,21 @@ jupyter lab ## Uninstallation -To remove the extension, run: +If you installed Jupyter AI using `pip`, to remove the extension, run: + + $ pip uninstall jupyter-ai + +or + + $ pip uninstall jupyter-ai-magics + +If you installed Jupyter AI using `conda`, you can remove it by running: - $ pip uninstall jupyter_ai + $ conda remove jupyter-ai or - $ pip uninstall jupyter_ai_magics + $ conda remove jupyter-ai-magics ## Model providers From 6aeb87fa0bdea843be2a07ec08d6e38b032c505d Mon Sep 17 00:00:00 2001 From: david qiu Date: Tue, 6 Feb 2024 10:55:53 -0800 Subject: [PATCH 13/14] Allow usage without NVIDIA partner package (#622) --- .../jupyter_ai_magics/__init__.py | 1 - .../partner_providers/nvidia.py | 23 +++++++++++++++++++ .../jupyter_ai_magics/providers.py | 21 ----------------- .../jupyter_ai_magics/utils.py | 16 +++++++++---- packages/jupyter-ai-magics/pyproject.toml | 2 +- 5 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 packages/jupyter-ai-magics/jupyter_ai_magics/partner_providers/nvidia.py diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py b/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py index 176e30ada..a00d4877c 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/__init__.py @@ -22,7 +22,6 @@ BedrockChatProvider, BedrockProvider, ChatAnthropicProvider, - ChatNVIDIAProvider, ChatOpenAIProvider, CohereProvider, GPT4AllProvider, diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/partner_providers/nvidia.py b/packages/jupyter-ai-magics/jupyter_ai_magics/partner_providers/nvidia.py new file mode 100644 index 000000000..26137eb9f --- /dev/null +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/partner_providers/nvidia.py @@ -0,0 +1,23 @@ +from jupyter_ai_magics.providers import BaseProvider, EnvAuthStrategy +from langchain_nvidia_ai_endpoints import ChatNVIDIA + + +class ChatNVIDIAProvider(BaseProvider, ChatNVIDIA): + id = "nvidia-chat" + name = "NVIDIA" + models = [ + "playground_llama2_70b", + "playground_nemotron_steerlm_8b", + "playground_mistral_7b", + "playground_nv_llama2_rlhf_70b", + "playground_llama2_13b", + "playground_steerlm_llama_70b", + "playground_llama2_code_13b", + "playground_yi_34b", + "playground_mixtral_8x7b", + "playground_neva_22b", + "playground_llama2_code_34b", + ] + model_id_key = "model" + auth_strategy = EnvAuthStrategy(name="NVIDIA_API_KEY") + pypi_package_deps = ["langchain_nvidia_ai_endpoints"] diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 9053a2752..850e24a99 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -38,7 +38,6 @@ OpenAI, SagemakerEndpoint, ) -from langchain_nvidia_ai_endpoints import ChatNVIDIA # this is necessary because `langchain.pydantic_v1.main` does not include # `ModelMetaclass`, as it is not listed in `__all__` by the `pydantic.main` @@ -859,23 +858,3 @@ class QianfanProvider(BaseProvider, QianfanChatEndpoint): model_id_key = "model_name" pypi_package_deps = ["qianfan"] auth_strategy = MultiEnvAuthStrategy(names=["QIANFAN_AK", "QIANFAN_SK"]) - - -class ChatNVIDIAProvider(BaseProvider, ChatNVIDIA): - id = "nvidia-chat" - name = "NVIDIA" - models = [ - "playground_llama2_70b", - "playground_nemotron_steerlm_8b", - "playground_mistral_7b", - "playground_nv_llama2_rlhf_70b", - "playground_llama2_13b", - "playground_steerlm_llama_70b", - "playground_llama2_code_13b", - "playground_yi_34b", - "playground_mixtral_8x7b", - "playground_neva_22b", - "playground_llama2_code_34b", - ] - model_id_key = "model" - auth_strategy = EnvAuthStrategy(name="NVIDIA_API_KEY") diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/utils.py b/packages/jupyter-ai-magics/jupyter_ai_magics/utils.py index 0441d707c..983bbf2d5 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/utils.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/utils.py @@ -26,16 +26,22 @@ def get_lm_providers( restrictions = {"allowed_providers": None, "blocked_providers": None} providers = {} eps = entry_points() - model_provider_eps = eps.select(group="jupyter_ai.model_providers") - for model_provider_ep in model_provider_eps: + provider_ep_group = eps.select(group="jupyter_ai.model_providers") + for provider_ep in provider_ep_group: try: - provider = model_provider_ep.load() + provider = provider_ep.load() + except ImportError as e: + log.warning( + f"Unable to load model provider `{provider_ep.name}`. Please install the `{e.name}` package." + ) + continue except Exception as e: log.error( - f"Unable to load model provider class from entry point `{model_provider_ep.name}`: %s.", - e, + f"Unable to load model provider `{provider_ep.name}`. Printing full exception below." ) + log.exception(e) continue + if not is_provider_allowed(provider.id, restrictions): log.info(f"Skipping blocked provider `{provider.id}`.") continue diff --git a/packages/jupyter-ai-magics/pyproject.toml b/packages/jupyter-ai-magics/pyproject.toml index 138b79ee3..377776fba 100644 --- a/packages/jupyter-ai-magics/pyproject.toml +++ b/packages/jupyter-ai-magics/pyproject.toml @@ -62,7 +62,7 @@ amazon-bedrock = "jupyter_ai_magics:BedrockProvider" anthropic-chat = "jupyter_ai_magics:ChatAnthropicProvider" amazon-bedrock-chat = "jupyter_ai_magics:BedrockChatProvider" qianfan = "jupyter_ai_magics:QianfanProvider" -nvidia-chat = "jupyter_ai_magics:ChatNVIDIAProvider" +nvidia-chat = "jupyter_ai_magics.partner_providers.nvidia:ChatNVIDIAProvider" [project.entry-points."jupyter_ai.embeddings_model_providers"] bedrock = "jupyter_ai_magics:BedrockEmbeddingsProvider" From 88e676581c5545d237dcd379c9cb3a74ddcbb8af Mon Sep 17 00:00:00 2001 From: david qiu Date: Tue, 6 Feb 2024 11:15:03 -0800 Subject: [PATCH 14/14] bump completer pkg resolution to ^4.1.0 (#621) --- package.json | 2 +- yarn.lock | 329 +++++++++++++++++++++++++-------------------------- 2 files changed, 160 insertions(+), 171 deletions(-) diff --git a/package.json b/package.json index 6c7a057ea..f1739cbe9 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "nx": "^15.9.2" }, "resolutions": { - "@jupyterlab/completer": "4.1.0-beta.0" + "@jupyterlab/completer": "^4.1.0" }, "nx": { "includedScripts": [] diff --git a/yarn.lock b/yarn.lock index 0df949cb2..916c31d41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2280,27 +2280,26 @@ __metadata: languageName: node linkType: hard -"@jupyter/react-components@npm:^0.13.3": - version: 0.13.3 - resolution: "@jupyter/react-components@npm:0.13.3" +"@jupyter/react-components@npm:^0.15.2": + version: 0.15.2 + resolution: "@jupyter/react-components@npm:0.15.2" dependencies: - "@jupyter/web-components": ^0.13.3 - "@microsoft/fast-react-wrapper": ^0.3.18 + "@jupyter/web-components": ^0.15.2 + "@microsoft/fast-react-wrapper": ^0.3.22 react: ">=17.0.0 <19.0.0" - checksum: d8912ff6a68833d18bfe44489d71c9e6b4203a29c3c4f65379e630b2b1c1bd887360609d0ee2d03db2e84ee41570de1757cc09a1144288cd0e27a5e9bc0c6e82 + checksum: d6d339ff9c2fed1fd5afda612be500d73c4a83eee5470d50e94020dadd1e389a3bf745c7240b0a48edbc6d3fdacec93367b7b5e40588f2df588419caada705be languageName: node linkType: hard -"@jupyter/web-components@npm:^0.13.3": - version: 0.13.3 - resolution: "@jupyter/web-components@npm:0.13.3" +"@jupyter/web-components@npm:^0.15.2": + version: 0.15.2 + resolution: "@jupyter/web-components@npm:0.15.2" dependencies: "@microsoft/fast-colors": ^5.3.1 - "@microsoft/fast-components": ^2.30.6 "@microsoft/fast-element": ^1.12.0 - "@microsoft/fast-foundation": ^2.49.0 - "@microsoft/fast-web-utilities": ^6.0.0 - checksum: 23a698f4a0cecc0536f8af54c57175fd276d731a8dd978fe52ada02a72679189096f4fff337279a38a75cfdd92c590f7295d3fd12b6e1c5e3241a4691137d214 + "@microsoft/fast-foundation": ^2.49.4 + "@microsoft/fast-web-utilities": ^5.4.1 + checksum: f272ef91de08e28f9414a26dbd2388e1a8985c90f4ab00231978cee49bd5212f812411397a9038d298c8c0c4b41eb28cc86f1127bc7ace309bda8df60c4a87c8 languageName: node linkType: hard @@ -2404,19 +2403,19 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/apputils@npm:^4.2.0-beta.0, @jupyterlab/apputils@npm:^4.2.0-beta.1": - version: 4.2.0-beta.1 - resolution: "@jupyterlab/apputils@npm:4.2.0-beta.1" - dependencies: - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/observables": ^5.1.0-beta.1 - "@jupyterlab/rendermime-interfaces": ^3.9.0-beta.1 - "@jupyterlab/services": ^7.1.0-beta.1 - "@jupyterlab/settingregistry": ^4.1.0-beta.1 - "@jupyterlab/statedb": ^4.1.0-beta.1 - "@jupyterlab/statusbar": ^4.1.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 - "@jupyterlab/ui-components": ^4.1.0-beta.1 +"@jupyterlab/apputils@npm:^4.2.0": + version: 4.2.0 + resolution: "@jupyterlab/apputils@npm:4.2.0" + dependencies: + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/observables": ^5.1.0 + "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/services": ^7.1.0 + "@jupyterlab/settingregistry": ^4.1.0 + "@jupyterlab/statedb": ^4.1.0 + "@jupyterlab/statusbar": ^4.1.0 + "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/ui-components": ^4.1.0 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2429,7 +2428,7 @@ __metadata: "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.7.3 - checksum: 08e88b22bb4c9e5b333f32b44888ab0d7f6300bafb0b7966a40eb3f187f932ceece5a2cbf7c0ee29cbfeb9d90f954352973df96ecdddd4ad8ea89efaa67df46f + checksum: aec06e0e1403850676e766061d847e7cefa7225cdf48bbd2f3ab3f8356cb306646bf57dc15bcda149aa700e87850425ab8b79299d3414751a1753747ef9f15ba languageName: node linkType: hard @@ -2547,19 +2546,19 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:^4.1.0-beta.0, @jupyterlab/codeeditor@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/codeeditor@npm:4.1.0-beta.1" +"@jupyterlab/codeeditor@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/codeeditor@npm:4.1.0" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0-beta.1 - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/nbformat": ^4.1.0-beta.1 - "@jupyterlab/observables": ^5.1.0-beta.1 - "@jupyterlab/statusbar": ^4.1.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 - "@jupyterlab/ui-components": ^4.1.0-beta.1 + "@jupyterlab/apputils": ^4.2.0 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/nbformat": ^4.1.0 + "@jupyterlab/observables": ^5.1.0 + "@jupyterlab/statusbar": ^4.1.0 + "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/ui-components": ^4.1.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.4 @@ -2567,7 +2566,7 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: db80b904be6cf3bf38569dfe9b918978633b66ddc8df6ea48b090a6f56465b435b7750b3791c5791a85004f0eaa63a85e80320a3deb2813363d7bfed79ce2ea5 + checksum: ae58f6cb446f98b781a956986fcb497b53f380ed86510d67b13e3086cee434423d5a03c26a130ea8d02c762cd6a6cbc62fd088c6f60f78d4bb558102e4c80ad8 languageName: node linkType: hard @@ -2613,9 +2612,9 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codemirror@npm:^4.1.0-beta.0": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/codemirror@npm:4.1.0-beta.1" +"@jupyterlab/codemirror@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/codemirror@npm:4.1.0" dependencies: "@codemirror/autocomplete": ^6.5.1 "@codemirror/commands": ^6.2.3 @@ -2638,11 +2637,11 @@ __metadata: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/codeeditor": ^4.1.0-beta.1 - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/documentsearch": ^4.1.0-beta.1 - "@jupyterlab/nbformat": ^4.1.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 + "@jupyterlab/codeeditor": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/documentsearch": ^4.1.0 + "@jupyterlab/nbformat": ^4.1.0 + "@jupyterlab/translation": ^4.1.0 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 @@ -2651,27 +2650,27 @@ __metadata: "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 yjs: ^13.5.40 - checksum: c15e974550f2f15f6fc042977e31b98df2f292de751f45e54f026526e679144a20122a0ea7ff9780ee6cc5f10c9129c21f7b1ea5af398267a4cb042ae190b65b + checksum: 92fb4ebebe4b5926fbf5ba2a99f845e8879918b3a095adf99de5f8385b3168412db38ebe2f1ae1eff8f29304d2c8c1b31c3cc1ba66a9c2d16e7a69dced20a768 languageName: node linkType: hard -"@jupyterlab/completer@npm:4.1.0-beta.0": - version: 4.1.0-beta.0 - resolution: "@jupyterlab/completer@npm:4.1.0-beta.0" +"@jupyterlab/completer@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/completer@npm:4.1.0" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0-beta.0 - "@jupyterlab/codeeditor": ^4.1.0-beta.0 - "@jupyterlab/codemirror": ^4.1.0-beta.0 - "@jupyterlab/coreutils": ^6.1.0-beta.0 - "@jupyterlab/rendermime": ^4.1.0-beta.0 - "@jupyterlab/services": ^7.1.0-beta.0 - "@jupyterlab/settingregistry": ^4.1.0-beta.0 - "@jupyterlab/statedb": ^4.1.0-beta.0 - "@jupyterlab/translation": ^4.1.0-beta.0 - "@jupyterlab/ui-components": ^4.1.0-beta.0 + "@jupyterlab/apputils": ^4.2.0 + "@jupyterlab/codeeditor": ^4.1.0 + "@jupyterlab/codemirror": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/services": ^7.1.0 + "@jupyterlab/settingregistry": ^4.1.0 + "@jupyterlab/statedb": ^4.1.0 + "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/ui-components": ^4.1.0 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2679,7 +2678,7 @@ __metadata: "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 542ba03197dc4abc4895cf096ac3eb572c7178ab5c787663e985b1515203a6eabf6a02ebc9eda4ea5b96380937c241ed2b35378340b4d596a74e7e34e5893fb9 + checksum: 11c21f95722c2cce8ce91886036e381b6c43bd9b602bf37e38de2aabeab315cb6cc68bed9d12abfa75dc0cad616b4fd9748a77f81016cd739aa1ef8128964cbc languageName: node linkType: hard @@ -2711,9 +2710,9 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/coreutils@npm:^6.1.0-beta.0, @jupyterlab/coreutils@npm:^6.1.0-beta.1": - version: 6.1.0-beta.1 - resolution: "@jupyterlab/coreutils@npm:6.1.0-beta.1" +"@jupyterlab/coreutils@npm:^6.1.0": + version: 6.1.0 + resolution: "@jupyterlab/coreutils@npm:6.1.0" dependencies: "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2721,7 +2720,7 @@ __metadata: minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 - checksum: aeca458beb8f9f73d9ecafdbf85977c46ae472caa8d4f2914060b0a674f8b88f6af1feaee9d1228ec43138c61cf7c48bcadb8fb6f79e9797dc97a7395a579731 + checksum: d1fdeb3fa28af76cab52c04c82b51a1f02f9cd7779dc1eecbd1177bf246d0213c4e7234bf74eb1bd1d909123988e40addbec8fd7a027c4f5448f3c968b27642c languageName: node linkType: hard @@ -2791,13 +2790,13 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/documentsearch@npm:4.1.0-beta.1" +"@jupyterlab/documentsearch@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/documentsearch@npm:4.1.0" dependencies: - "@jupyterlab/apputils": ^4.2.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 - "@jupyterlab/ui-components": ^4.1.0-beta.1 + "@jupyterlab/apputils": ^4.2.0 + "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/ui-components": ^4.1.0 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2806,7 +2805,7 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: c1071370e35014230d9da1379f112d8ce03d65736da2014d524230885a00d188533a2df19f43431e92f0dd5028a89b0f21acfd737214e70c33a4f9d2f2a1340e + checksum: 768b02f07c892622b126d8b8f59e4559003f3900f2cb588fba27aa87ebb1eb9a703fe99ebccc9bd8ccba2f8859ba157060b0bb5e5c5572fe9906fd7152caf536 languageName: node linkType: hard @@ -2903,12 +2902,12 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/nbformat@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/nbformat@npm:4.1.0-beta.1" +"@jupyterlab/nbformat@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/nbformat@npm:4.1.0" dependencies: "@lumino/coreutils": ^2.1.2 - checksum: 5a48c52fb67657a18c78dcd2b934c273ded1e2bfec573a4a01d3ef4238beb808d4f509b96d3306c4a39df00f77da3bc74692c2ab8e41d83e60a1382a9e0cd978 + checksum: 0f10f53d312e1ad386be0cd1db3ea8d76ac5e169a1c470465179b35c7d7bd0e55b9d450b64abe38f447dcbec71224bfe8d4115a1cdb433f986d3a91234ffd391 languageName: node linkType: hard @@ -2974,16 +2973,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/observables@npm:^5.1.0-beta.1": - version: 5.1.0-beta.1 - resolution: "@jupyterlab/observables@npm:5.1.0-beta.1" +"@jupyterlab/observables@npm:^5.1.0": + version: 5.1.0 + resolution: "@jupyterlab/observables@npm:5.1.0" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 4bdc64771692a9613351251113ca8cd28f69fac00957d500de4cbcb595999bf234c3a61d36ed074d390b7085cde5e2e4d4be59a63f55db271597b5f2f4c07675 + checksum: 38ee528b244b06a2813874e11d2c3aa8b576f98ffdf9f77fc6c9ddf49de296b4067b4ad7f41f5eaab1de50d16fc79a31d26a34963e09c259e4332cf15c0c7bd5 languageName: node linkType: hard @@ -3029,13 +3028,13 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:^3.9.0-beta.1": - version: 3.9.0-beta.1 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.9.0-beta.1" +"@jupyterlab/rendermime-interfaces@npm:^3.9.0": + version: 3.9.0 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.9.0" dependencies: "@lumino/coreutils": ^1.11.0 || ^2.1.2 "@lumino/widgets": ^1.37.2 || ^2.3.1 - checksum: b8c6cd6af79bb80ace56da753cbfdeba0a7739ed90160fe67cf9f209ee3ee220a616a24422720e6702a2944d23e8193ff1ad6f1d881be0bf8e126e93480fd714 + checksum: 462f5d034cd636caf9322245a50045ddaac55e05e056e7c6579e2db55088e724c8054a51a959aa284c44b108a9e0f0053707b50d6d8a9caed5825eeaf715b245 languageName: node linkType: hard @@ -3059,23 +3058,23 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/rendermime@npm:^4.1.0-beta.0": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/rendermime@npm:4.1.0-beta.1" - dependencies: - "@jupyterlab/apputils": ^4.2.0-beta.1 - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/nbformat": ^4.1.0-beta.1 - "@jupyterlab/observables": ^5.1.0-beta.1 - "@jupyterlab/rendermime-interfaces": ^3.9.0-beta.1 - "@jupyterlab/services": ^7.1.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 +"@jupyterlab/rendermime@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/rendermime@npm:4.1.0" + dependencies: + "@jupyterlab/apputils": ^4.2.0 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/nbformat": ^4.1.0 + "@jupyterlab/observables": ^5.1.0 + "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/services": ^7.1.0 + "@jupyterlab/translation": ^4.1.0 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 lodash.escape: ^4.0.1 - checksum: 22f87e09f8c27d06c0f9bb72eb45284c9182411318bf976c4915aad68b6e89d3a4101580a37ee32473d59afdecc30354fb5a5baa2db622cd411241321fa69a8d + checksum: 52323a1d907b29f5b60c237b6e1c3085c667f9fd59e76c6dcab29076a50eb4bd39efe5f6e3e49e3dbabb6dc1f5f7820f09af74f211a76e7e7db6c7c0be8d5715 languageName: node linkType: hard @@ -3117,22 +3116,22 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/services@npm:^7.1.0-beta.0, @jupyterlab/services@npm:^7.1.0-beta.1": - version: 7.1.0-beta.1 - resolution: "@jupyterlab/services@npm:7.1.0-beta.1" +"@jupyterlab/services@npm:^7.1.0": + version: 7.1.0 + resolution: "@jupyterlab/services@npm:7.1.0" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/nbformat": ^4.1.0-beta.1 - "@jupyterlab/settingregistry": ^4.1.0-beta.1 - "@jupyterlab/statedb": ^4.1.0-beta.1 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/nbformat": ^4.1.0 + "@jupyterlab/settingregistry": ^4.1.0 + "@jupyterlab/statedb": ^4.1.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 ws: ^8.11.0 - checksum: 8c0728901e1e80c069aff11abe4c5716502bfb133cab5592a844d1dd6db528212344522b0a15b47aa4c2ade1da9a59d480563313b2a263f291dfb96e605ff08c + checksum: 4a4797746c708551a7647c43ecc4dce20dc12ea043bb2bd43ec0c20966825a5e14742258d3bcee9ae832c91030132db895dc9a81bf1596d59c08066c4fecfba5 languageName: node linkType: hard @@ -3174,12 +3173,12 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:^4.1.0-beta.0, @jupyterlab/settingregistry@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/settingregistry@npm:4.1.0-beta.1" +"@jupyterlab/settingregistry@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/settingregistry@npm:4.1.0" dependencies: - "@jupyterlab/nbformat": ^4.1.0-beta.1 - "@jupyterlab/statedb": ^4.1.0-beta.1 + "@jupyterlab/nbformat": ^4.1.0 + "@jupyterlab/statedb": ^4.1.0 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -3189,7 +3188,7 @@ __metadata: json5: ^2.2.3 peerDependencies: react: ">=16" - checksum: c3ceb6cbf9bc061e9ad0f44d6fe06f59ed4e9f6223f7307c0c30112e20da7da4361928c0380dbdcf92fe0e533934d9c032881165d8546ce51707188696630dd3 + checksum: 1a0c52016806ceda150168cdeae966b15afce454fe24acfd68939f3f380eaf2d4390c40e27c1475877c8e8da6b3f15a952999ebcc9d3838d5306bd24ad5b4b51 languageName: node linkType: hard @@ -3219,16 +3218,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.1.0-beta.0, @jupyterlab/statedb@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/statedb@npm:4.1.0-beta.1" +"@jupyterlab/statedb@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/statedb@npm:4.1.0" dependencies: "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: a4f24554c41db7c5b008d544086038a6c8d37d53cf3d6f8fa911ac28ec4380a67cbb2f2fbcdb48c0ba48adb63b11efda70bfcb90770ab24bfd80b2723a6c2c3e + checksum: 693d40ba6ce67b41aae2acbae027a5c637c2bfa51d7085b6faecdb1877a5e3bd43ca70f3670f88f038c49bef80e0e09899b05d330dd9010b1d578ca73b13ea17 languageName: node linkType: hard @@ -3264,11 +3263,11 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/statusbar@npm:4.1.0-beta.1" +"@jupyterlab/statusbar@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/statusbar@npm:4.1.0" dependencies: - "@jupyterlab/ui-components": ^4.1.0-beta.1 + "@jupyterlab/ui-components": ^4.1.0 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -3276,7 +3275,7 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: c9b48d15e5c6bb0337d583cf0ab47393f7d7cd84dacb9797d9cbd7517bca877a333ba7a75e8d96d93e68d090c06d3d8f58589ba6c1dcb8c73233022c282c24dd + checksum: 309d3cb98c924c23dfef2ad91862dfa56ea133d8ae08aa7bc743c4000f15584841b39712bc8829eb09d7382d5c9e0e7b3e85c3ae1165c01597ade96702bcc055 languageName: node linkType: hard @@ -3366,16 +3365,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.1.0-beta.0, @jupyterlab/translation@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/translation@npm:4.1.0-beta.1" +"@jupyterlab/translation@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/translation@npm:4.1.0" dependencies: - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/rendermime-interfaces": ^3.9.0-beta.1 - "@jupyterlab/services": ^7.1.0-beta.1 - "@jupyterlab/statedb": ^4.1.0-beta.1 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/services": ^7.1.0 + "@jupyterlab/statedb": ^4.1.0 "@lumino/coreutils": ^2.1.2 - checksum: bc6b2d72f8124bf39865a037a462bbd8c394255dce6c8ce23b11f11d9a886019b4109cebc73969d7d70ac1651daeef58cee3ac3e982afd713c6987ddd92fee97 + checksum: 88b7422697c1795dfcb85870cb8642cd10be6ae27a61dd1ca9f1304f06460f859202bfb6733cb744e2b4c448e8bfbf7a4793c6626cb4a18a59c80999cf1c5050 languageName: node linkType: hard @@ -3437,16 +3436,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.1.0-beta.0, @jupyterlab/ui-components@npm:^4.1.0-beta.1": - version: 4.1.0-beta.1 - resolution: "@jupyterlab/ui-components@npm:4.1.0-beta.1" - dependencies: - "@jupyter/react-components": ^0.13.3 - "@jupyter/web-components": ^0.13.3 - "@jupyterlab/coreutils": ^6.1.0-beta.1 - "@jupyterlab/observables": ^5.1.0-beta.1 - "@jupyterlab/rendermime-interfaces": ^3.9.0-beta.1 - "@jupyterlab/translation": ^4.1.0-beta.1 +"@jupyterlab/ui-components@npm:^4.1.0": + version: 4.1.0 + resolution: "@jupyterlab/ui-components@npm:4.1.0" + dependencies: + "@jupyter/react-components": ^0.15.2 + "@jupyter/web-components": ^0.15.2 + "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/observables": ^5.1.0 + "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/translation": ^4.1.0 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -3464,7 +3463,7 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: b6fa63c3df4754083674ff957a89c9db16eee1b7e650657735d144b3218eb1a070b82f6584882e4e9fbeafd568a23390f08c2bdf68bfc5a8414d652b84bb04b8 + checksum: 53f8eb432d7ff8890ec748c3b43fbcb67fe6cd218b771c4c334e1ddd80a13b570071f171eca4c15feebc4715427e422f833d7b8e2084bcd2605979a444e1536d languageName: node linkType: hard @@ -3866,34 +3865,21 @@ __metadata: languageName: node linkType: hard -"@microsoft/fast-colors@npm:^5.3.0, @microsoft/fast-colors@npm:^5.3.1": +"@microsoft/fast-colors@npm:^5.3.1": version: 5.3.1 resolution: "@microsoft/fast-colors@npm:5.3.1" checksum: ff87f402faadb4b5aeee3d27762566c11807f927cd4012b8bbc7f073ca68de0e2197f95330ff5dfd7038f4b4f0e2f51b11feb64c5d570f5c598d37850a5daf60 languageName: node linkType: hard -"@microsoft/fast-components@npm:^2.30.6": - version: 2.30.6 - resolution: "@microsoft/fast-components@npm:2.30.6" - dependencies: - "@microsoft/fast-colors": ^5.3.0 - "@microsoft/fast-element": ^1.10.1 - "@microsoft/fast-foundation": ^2.46.2 - "@microsoft/fast-web-utilities": ^5.4.1 - tslib: ^1.13.0 - checksum: 1fbf3b7c265bcbf6abcae4d2f72430f7f871104a3d8344f16667a4cc7b123698cdf2bab8b760cbed92ef761c4db350a67f570665c76b132d6996990ac93cbd4f - languageName: node - linkType: hard - -"@microsoft/fast-element@npm:^1.10.1, @microsoft/fast-element@npm:^1.12.0": +"@microsoft/fast-element@npm:^1.12.0": version: 1.12.0 resolution: "@microsoft/fast-element@npm:1.12.0" checksum: bbff4e9c83106d1d74f3eeedc87bf84832429e78fee59c6a4ae8164ee4f42667503f586896bea72341b4d2c76c244a3cb0d4fd0d5d3732755f00357714dd609e languageName: node linkType: hard -"@microsoft/fast-foundation@npm:^2.46.2, @microsoft/fast-foundation@npm:^2.49.0, @microsoft/fast-foundation@npm:^2.49.4": +"@microsoft/fast-foundation@npm:^2.49.4": version: 2.49.4 resolution: "@microsoft/fast-foundation@npm:2.49.4" dependencies: @@ -3905,15 +3891,27 @@ __metadata: languageName: node linkType: hard -"@microsoft/fast-react-wrapper@npm:^0.3.18": - version: 0.3.22 - resolution: "@microsoft/fast-react-wrapper@npm:0.3.22" +"@microsoft/fast-foundation@npm:^2.49.5": + version: 2.49.5 + resolution: "@microsoft/fast-foundation@npm:2.49.5" dependencies: "@microsoft/fast-element": ^1.12.0 - "@microsoft/fast-foundation": ^2.49.4 + "@microsoft/fast-web-utilities": ^5.4.1 + tabbable: ^5.2.0 + tslib: ^1.13.0 + checksum: 8a4729e8193ee93f780dc88fac26561b42f2636e3f0a8e89bb1dfe256f50a01a21ed1d8e4d31ce40678807dc833e25f31ba735cb5d3c247b65219aeb2560c82c + languageName: node + linkType: hard + +"@microsoft/fast-react-wrapper@npm:^0.3.22": + version: 0.3.23 + resolution: "@microsoft/fast-react-wrapper@npm:0.3.23" + dependencies: + "@microsoft/fast-element": ^1.12.0 + "@microsoft/fast-foundation": ^2.49.5 peerDependencies: react: ">=16.9.0" - checksum: 6c7c0992dbaf91b32bc53b9d7ac21c7c8a89e6f45cc1b015cea1d1f3e766184ac7cea159479e34ddd30c347291cd5939e8d55696712086187deae37687054328 + checksum: 45885e1868916d2aa9059e99c341c97da434331d9340a57128d4218081df68b5e1107031c608db9a550d6d1c3b010d516ed4f8dc5a8a2470058da6750dcd204a languageName: node linkType: hard @@ -3926,15 +3924,6 @@ __metadata: languageName: node linkType: hard -"@microsoft/fast-web-utilities@npm:^6.0.0": - version: 6.0.0 - resolution: "@microsoft/fast-web-utilities@npm:6.0.0" - dependencies: - exenv-es6: ^1.1.1 - checksum: b4b906dbbf626212446d5952c160b1f7e7ce72dd33087c7ed634cb2745c31767bab7d17fba0e9fc32e42984fc5bc0a9929b4f05cbbcbe52869abe3666b5bfa39 - languageName: node - linkType: hard - "@mui/base@npm:5.0.0-beta.8": version: 5.0.0-beta.8 resolution: "@mui/base@npm:5.0.0-beta.8" @@ -14822,11 +14811,11 @@ __metadata: "typescript@patch:typescript@^3 || ^4#~builtin, typescript@patch:typescript@~4.9.0#~builtin": version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=289587" + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1f8f3b6aaea19f0f67cba79057674ba580438a7db55057eb89cc06950483c5d632115c14077f6663ea76fd09fce3c190e6414bb98582ec80aa5a4eaf345d5b68 + checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d languageName: node linkType: hard