<目次>
(1-1) やりたいこと
(1-2) LangChainの概要
(1-3) LangChainのHello World
(1-3-0) STEP0:前提事項
(1-3-1) STEP1:パッケージのインストール
(1-3-2) STEP2:環境構築
(1-3-3) STEP3:疎通①「LLMから応答を取得する」
(1-3-4) STEP4:疎通②「PromptTemplate」の活用
(1-3-5) STEP5:疎通③「ChatPromptTemplate」の活用
(1) LangChainとは?概要やサンプルプログラムをご紹介
(1-1) やりたいこと
(1-2) LangChainの概要
(1-3) LangChainのHello World
(参考:https://python.langchain.com/en/latest/modules/models/chat/integrations/openai.html)
(1-3-0) STEP0:前提事項
(1-3-1) STEP1:パッケージのインストール
- > pip install langchain

(1-3-2) STEP2:環境構築
- > pip install openai

- > pip install python-dotenv

(1-3-3) STEP3:疎通①「LLMから応答を取得する」
- import os
- from dotenv import load_dotenv
- from langchain.chat_models import ChatOpenAI
- from langchain.schema import (AIMessage, HumanMessage, SystemMessage)
- # 環境変数読み込み
- load_dotenv()
- #OpenAIの接続情報など
- api_key = os.environ.get('OPEN_AI_KEY')
- def main():
- # 言語モデル(OpenAIのチャットモデル)のラッパークラスをインスタンス化
- openai = ChatOpenAI(
- model="gpt-3.5-turbo",
- openai_api_key=api_key,
- temperature=0.0
- )
- # モデルにPrompt(入力)を与えCompletion(出力)を取得する
- # SystemMessage: OpenAIに事前に連携したい情報。キャラ設定や前提知識など。
- # HumanMessage: OpenAIに聞きたい質問
- response = openai([
- SystemMessage(content="あなたは沖縄出身です。沖縄の方言で返答してください。"),
- HumanMessage(content="調子はどうですか?")
- ])
- print(response)
- if __name__ == "__main__":
- main()
- OPEN_AI_KEY='xxxx'

(1-3-4) STEP4:疎通②「PromptTemplate」の活用
- import os
- from dotenv import load_dotenv
- from langchain.chat_models import ChatOpenAI
- from langchain.prompts import PromptTemplate
- from langchain.schema import (AIMessage, HumanMessage, SystemMessage)
- # 環境変数読み込み
- load_dotenv()
- #OpenAIの接続情報など
- api_key = os.environ.get('OPEN_AI_KEY')
- def main():
- # 言語モデル(OpenAIのチャットモデル)のラッパークラスをインスタンス化
- openai = ChatOpenAI(
- model="gpt-3.5-turbo",
- openai_api_key=api_key,
- temperature=0.0
- )
- ############# 追記START #############
- prompt = PromptTemplate(
- input_variables=["prefectures"],
- template="あなたは{prefectures}出身です。{prefectures}の方言で返答してください。",
- )
- ############# 追記END #############
- # モデルにPrompt(入力)を与えCompletion(出力)を取得する
- # SystemMessage: OpenAIに事前に連携したい情報。キャラ設定や前提知識など。
- # HumanMessage: OpenAIに聞きたい質問
- response = openai([
- ############# 修正START #############
- # SystemMessage(content="あなたは沖縄出身です。沖縄の方言で返答してください。"),
- SystemMessage(content=prompt.format(prefectures=input("都道府県名を入力してください : "))),
- ############# 修正END #############
- HumanMessage(content="調子はどうですか?")
- ])
- print(response)
- if __name__ == "__main__":
- main()

(1-3-5) STEP5:疎通③「ChatPromptTemplate」の活用
- import os
- from dotenv import load_dotenv
- from langchain.chat_models import ChatOpenAI
- from langchain.prompts.chat import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate)
- # 環境変数読み込み
- load_dotenv()
- #OpenAIの接続情報など
- api_key = os.environ.get('OPEN_AI_KEY')
- def main():
- # 言語モデル(OpenAIのチャットモデル)のラッパークラスをインスタンス化
- llm = ChatOpenAI(
- model="gpt-3.5-turbo",
- openai_api_key=api_key,
- temperature=0.0
- )
- # プロンプトのテンプレート生成
- system_template = "あなたは{prefectures}出身です。{prefectures}の方言で返答してください。"
- system_message_prompt = SystemMessagePromptTemplate.from_template(system_template)
- human_template = "{text}"
- human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
- chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
- # モデルにPrompt(入力)を与えCompletion(出力)を取得する
- response = llm(chat_prompt.format_prompt(
- prefectures=input("都道府県名を入力してください : "),
- text="調子はどうですか?").to_messages()
- )
- print(response)
- if __name__ == "__main__":
- main()
