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が表示されますので、ブラウザでアクセスします。

image.png

起動しました。

チャットインターフェイス

左パネルにチャットのボタンが追加されています。

image.png

Welcomeメッセージが表示されます。

127.0.0.1_8888_lab_workspaces_auto-d(1280x720) (1).png

language modelとembedding modelを選択します。

127.0.0.1_8888_lab_workspaces_auto-d(1280x720) (2).png

これで準備完了です。
チャットができます。

おお!

ノートブックについて質問できる

ただチャットができるだけではありません。ノートブックのセルに対して範囲選択をすると、チャットエリアの下部に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/

うまく行ったようです。

127.0.0.1_8888_lab_tree_docs(1280x720).png

質問する際は/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
ProviderEnvironment variableSet?Modelsai21AI21_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-instructanthropicANTHROPIC_API_KEY❌anthropic:claude-v1, anthropic:claude-v1.0, anthropic:claude-v1.2, anthropic:claude-instant-v1, anthropic:claude-instant-v1.0cohereCOHERE_API_KEY❌cohere:medium, cohere:xlargehuggingface_hubHUGGINGFACEHUB_API_TOKEN❌This provider does not define a list of models.openaiOPENAI_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:adaopenai-chatOPENAI_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-0301openai-chat-newOPENAI_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-0301sagemaker-endpointNot applicable.N/AThis 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.

うおおおおおおおおおおお!

すっごい!!


まだ新しいプロジェクトなので、少し動かないところはありますが、今後に期待ですね。


続編書きました

よかったら見てください。

 

bannerAds