目次

  1. 基本構成
  2. メッセージ部分
  3. ストリーミング出力
  4. 履歴を組み込む場合

基本構成

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages(
[
# {"キー": "バリュー"}で穴埋めするとメッセージ部分になる
# ("system", "メッセージ"), ("user", "メッセージ")などが入る
]
)

prompt_value = prompt.invoke({"キー": "バリュー"})

model = ChatOpenAI(model="gpt-4o-mini", temperature = 0)
ai_message = model.invoke(prompt_value)
print(ai_message)

メッセージ部分

穴埋めされて変換された後のメッセージ部分は次のような形のイメージ

from langchain_core.messages import SystemMessage, HumanMessage, AIMessage

messages = [
SystemMessage("文章"),
HumanMessage("文章"),
AIMessage("文章"),
HumanMessage("文章"),
]

ストリーミング出力

printの行を次に差し替え.

for chunk in model.stream(messages):
print(chunk.content, end = "", flush = True)

履歴を組み込む場合

MessagesPlaceholderをインポートして,メッセージに履歴となる部分を挿入する.
_

from langchain_core.prompts import MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
[
("system", "システムへのメッセージ"),
MessagesPlaceholder("chat_history", optional = True),
("human", "{input}")
]
)

キーとしたchat_history でインボークする.

prompt_value = prompt.invoke(
{
"chat_history": [
HumanMessage("文章"),
AIMessage("応答"),
],
"input": "質問文",
}
)