<目次>
(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()
