LoginSignup
335
350

Jupyter AIが出た!試した!!すごい!!!

Last updated at Posted at 2023-05-23

2023/10/09更新

Jupyter AIがAmazon Bedrockに対応しましたので早速試しました。Jupyter AI自体も完成度が増している印象です。


来ました!JupyterにAIが来ました!

AWSブログでも紹介されています→こちら

早速使ってみました

環境構築

dockerでサクッと行きます。
jupyter_aiパッケージがJupyter AIです。OpenAIのAPIが呼ばれるため、openaiもインストールします。

Dockerfile
FROM jupyter/minimal-notebook:lab-3.6.3

RUN pip install --no-cache-dir \
  jupyter_ai \
  openai

ビルド

shell
docker build -t jupyter-ai .

起動

shell
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 selectionReplace 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を埋め込んでみます。

shell
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マジックコマンドも使えます。

  • 拡張のロード
notbook cell
%load_ext jupyter_ai_magics

これだけです。

使えるモデルの一覧を取得

notebook cell
%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を一緒に指定します。

notebook cell
%%ai openai:text-ada-001
Write some JavaScript code that prints "hello world" to the console.

ほー

デフォルトではMarkdownでの出力となりますが、-fまたは--formatオプションで書式を指定できます。

notebook cell
%%ai openai:text-ada-001 -f code
Write some Java code that prints "hello world" to the console.

ほーほー
(あれ?Javaってこんな書き方でしたっけ??)

他のセルの内容を参照する

前のセルのインプットを参照させられます。

notebook cell
%%ai openai:text-davinci-003
Here's a detailed explanation of the following code, simplified for elementary school students:
--
{In[5]}

おお!

インプットだけでなくアウトプットも使えます。
更にエラーも使えますので、こんなこともできます。

notebook cell
%%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.

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

すっごい!!


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


続編書きました

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

335
350
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
335
350