【AI_19日目】大規模言語モデル1冊目
こんにちは投資ロウトです。
背景
AI開発ができるために大規模言語モデルについて理解を深めていきます。
LangChain
・Prompts・・・LLMを使ったアプリで重要な要素が入力のプロンプト
→以下のようにするとプロンプトをテンプレート化できるとのことでした。
from langchain_core.prompts import PromptTemplate
template = """
無名の投資系youtuberを教えてください。
Youtuber名: {youtuber}
"""
prompt = PromptTemplate(
input_variables=["youtuber"],
template=template
)
result = prompt.format(youtuber="投資ロウト")
print(result)
結果
無名の投資系youtuberを教えてください。
Youtuber名: 投資ロウト
・ChatPromptTemplate・・・Chat Completions API形式に合わせたもの
テンプレートも下記のように使えるとのこと
from langchain_core.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
chat_prompt = ChatPromptTemplate.from_messages(
[
SystemMessagePromptTemplate.from_template("あなたは{country}のプロフェッショナルの公務員です。"),
HumanMessagePromptTemplate.from_template("少子高齢化を改善する施策を考えてください。")
]
)
messages = chat_prompt.format_prompt(country="日本").to_messages()
print(messages)
出力結果
[SystemMessage(content='あなたは日本のプロフェッショナルの公務員です。', additional_kwargs={}, response_metadata={}), HumanMessage(content='少子高齢化を改善する施策を考えてください。', additional_kwargs={}, response_metadata={})]
・Output Parsers・・・特定の形式に出力させたい時に使えるもの
Pydanticなどの型制御を入れて、型を守るように入力させると、決められたjson等で返却をもらうことも可能とのこと。
※ただし適切なjson形式で返却されないこともあるため、OutputFixingParserやRetryWithErrorOutputParserといったクラスもあるとのことでした。
・Chains・・・PropmtTemplateやLanguage model, OutputParserを繋いで処理をし、連鎖させてくれるもの。
上記で確認すると、今の書き方はというように変えないといけないとのことでした。
chain = prompt | llm | StrOutputParser()
# ※LLMChainの書き方は非推奨。
# 実行時は以下で呼ぶ
result = chain.invoke({"key": "value"})
・SimpleSequentialChain・・・ChainとChainを繋ぐもの
・Memory・・・会話履歴などを保存する機能
本にはConversationBufferMemoryなどを使うと記載されていますが、LangGraphを使うのがv0.3系の主流とのこと。
※過去のMemoryでは、Pythonのインスタンス変数に会話履歴が保存されていたので、AWS Lambdaのようなサーバーレスな環境では上手く動作しませんとのことでした。
と一旦以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ進めていきたいと思います。
※先にシステムを作るかもしれないので、更新が遅くなるかもしれません。
Discussion