# langchain_core.output_parsersモジュールからStrOutputParserクラスをインポート
from langchain_core.output_parsers import StrOutputParser
# langchain_core.promptsモジュールからChatPromptTemplateクラスをインポート
from langchain_core.prompts import ChatPromptTemplate
# langchain_openaiモジュールからChatOpenAIクラスをインポート
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_template("tell me a short joke about {topic}")
model = ChatOpenAI(model="gpt-4")
output_parser = StrOutputParser()
chain = prompt | model | output_parser
chain.invoke({"topic": "ice cream"})
このコードの実行結果は以下のようになります。
"Why don't ice creams ever get invited to parties?\n\nBecause they always drip when things heat up!"
from langchain_community.vectorstores import DocArrayInMemorySearch
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_openai.chat_models import ChatOpenAI
from langchain_openai.embeddings import OpenAIEmbeddings
vectorstore = DocArrayInMemorySearch.from_texts(
["harrison worked at kensho", "bears like to eat honey"],
embedding=OpenAIEmbeddings(),
)
retriever = vectorstore.as_retriever()
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI()
output_parser = StrOutputParser()
setup_and_retrieval = RunnableParallel(
{"context": retriever, "question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | model | output_parser
chain.invoke("where did harrison work?")
この記事では、LCELの使い方について解説しました。LangChain Expression Language (LCEL) は、LangChain固有のチェーンを簡単に構築するための宣言型のコードの記述方法です。プロンプトやLLMなどのコンポーネントを|で繋げて書き、処理の連鎖(Chain)を実装します。LCELの使い方を知り、大規模言語モデルを用いたアプリケーション開発に役立てましょう。