見出し画像

LangChain で ChatGPT API を試す

「LangChain」で「ChatGPT API」を試したので、まとめました。

【最新版の情報は以下で紹介】

1. ChatGPT API

「LangChain」のLLMは今まで「GPT-3」(text-davinci-003) が事実上の標準でしたが、今後は「ChatGPT API」(gpt-3.5-turbo) が標準になりそうです。「ChatGPT API」は「GPT-3」に比べて価格が 1/10 になりました。

2. Colabでの実行

Google Colabでの実行手順は、次のとおりです。

(1) パッケージのインストール。

# パッケージのインストール
!pip install langchain
!pip install openai

(2) 環境変数の準備。
以下のコードの <OpenAI_APIのトークン> にはOpenAI APIのトークンを指定します。(有料)

import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトークン>"

(3) OpenAIChatで質問応答。
「GPT-3」と「ChatGPT API」の違いは、「OpenAI」を「OpenAIChat」に変更するのみになります。

from langchain.llms import OpenAIChat
from langchain import PromptTemplate, LLMChain

# LLMの準備
llm = OpenAIChat(temperature=0)

# プロンプトテンプレートの準備
template = """Q: {question}

A: 一歩一歩、考えていきましょう。"""
prompt = PromptTemplate(
    template=template, 
    input_variables=["question"]
)

# チェーンの準備
llm_chain = LLMChain(
    prompt=prompt, 
    llm=llm
)

# チェーンの実行
question = "藤井聡太が生まれた年のワールドカップの優勝チームは?"
llm_chain.run(question)
\n\n藤井聡太が生まれた年は2002年です。その年のワールドカップは日韓共催で行われ、ブラジルが優勝しました。

3. プレフィックスメッセージ

「ChatGPT API」は、ユーザー入力の前に表示されるメッセージなど、プレフィックスメッセージのアイデアもサポートしています。これらをシステムメッセージとして使用して、LLM により多くのコンテキストを与えることができます。

(1) プレフィックスメッセージ付きのOpenAIChatで質問応答。
OpenAIChatの「prefix_messages」にプレフィックスメッセージを渡します。

# プレフィックスメッセージの準備
prefix_messages = [
    {"role": "system", "content": "あなたは一歩一歩考えて問題を解決するのが得意なアシスタントです。"}
]

# LLMの準備
llm = OpenAIChat(
    temperature=0, 
    prefix_messages=prefix_messages
)

# チェーンの準備
llm_chain = LLMChain(
    prompt=prompt, 
    llm=llm
)

# チェーンの実行
question = "藤井聡太が生まれた年のワールドカップの優勝チームは?"
llm_chain.run(question)
藤井聡太さんは2002年生まれですので、2002年のワールドカップの優勝チームを調べる必要があります。2002年のワールドカップは韓国と日本で共同開催され、ブラジルが優勝しました。つまり、答えは「ブラジル」です。



この記事が気に入ったらサポートをしてみませんか?