Python版のLangChainを使って OpenAIのAPIを呼ぶ方法をまとめてみました。
概要
このブログでは、「LangChain」という「大規模言語モデル」 (LLM : Large language model) を利用するアプリ開発を支援するフレームワークをさわってみようと思います。このLangChainを使えばChatGPTで使っているGPT3.5やGPT4のAPIを簡単に呼び出すことが可能です
LangChainの公式ドキュメントとGithubのLink
・https://langchain-langchain.vercel.app/docs/get_started/introduction.html
・https://github.com/hwchase17/langchain
インストール
私の環境(M1 Mac)でのインストール手順は、次のとおりです。pythonに関してはpyenvを使ってインストールした後に、venvで仮想環境にしています。
python のインストール
-- brew で pyenvをインストール --
brew install pyenv
-- pyenv で python をインストール
pyenv install 3.11.4
pyenv global 3.11.4
-- 作業用のフォルダでvenv
python -m venv ai-chat.venv
. ./ai-chat.venv/bin/activate
続いて、openaiとlangchainのインストールです。
pip install openai
pip install langchain
これでインストール完了です
APIを呼んでみよう
OpenAIのAPIを呼び出す準備ができたので、pythonで呼び出すプログラムを書いてみましょう。ここではソースをファイルに書くのではなく、コンソールから直接python shellの中で書いています。langchainのクイックスタートには、2通りの方法が書いてあるのでそれぞれ試してみます。
コンソールで環境変数
コンソールにAPIキーをこんな感じで。
export OPENAI_API_KEY="ここにあなたのAPIKEY"
その1 LLMSで呼ぶ
こっちの方法だと、三行でお手軽に呼び出せます。
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.5)
print(llm.predict("プログラマーに必要な心構えを一つ教えてください。"))
=> 「柔軟な考え方を心がける」
この方法はモデルにgpt-3.5などを指定すると下記のような警告がでるので、gpt-3.5をもう一方の呼び方で試していきます。何もしていない場合、デフォルトは “text-davinci-003” が使われてそうでした(たぶん)。
You are trying to use a chat model. This way of initializing it is no longer supported. Instead, please use: `from langchain.chat_models import ChatOpenAI`
その2 chat_models で呼ぶ
OpenAI のモデル “gpt-3.5-turbo” を呼んでみます。こっちは、import するものがいつくか増えていますね。Chatの場合、メッセージに種類が出てくるのでその分の行数が増えています。
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
AIMessage,
HumanMessage,
SystemMessage
)
chat = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')
print(chat.predict_messages([HumanMessage(content="プログラマーに必要な社会人基礎力を一つ教えてください。")]))
=> 「コミュニケーション能力です。プログラマーは、単独で作業することが多いため、自分の考えを正確に伝えることが重要です。また、チームで開発を行う場合には、他のメンバーとのコミュニケーションが不可欠です。プログラマーは、自分の考えを相手に伝えるだけでなく、相手の意見を聞き取り、受け入れることも大切です。コミュニケーション能力が高いプログラマーは、チームの協力関係を築き、プロジェクトの成功につながります。」
この例では、HumanMessage を利用しました。この辺りはこんな感じになっているようです。
[AIMessage] 人工知能モデル(GPT-3.5など)が発するメッセージを示します。AIは一般的に自律的な知識や能力を持ち、プログラミングや情報へのアクセスを通じて対話を行います。AIは特定の個別の知識を持たないため、それ自体の経験や感情を持ちません。 [SystemMessage] AIモデルをホスティングし、対話のフローを管理するシステムまたはプラットフォームを指します。Systemは、ユーザーからの入力を受け取り、適切なAIモデルに渡す役割を果たします。このラベルは、AIモデル自体ではなく、AIを動かすシステムに関連するメッセージに使用されます。 [HumanMessage] ユーザーまたは人間が発するメッセージを示します。これは、対話の相手であるユーザーからの入力や質問、要求などを表します。 |