From a29493dfa3202e7a632a8f166ee0ae05b5f19327 Mon Sep 17 00:00:00 2001 From: Jason Weill Date: Tue, 29 Aug 2023 11:30:29 -0700 Subject: [PATCH 1/4] WIP change: display help in settings panel --- packages/jupyter-ai/jupyter_ai/handlers.py | 1 + packages/jupyter-ai/jupyter_ai/models.py | 1 + .../src/components/chat-settings.tsx | 22 +++++++++++++------ packages/jupyter-ai/src/handler.ts | 1 + 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/jupyter-ai/jupyter_ai/handlers.py b/packages/jupyter-ai/jupyter_ai/handlers.py index 965da598c..ddc4c6255 100644 --- a/packages/jupyter-ai/jupyter_ai/handlers.py +++ b/packages/jupyter-ai/jupyter_ai/handlers.py @@ -262,6 +262,7 @@ def get(self): id=provider.id, name=provider.name, models=provider.models, + help=provider.help, auth_strategy=provider.auth_strategy, registry=provider.registry, fields=provider.fields, diff --git a/packages/jupyter-ai/jupyter_ai/models.py b/packages/jupyter-ai/jupyter_ai/models.py index 8e4e992aa..efe501923 100644 --- a/packages/jupyter-ai/jupyter_ai/models.py +++ b/packages/jupyter-ai/jupyter_ai/models.py @@ -79,6 +79,7 @@ class ListProvidersEntry(BaseModel): name: str model_id_label: Optional[str] models: List[str] + help: Optional[str] auth_strategy: AuthStrategy registry: bool fields: List[Field] diff --git a/packages/jupyter-ai/src/components/chat-settings.tsx b/packages/jupyter-ai/src/components/chat-settings.tsx index 773e519b4..c85c838fe 100644 --- a/packages/jupyter-ai/src/components/chat-settings.tsx +++ b/packages/jupyter-ai/src/components/chat-settings.tsx @@ -10,7 +10,8 @@ import { Radio, RadioGroup, TextField, - CircularProgress + CircularProgress, + Typography } from '@mui/material'; import { Select } from './select'; @@ -36,6 +37,7 @@ export function ChatSettings(): JSX.Element { const [lmProvider, setLmProvider] = useState(null); const [showLmLocalId, setShowLmLocalId] = useState(false); + const [helpText, setHelpText] = useState(null); const [lmLocalId, setLmLocalId] = useState(''); const lmGlobalId = useMemo(() => { if (!lmProvider) { @@ -74,6 +76,7 @@ export function ChatSettings(): JSX.Element { setSendWse(server.config.send_with_shift_enter); if (server.lmProvider?.registry) { setShowLmLocalId(true); + setHelpText(server.lmProvider?.help ?? null); } setLmProvider(server.lmProvider); }, [server]); @@ -240,9 +243,11 @@ export function ChatSettings(): JSX.Element { if (nextLmProvider.registry) { setLmLocalId(''); setShowLmLocalId(true); + setHelpText(nextLmProvider?.help ?? null); } else { setLmLocalId(nextLmLocalId); setShowLmLocalId(false); + setHelpText(null); } }} MenuProps={{ sx: { maxHeight: '50%', minHeight: 400 } }} @@ -257,12 +262,15 @@ export function ChatSettings(): JSX.Element { )} {showLmLocalId && ( - setLmLocalId(e.target.value)} - fullWidth - /> + <> + setLmLocalId(e.target.value)} + fullWidth + /> + {helpText && {helpText}} + )} {lmGlobalId && ( Date: Tue, 29 Aug 2023 16:21:02 -0700 Subject: [PATCH 2/4] Interprets markdown, updates Hugging Face help with explicit link --- .../jupyter_ai_magics/providers.py | 2 +- .../jupyter-ai/src/components/chat-settings.tsx | 17 ++++++++++++----- packages/jupyter-ai/style/chat-settings.css | 11 +++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 93616a655..dc9a77cee 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -300,7 +300,7 @@ class HfHubProvider(BaseProvider, HuggingFaceHub): models = ["*"] model_id_key = "repo_id" help = ( - "See https://huggingface.co/models for a list of models. " + "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`." ) # ipywidgets needed to suppress tqdm warning diff --git a/packages/jupyter-ai/src/components/chat-settings.tsx b/packages/jupyter-ai/src/components/chat-settings.tsx index c85c838fe..a54f2c42c 100644 --- a/packages/jupyter-ai/src/components/chat-settings.tsx +++ b/packages/jupyter-ai/src/components/chat-settings.tsx @@ -1,4 +1,7 @@ import React, { useEffect, useState, useMemo } from 'react'; + +import ReactMarkdown from 'react-markdown'; + import { Box } from '@mui/system'; import { Alert, @@ -37,7 +40,7 @@ export function ChatSettings(): JSX.Element { const [lmProvider, setLmProvider] = useState(null); const [showLmLocalId, setShowLmLocalId] = useState(false); - const [helpText, setHelpText] = useState(null); + const [helpMarkdown, setHelpMarkdown] = useState(null); const [lmLocalId, setLmLocalId] = useState(''); const lmGlobalId = useMemo(() => { if (!lmProvider) { @@ -76,7 +79,7 @@ export function ChatSettings(): JSX.Element { setSendWse(server.config.send_with_shift_enter); if (server.lmProvider?.registry) { setShowLmLocalId(true); - setHelpText(server.lmProvider?.help ?? null); + setHelpMarkdown(server.lmProvider?.help ?? null); } setLmProvider(server.lmProvider); }, [server]); @@ -243,11 +246,11 @@ export function ChatSettings(): JSX.Element { if (nextLmProvider.registry) { setLmLocalId(''); setShowLmLocalId(true); - setHelpText(nextLmProvider?.help ?? null); + setHelpMarkdown(nextLmProvider?.help ?? null); } else { setLmLocalId(nextLmLocalId); setShowLmLocalId(false); - setHelpText(null); + setHelpMarkdown(null); } }} MenuProps={{ sx: { maxHeight: '50%', minHeight: 400 } }} @@ -269,7 +272,11 @@ export function ChatSettings(): JSX.Element { onChange={e => setLmLocalId(e.target.value)} fullWidth /> - {helpText && {helpText}} + {helpMarkdown && ( + + {helpMarkdown} + + )} )} {lmGlobalId && ( diff --git a/packages/jupyter-ai/style/chat-settings.css b/packages/jupyter-ai/style/chat-settings.css index 9cb96539c..a8accd053 100644 --- a/packages/jupyter-ai/style/chat-settings.css +++ b/packages/jupyter-ai/style/chat-settings.css @@ -7,3 +7,14 @@ .jp-ai-ChatSettings-welcome { color: var(--jp-ui-font-color1); } + +/* Defer to browser defaults for links in model help */ +.jp-ai-ChatSettings-model-help a { + text-decoration: revert; + color: revert; +} + +.jp-ai-ChatSettings-model-help a:hover { + text-decoration: revert; + color: revert; +} From 00b5eac89323bec9b44706f64801a947778cb9fe Mon Sep 17 00:00:00 2001 From: Jason Weill Date: Tue, 29 Aug 2023 16:39:05 -0700 Subject: [PATCH 3/4] Edits SageMaker help to be neutral in use --- examples/commands.ipynb | 108 ++++++++++++++---- .../jupyter_ai_magics/providers.py | 2 +- 2 files changed, 86 insertions(+), 24 deletions(-) diff --git a/examples/commands.ipynb b/examples/commands.ipynb index efc574e55..f2fa722b4 100644 --- a/examples/commands.ipynb +++ b/examples/commands.ipynb @@ -136,13 +136,16 @@ "| 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", + "| `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", + "| `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", - "| `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", + "| `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", + "| `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-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", - "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new: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", + "| `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-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-16k`, `openai-chat-new:gpt-3.5-turbo-0301`, `openai-chat-new:gpt-3.5-turbo-0613`, `openai-chat-new:gpt-3.5-turbo-16k-0613`, `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-0613`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-4-32k-0613` |\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", @@ -166,22 +169,40 @@ "* ai21:j2-grande-instruct\n", "* 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", + "\n", "anthropic\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-instant-v1\n", "* anthropic:claude-instant-v1.0\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", "\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", + "\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", + "* 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", @@ -197,24 +218,34 @@ "\n", "openai-chat\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat:gpt-3.5-turbo\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-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-4-32k-0613\n", "\n", "openai-chat-new\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat-new:gpt-3.5-turbo\n", + "* openai-chat-new:gpt-3.5-turbo-16k\n", + "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-3.5-turbo-0613\n", + "* openai-chat-new:gpt-3.5-turbo-16k-0613\n", "* openai-chat-new:gpt-4\n", "* openai-chat-new:gpt-4-0314\n", + "* openai-chat-new:gpt-4-0613\n", "* openai-chat-new:gpt-4-32k\n", "* openai-chat-new:gpt-4-32k-0314\n", - "* openai-chat-new:gpt-3.5-turbo\n", - "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-4-32k-0613\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", @@ -318,13 +349,16 @@ "| 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", + "| `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", + "| `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", - "| `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", + "| `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", + "| `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-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", - "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new: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", + "| `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-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-16k`, `openai-chat-new:gpt-3.5-turbo-0301`, `openai-chat-new:gpt-3.5-turbo-0613`, `openai-chat-new:gpt-3.5-turbo-16k-0613`, `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-0613`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-4-32k-0613` |\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", @@ -349,22 +383,40 @@ "* ai21:j2-grande-instruct\n", "* 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", + "\n", "anthropic\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-instant-v1\n", "* anthropic:claude-instant-v1.0\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", "\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", + "\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", + "* 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", @@ -380,24 +432,34 @@ "\n", "openai-chat\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat:gpt-3.5-turbo\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-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-4-32k-0613\n", "\n", "openai-chat-new\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat-new:gpt-3.5-turbo\n", + "* openai-chat-new:gpt-3.5-turbo-16k\n", + "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-3.5-turbo-0613\n", + "* openai-chat-new:gpt-3.5-turbo-16k-0613\n", "* openai-chat-new:gpt-4\n", "* openai-chat-new:gpt-4-0314\n", + "* openai-chat-new:gpt-4-0613\n", "* openai-chat-new:gpt-4-32k\n", "* openai-chat-new:gpt-4-32k-0314\n", - "* openai-chat-new:gpt-3.5-turbo\n", - "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-4-32k-0613\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", @@ -1055,7 +1117,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.11.4" } }, "nbformat": 4, diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index dc9a77cee..149cf9fd8 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -542,7 +542,7 @@ class SmEndpointProvider(BaseProvider, SagemakerEndpoint): # This all needs to be on one line of markdown, for use in a table help = ( "Specify an endpoint name as the model ID. " - "In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. " + "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)." ) From f2e457dd583dd53f71d271eb82f0b95ae0240eed Mon Sep 17 00:00:00 2001 From: Jason Weill Date: Thu, 7 Sep 2023 15:09:00 -0700 Subject: [PATCH 4/4] Displays help message for all providers with one --- .../src/components/chat-settings.tsx | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/jupyter-ai/src/components/chat-settings.tsx b/packages/jupyter-ai/src/components/chat-settings.tsx index a54f2c42c..583cfa9f0 100644 --- a/packages/jupyter-ai/src/components/chat-settings.tsx +++ b/packages/jupyter-ai/src/components/chat-settings.tsx @@ -77,9 +77,9 @@ export function ChatSettings(): JSX.Element { setLmLocalId(server.lmLocalId); setEmGlobalId(server.config.embeddings_provider_id); setSendWse(server.config.send_with_shift_enter); + setHelpMarkdown(server.lmProvider?.help ?? null); if (server.lmProvider?.registry) { setShowLmLocalId(true); - setHelpMarkdown(server.lmProvider?.help ?? null); } setLmProvider(server.lmProvider); }, [server]); @@ -243,14 +243,13 @@ export function ChatSettings(): JSX.Element { const nextLmLocalId = getModelLocalId(lmGid)!; setLmProvider(nextLmProvider); + setHelpMarkdown(nextLmProvider?.help ?? null); if (nextLmProvider.registry) { setLmLocalId(''); setShowLmLocalId(true); - setHelpMarkdown(nextLmProvider?.help ?? null); } else { setLmLocalId(nextLmLocalId); setShowLmLocalId(false); - setHelpMarkdown(null); } }} MenuProps={{ sx: { maxHeight: '50%', minHeight: 400 } }} @@ -265,19 +264,17 @@ export function ChatSettings(): JSX.Element { )} {showLmLocalId && ( - <> - setLmLocalId(e.target.value)} - fullWidth - /> - {helpMarkdown && ( - - {helpMarkdown} - - )} - + setLmLocalId(e.target.value)} + fullWidth + /> + )} + {helpMarkdown && ( + + {helpMarkdown} + )} {lmGlobalId && (