2023/10/09更新
Jupyter AIがAmazon Bedrockに対応しましたので早速試しました。Jupyter AI自体も完成度が増している印象です。
来ました!JupyterにAIが来ました!
AWSブログでも紹介されています→こちら
早速使ってみました
環境構築
dockerでサクッと行きます。
jupyter_ai
パッケージがJupyter AIです。OpenAIのAPIが呼ばれるため、openai
もインストールします。
FROM jupyter/minimal-notebook:lab-3.6.3
RUN pip install --no-cache-dir \
jupyter_ai \
openai
ビルド
docker build -t jupyter-ai .
起動
docker run -it --rm \
-p 8888:8888 \
-e "OPENAI_API_KEY=<OPENAI_API_KEY>" \
jupyter-ai
ターミナルにトークン付きのURLが表示されますので、ブラウザでアクセスします。
起動しました。
チャットインターフェイス
左パネルにチャットのボタンが追加されています。
Welcomeメッセージが表示されます。
language modelとembedding modelを選択します。
これで準備完了です。
チャットができます。
おお!
ノートブックについて質問できる
ただチャットができるだけではありません。ノートブックのセルに対して範囲選択をすると、チャットエリアの下部にInclude selection
とReplace selection
が表示されます。
Include selection
だと選択したコードを含んだ形で質問ができます。
すっげー!
ログを確認したところ、内部ではLangChainを使ってAPIを叩いているように見えます。
(DefaultActor pid=473)
(DefaultActor pid=473)
(DefaultActor pid=473) > Entering new ConversationChain chain...
(DefaultActor pid=473) Prompt after formatting:
(DefaultActor pid=473) System: You are Jupyternaut, a conversational assistant living in JupyterLab to help users.
(DefaultActor pid=473) You are not a language model, but rather an application built on a foundation model from OpenAI called text-ada-001.
(DefaultActor pid=473) You are talkative and provides lots of specific details from its context.
(DefaultActor pid=473) You may use Markdown to format your response.
(DefaultActor pid=473) Code blocks must be formatted in Markdown.
(DefaultActor pid=473) Math should be rendered with inline TeX markup, surrounded by $.
(DefaultActor pid=473) If you do not know the answer to a question, answer truthfully by responding that you do not know.
(DefaultActor pid=473) The following is a friendly conversation between you and a human.
(DefaultActor pid=473) Human: Hello!
(DefaultActor pid=473) AI:
(DefaultActor pid=473)
(DefaultActor pid=473) Hi there! How are you?
(DefaultActor pid=473) Human: what does this code do?
(DefaultActor pid=473)
(DefaultActor pid=473) ```
(DefaultActor pid=473) from diffusers import DiffusionPipeline
(DefaultActor pid=473)
(DefaultActor pid=473) pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
(DefaultActor pid=473) pipeline.to("cuda")
(DefaultActor pid=473) pipeline("An image of a squirrel in Picasso style").images[0]
(DefaultActor pid=473)
(DefaultActor pid=473) ```
(DefaultActor pid=473) AI:
(DefaultActor pid=473)
(DefaultActor pid=473) > Finished chain.
Replace selection
にチェックを入れると、選択したコード部分がチャットの回答で上書きされます。ただし、チャットの回答が正しいかはわからないので、チェックしてから更新するほうが良さそうです。(そもそも、コードで返ってこないこともありますし。)
ローカルデータについて学ぶ
これだけじゃありません。チャットが質問に答える際にローカルデータを含めるようにすることもできます。embedding modelが使用されます。
試しにhuggingface/diffusersのREADMEを埋め込んでみます。
mkdir docs
cd docs
wget https://raw.githubusercontent.com/huggingface/diffusers/main/README.md
準備完了です。
チャット欄に/learn
コマンドを入力し、覚えさせます。
/learn docs/
うまく行ったようです。
質問する際は/ask
コマンドを使用します。
/ask "Please tell me how to install Diffusers using pip."
You can install 🤗 Diffusers in your virtual environment from PyPi using pip (the official package):
pip install --upgrade diffusers[torch]
覚えさせたドキュメントでは以下の内容ですので、少し要約されて出ているようです。
%%ai
マジックコマンド
Jupyter AIはチャットだけではありません。%%ai
マジックコマンドも使えます。
- 拡張のロード
%load_ext jupyter_ai_magics
これだけです。
使えるモデルの一覧を取得
%ai list
Provider | Environment variable | Set? | Models |
---|---|---|---|
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 |
anthropic | ANTHROPIC_API_KEY | ❌ | anthropic:claude-v1, anthropic:claude-v1.0, anthropic:claude-v1.2, anthropic:claude-instant-v1, anthropic:claude-instant-v1.0 |
cohere | COHERE_API_KEY | ❌ | cohere:medium, cohere:xlarge |
huggingface_hub | HUGGINGFACEHUB_API_TOKEN | ❌ | This provider does not define a list of models. |
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 |
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 |
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 |
sagemaker-endpoint | Not applicable. | N/A | This provider does not define a list of models. |
環境変数にキーをセットした項目がSet?
が✅になります。
マジックコマンドを使う際にmodel ID
を一緒に指定します。
%%ai openai:text-ada-001
Write some JavaScript code that prints "hello world" to the console.
ほー
デフォルトではMarkdownでの出力となりますが、-f
または--format
オプションで書式を指定できます。
%%ai openai:text-ada-001 -f code
Write some Java code that prints "hello world" to the console.
ほーほー
(あれ?Javaってこんな書き方でしたっけ??)
他のセルの内容を参照する
前のセルのインプットを参照させられます。
%%ai openai:text-davinci-003
Here's a detailed explanation of the following code, simplified for elementary school students:
--
{In[5]}
おお!
インプットだけでなくアウトプットも使えます。
更にエラーも使えますので、こんなこともできます。
%%ai openai:text-davinci-003 --format code
The following Python code:
--
{In[14]}
--
produced the following Python error:
--
{Err[14]}
--
Please tell me the cause of the error.
うおおおおおおおおおおお!
すっごい!!
まだ新しいプロジェクトなので、少し動かないところはありますが、今後に期待ですね。
続編書きました
よかったら見てください。