Google ColabでLangChainをサクッと試してみる

生成AIアプリケーション開発のデファクトになりつつあるLangChainに、入門がてらGoogle Colabで動作を試してみます(Colabじゃなくても動作はすると思います)。

APIキーを環境変数に設定

import os
os.environ['OPENAI_API_KEY'] = "sk-******************************" # Set your openai-api-key

OpenAIのモデルを利用するためにAPIキーを環境変数に設定しておきます。
LangChaineはOpenAIに限らず、色々な開発元の提供するモデルを切り替えて統一されたインターフェースで操作できるのが強みです。

ライブラリのインストール

!pip install langchain
!pip install langchain-openai

LangChainとOpenAI用のライブラリをインストールします。

モデルへ問合せを実行

from langchain_openai import ChatOpenAI
from langchain import PromptTemplate
from langchain.schema import HumanMessage, SystemMessage
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler


chat = ChatOpenAI(
    temperature=0,
    model="gpt-3.5-turbo",
    streaming=True, # ストリーミングを有効にする
    callbacks=[
        StreamingStdOutCallbackHandler()
    ]
)

prompt = PromptTemplate(
    template="あなたは{birth_place}出身です。自己紹介をしてください。",
    input_variables=[
        "birth_place"
    ]
)

response = chat.invoke(
    [

        HumanMessage(content="こんにちは。")
    ]
)
print(f"\n-----------------------")
response = chat.invoke(
    [
        SystemMessage(content=prompt.format(birth_place="大阪")),
        HumanMessage(content="こんにちは。")
    ]
)

問合せと、プロンプトテンプレートを使った問合せを試しています。
上手くいけば標準出力に返答が返ってきます。

プロンプトテンプレートを利用することで、あらかじめ設計された効果的な問合せプロンプトを再利用することができます。

DALL·Eを使った画像生成

画像生成も試してみます。こちらはChatGPT PlusのAPIキーである必要があります。

公式サイトの手順はエラーが出てしまったので、LangChainを使わず直接OpenAIのライブラリを利用しています。

from openai import OpenAI
from PIL import Image
import requests
import io


client = OpenAI()

response = client.images.generate(
    model="dall-e-3",
    prompt=prompt.format(question="東京タワー"),
    size="1024x1024",
    quality="standard",
    n=1,
)

print(response.data[0].url)
Image.open(io.BytesIO(requests.get(response.data[0].url).content))

以上。あまりLLMの知識がなくても簡単に生成AIモデルへの問合せができました。

既存のコードと組み合わせても無限の可能性がありそうなので何かアイデアがあれば実装してみたいですね。


Notebookの全文はこちら。