LangChainのQuickstartを読む (4) - LLMにツールの選択を任せる (エージェント)

本シリーズでは、LangChainの Quickstart の内容を元にLangChainの使い方について紹介します。

これまで作成してきたチェインは、全ての手順があらかじめ定義されており、
決められたステップに従って回答を生成するという仕組みでした。
今回は、ユーザの入力を元にLLMが適切な処理方法(ツール)を選択するエージェントについて見ていきます。

前々回でLangChainのドキュメントから情報を抽出する retriever を作成しました。
今回はこれを再度使用します。

import os
from langchain_openai import OpenAIEmbeddings
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter


# APIキーを環境変数に設定
with open('.openai') as f:
    os.environ['OPENAI_API_KEY'] = f.read().strip()

# Webページのコンテンツをドキュメント化
loader = WebBaseLoader("https://python.langchain.com/docs/get_started/introduction")
docs = loader.load()

# Embeddings読み込み
embeddings = OpenAIEmbeddings()

# ドキュメントを分割
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)

# 分割したドキュメントをembeddingsを用いてベクトル化し、ベクトルストアを作成
vector = FAISS.from_documents(documents, embeddings)

# retriever作成
retriever = vector.as_retriever()

今回、ユーザの質問がLangChainに関するものである場合にretrieverを使用し、
そうでない場合はインターネット検索を利用するエージェントを作成します。
どちらの処理を行うかがLLMによって決定されます。

create_retriever_toolを使用してドキュメント検索を行うツールを作成します。
第1引数にはretriever、第2引数にはツール名、第3引数にはツールの説明を記述します。
ツールの説明はLLMが処理を選択する際に使用されるため、詳しく書いておきます。

from langchain.tools.retriever import create_retriever_tool

retriever_tool = create_retriever_tool(
    retriever,
    "langchain_search",
    "LangChainに関する検索ツール。LangChainに関する質問はこれを使いましょう!",
)

次にインターネット検索を行うツールを作成します。
今回、Tavilyというサービスを利用します。

  1. Tavilyにアクセスして、アカウントを作成します。
    • 無料で作成できます。無料版の場合、毎月1000回のAPIコールが利用できます。
  2. アカウントを作成するとtvly-から始まるAPIキーが発行されます。
  3. 取得したAPIキーを作業用ディレクトリの.tavilyファイルに保存しておきます。

.tavilyファイルに保存したAPIキーを環境変数TAVILY_API_KEYに設定します。

with open('.tavily') as f:
    os.environ['TAVILY_API_KEY'] = f.read().strip()

TavilySearchResultsを使用してインターネット検索を行うツールを作成します。

from langchain_community.tools.tavily_search import TavilySearchResults

search = TavilySearchResults()

最後に、これまで作成したツールを使用するエージェントを作成します。

LangChain Hubにアップロードされているテンプレートを使用するため、
以下コマンドでlangchainhubをインストールします。

pip install langchainhub

以下のようにしてエージェントを作成します。

from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor

# 使用するツールのリスト
tools = [retriever_tool, search]

# テンプレートをLangChain Hubから取得
template = hub.pull("hwchase17/openai-functions-agent")

# エージェントを作成
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
agent = create_openai_functions_agent(llm, tools, template)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

agent_executorinvokeメソッドを使ってエージェントに質問します。

agent_executor.invoke({"input": "LangChainとは何でしょうか?"})
  • 実行ログ

    > Entering new AgentExecutor chain...
    
    Invoking: `langchain_search` with `{'query': 'LangChain'}`
    
    
    Introduction | 🦜️🔗 LangChain
    
    Skip to main contentLangChain v0.2 is coming soon! Preview the new docs here.ComponentsIntegrationsGuidesAPI ReferenceMorePeopleVersioningContributingTemplatesCookbooksTutorialsYouTube🦜️🔗LangSmithLangSmith DocsLangServe GitHubTemplates GitHubTemplates HubLangChain HubJS/TS Docs💬SearchGet startedIntroductionQuickstartInstallationUse casesQ&A with RAGExtracting structured outputChatbotsTool use and agentsQuery analysisQ&A over SQL + CSVMoreExpression LanguageGet startedRunnable interfacePrimitivesAdvantages of LCELStreamingAdd message history (memory)MoreEcosystem🦜🛠️ LangSmith🦜🕸️LangGraph🦜️🏓 LangServeSecurityGet startedOn this pageIntroductionLangChain is a framework for developing applications powered by large language models (LLMs).LangChain simplifies every stage of the LLM application lifecycle:Development: Build your applications using LangChain's open-source building blocks and components. Hit the ground running using third-party integrations and Templates.Productionization: Use LangSmith to inspect, monitor and evaluate your chains, so that you can continuously optimize and deploy with confidence.Deployment: Turn any chain into an API with LangServe.Concretely, the framework consists of the following open-source libraries:langchain-core: Base abstractions and LangChain Expression Language.langchain-community: Third party integrations.Partner packages (e.g. langchain-openai, langchain-anthropic, etc.): Some integrations have been further split into their own lightweight packages that only depend on langchain-core.langchain: Chains, agents, and retrieval strategies that make up an application's cognitive architecture.langgraph: Build robust and stateful multi-actor applications with LLMs by modeling steps as edges and nodes in a graph.langserve: Deploy LangChain chains as REST APIs.The broader ecosystem includes:LangSmith: A developer platform that lets you debug, test, evaluate, and monitor LLM applications and seamlessly integrates with LangChain.Get started​We recommend following our Quickstart guide to familiarize yourself with the framework by building your first LangChain application.See here for instructions on how to install LangChain, set up your environment, and start building.noteThese docs focus on the Python LangChain library. Head here for docs on the JavaScript LangChain library.Use cases​If you're looking to build something specific or are more of a hands-on learner, check out our use-cases.
    
    They're walkthroughs and techniques for common end-to-end tasks, such as:Question answering with RAGExtracting structured outputChatbotsand more!Expression Language​LangChain Expression Language (LCEL) is the foundation of many of LangChain's components, and is a declarative way to compose chains. LCEL was designed from day 1 to support putting prototypes in production, with no code changes, from the simplest “prompt + LLM” chain to the most complex chains.Get started: LCEL and its benefitsRunnable interface: The standard interface for LCEL objectsPrimitives: More on the primitives LCEL includesand more!Ecosystem​🦜🛠️ LangSmith​Trace and evaluate your language model applications and intelligent agents to help you move from prototype to production.🦜🕸️ LangGraph​Build stateful, multi-actor applications with LLMs, built on top of (and intended to be used with) LangChain primitives.🦜🏓 LangServe​Deploy LangChain runnables and chains as REST APIs.Security​Read up on our Security best practices to make sure you're developing safely with LangChain.Additional resources​Components​LangChain provides standard, extendable interfaces and integrations for many different components, including:Integrations​LangChain is part of a rich ecosystem of tools that integrate with our framework and build on top of it. Check out our growing list of integrations.Guides​Best practices for developing with LangChain.API reference​Head to the reference section for full documentation of all classes and methods in the LangChain and LangChain Experimental Python packages.Contributing​Check out the developer's guide for guidelines on contributing and help getting your dev environment set up.Help us out by providing feedback on this documentation page:NextIntroductionGet startedUse casesExpression LanguageEcosystem🦜🛠️ LangSmith🦜🕸️ LangGraph🦜🏓 LangServeSecurityAdditional resourcesComponentsIntegrationsGuidesAPI referenceContributingCommunityDiscordTwitterGitHubPythonJS/TSMoreHomepageBlogYouTubeCopyright © 2024 LangChain, Inc.LangChainは、大規模な言語モデル(LLM)を活用したアプリケーションを開発するためのフレームワークです。LangChainは、LLMアプリケーションライフサイクルの各段階を簡素化します。具体的には、LangChainは以下のオープンソースライブラリで構成されています:
    
    - langchain-core: 基本抽象化とLangChain Expression Language
    - langchain-community: サードパーティーの統合
    - langchain: アプリケーションの認知アーキテクチャを構成するチェーン、エージェント、およびリトリーバル戦略
    - langgraph: グラフ内のエッジとノードとしてステップをモデル化することで、LLMを使用した堅牢で状態を持つマルチアクターアプリケーションを構築
    - langserve: LangChainチェーンをREST APIとして展開
    
    LangChainの広範なエコシステムには、LangSmithやLangGraphなどの関連ツールも含まれています。LangChainを使用することで、LLMアプリケーションの開発、本番環境への展開、デプロイメントを容易に行うことができます。
    
    > Finished chain.
    
  • 実行結果

    {'input': 'LangChainとは何でしょうか?',
     'output': 'LangChainは、大規模な言語モデル(LLM)を活用したアプリケーションを開発するためのフレームワークです。LangChainは、LLMアプリケーションライフサイクルの各段階を簡素化します。具体的には、LangChainは以下のオープンソースライブラリで構成されています:\n\n- langchain-core: 基本抽象化とLangChain Expression Language\n- langchain-community: サードパーティーの統合\n- langchain: アプリケーションの認知アーキテクチャを構成するチェーン、エージェント、およびリトリーバル戦略\n- langgraph: グラフ内のエッジとノードとしてステップをモデル化することで、LLMを使用した堅牢で状態を持つマルチアクターアプリケーションを構築\n- langserve: LangChainチェーンをREST APIとして展開\n\nLangChainの広範なエコシステムには、LangSmithやLangGraphなどの関連ツールも含まれています。LangChainを使用することで、LLMアプリケーションの開発、本番環境への展開、デプロイメントを容易に行うことができます。'}
    
agent_executor.invoke({"input": "今日の東京の天気は?"})
  • 実行ログ

    > Entering new AgentExecutor chain...
    
    Invoking: `tavily_search_results_json` with `{'query': '東京の今日の天気'}`
    
    
    [{'url': 'https://tenki.jp/forecast/3/16/', 'content': '東京都の今日の天気は、昼ごろまで雨が降りそうで、最高気温は22度前後です。明日は荒天のち黄砂飛来で、週末は気温が急上昇します。'}, {'url': 'https://weathernews.jp/onebox/35.691667/139.750000/q=東京&v=7568ec9017b1ee619b719b2e27bb2222ff3533c3d047419f40d2980258c0a799&temp=c&lang=ja', 'content': '午後20%\n日差しに暖かさを感じそう\n明日は晴れて、日向では少し暖かさを感じられそうです。朝晩は冷えるので、体調を崩さないようにお気を付けください。洗濯など日差しの有効活用がオススメです。\n5分ごと\n1時間ごと\n時\n分\n天気\n18時\n・\n星はっきり\n40\n星はっきり\n・\n星はっきり\n50\n星はっきり\n・\n星はっきり\n19時\n00\n星はっきり\n・\n星はっきり\n10\n星はっきり\n・\n星はっきり\n20\n星はっきり\n・\n星はっきり\n30\n星はっきり\n日\n時\n天気\n降水\n気温\n風\n26日(火)\n19\n0\n8℃\n0m\n20\n0\n8℃\n0m\n21\n0\n8℃\n1m\n22\n0\n7℃\n1m\n23\n0\n6℃\n2m\n27日(水)\n0\n0\n6℃\n2m\n1\n0\n6℃\n2m\n2\n0\n5℃\n2m\n3\n0\n5℃\n2m\n4\n0\n6℃\n2m\n5\n0\n6℃\n2m\n6\n0\n6℃\n3m\n7\n0\n6℃\n3m\n8\n0\n8℃\n2m\n9\n0\n8℃\n2m\n10\n0\n10℃\n2m\n11\n0\n11℃\n2m\n12\n0\n12℃\n2m\n13\n0\n13℃\n2m\n14\n0\n13℃\n2m\n15\n0\n13℃\n2m\n16\n0\n11℃\n2m\n17\n0\n10℃\n2m\n18\n0\n9℃\n2m\n19\n0\n8℃\n2m\n20\n0\n8℃\n2m\n21\n0\n7℃\n2m\n22\n0\n7℃\n2m\n23\n0\n6℃\n2m\n28日(木)\n0\n0\n6℃\n2m\n1\n0\n6℃\n2m\n2\n0\n6℃\n2m\n3\n0\n6℃\n2m\n4\n0\n5℃\n2m\n5\n0\n5℃\n2m\n6\n0\n4℃\n2m\n7\n0\n4℃\n2m\n8\n0\n4℃\n2m\n9\n0\n5℃\n2m\n10\n0\n6℃\n2m\n11\n0\n7℃\n2m\n12\n0\n8℃\n2m\n13\n0\n9℃\n2m\n14\n0\n10℃\n2m\n15\n0\n10℃\n2m\n16\n0\n8℃\n2m\n17\n0\n8℃\n2m\n18\n0\n7℃\n1m\n19\n0\n7℃\n1m\n20\n0\n7℃\n1m\n21\n0\n6℃\n1m\n22\n0\n6℃\n1m\n23\n0\n6℃\n2m\n29日(金)\n0\n0\n5℃\n2m\n1\n0\n5℃\n1m\n2\n0\n4℃\n1m\n3\n0\n4℃\n1m\n4\n0\n3℃\n1m\n5\n0\n3℃\n1m\n6\n0\n4℃\n1m\n7\n0\n3℃\n1m\n8\n0\n5℃\n1m\n9\n0\n7℃\n1m\n10\n0\n10℃\n2m\n11\n0\n12℃\n2m\n12\n0\n13℃\n2m\n13\n0\n14℃\n2m\n14\n0\n14℃\n2m\n15\n0\n14℃\n2m\n16\n0\n13℃\n2m\n17\n0\n11℃\n2m\n18\n0\n10℃\n2m\n日差しに暖かさを感じそう\n明日は晴れて、日向では少し暖かさを感じられそうです。朝晩は冷えるので、体調を崩さないようにお気を付けください。洗濯など日差しの有効活用がオススメです。\n週間(10日間)\n日\n天気\n最高\n最低\n降水\n27(水)\n13℃\n5℃\n20%\n28(木)\n10℃\n4℃\n30%\n29(金)\n14℃\n3℃\n20%\n30(土)\n13℃\n5℃\n20%\n31(日)\n14℃\n5℃\n60%\n1(月)\n11℃\n6℃\n30%\n2(火)\n12℃\n4℃\n20%\n3(水)\n13℃\n4℃\n60%\n4(木)\n14℃\n7℃\n60%\n5(金)\n12℃\n5℃\n40%\n大晦日は雨や体感変化に注意\n晴れる日が多くなり、年末年始の準備が捗りそうです。空気が乾燥するため、火の元には十分ご注意を。大晦日は雨が降り、寒さが緩みます。体感変化に注意してください。\nお天気ニュース\n明日27日(水)の天気予報\u3000北日本は吹雪に注意\u3000関東など太平洋側は穏やかな晴天\n2023.12.26 17:01\n年末年始は高温傾向\u3000積雪エリアは融雪に注意\n2023.12.26 17:31\n年末年始の天気\u3000大晦日は広範囲で雨\u3000気温は平年より高め\n2023.12.26 18:00\nお天気ニュースをもっと読む →\nお天気ニュース\n明日27日(水)の天気予報\u3000北日本は吹雪に注意\u3000関東など太平洋側は穏やかな晴天\n2023.12.26 17:01\n年末年始は高温傾向\u3000積雪エリアは融雪に注意\n2023.12.26 17:31\n年末年始の天気\u3000大晦日は広範囲で雨\u3000気温は平年より高め\n2023.12.26 18:00\nお天気ニュースをもっと読む →\n東京付近の天気\n雨雲レーダー\n地図を拡大\n今の天気\nグラフ\n18:10\n空の写真\n空の写真をもっと見る\nライブ動画番組\n【ライブ放送中】最新地震・気象情報\u3000ウェザーニュースLiVE\n東京付近の観測値\n(℃)\n(m/s)\n(mm/h)\n(分)\n続きを見る\n東京都の都市の天気予報\n周辺の都道府県\nお天気ニュース\n新潟・長岡で朝虹出現\u3000今日の北陸は雨が降りやすい\n2023.12.26 08:00\n飾ると縁起が悪い日とは?\u3000正月飾りの意味と正しい飾り方\n2023.12.26 11:10\n週間天気\u3000寒さ緩む年末年始\u3000大晦日は全国的に雨で荒天か\n2023.12.26 15:00\n大晦日は広範囲で雨\u3000積雪エリアは融雪に注意\n2023.12.26 15:04\n12月27日(水)\u3000各地の気温変化と最適な服装\n2023.12.26 16:55\nお天気ニュースをもっと読む →\nいまおすすめのメニュー\n雨雲レーダー\n雨雲の動きと予想を確認\nウェザーリポート\n全国から届くお天気リポート\n防災・減災メニュー\n天気メニュー\n自然・季節・レジャー情報\n予報精度向上の取り組みについて\n東京付近の空の写真\nウェザーニュース {{item.cityname}}\n天気予報を検索\n天気\n防災・減災\n自然・季節・健康\n便利なメニュー\nほか全メニュー\n東京の天気予報\n5分ごと\n1時間ごと\n今日明日\n週間天気\n日\n天気\n気温\n降水\n確率\n今日\n12月26日 (火)\n最高13℃\n最低3℃\n午前-%\n午後0%\n明日\n12月27日 (水)\n最高13℃\n最低5℃\n午前0%\n'}, {'url': 'https://tenki.jp/', 'content': '日本気象協会公式の天気予報専門メディアです。市区町村別のピンポイントな天気予報に加え、専門的な気象情報、地震・津波などの防災情報を ...'}, {'url': 'https://weathernews.jp/onebox/tenki/tokyo/', 'content': '東京都千代田区の1時間毎の天気、気温、降水量、風速などを見ることができます。東京の週間天気予報や市区町村別の天気も確認できます。'}, {'url': 'https://weather.yahoo.co.jp/weather/jp/13/4410.html', 'content': '東京は3月28日(木)曇り一時雨で14℃から8℃の気温です。明日(金)は雨のち晴れで22℃から12℃の気温で、南の風が強くなります。注意報は雷、強風、波浪が発表されています。'}]東京の今日の天気は、昼ごろまで雨が降りそうで、最高気温は22度前後です。明日は荒天のち黄砂飛来で、週末は気温が急上昇するようです。詳細な情報は[こちら](https://tenki.jp/forecast/3/16/)をご覧ください。
    
    > Finished chain.
    
  • 実行結果

    {'input': '今日の東京の天気は?',
     'output': '東京の今日の天気は、昼ごろまで雨が降りそうで、最高気温は22度前後です。明日は荒天のち黄砂飛来で、週末は気温が急上昇するようです。詳細な情報は[こちら](https://tenki.jp/forecast/3/16/)をご覧ください。'}
    

以下のように会話履歴を考慮して回答を生成することも出来ます。

from langchain_core.messages import HumanMessage, AIMessage

chat_history = [
    HumanMessage(content="LCELとは何でしょうか?"),
    AIMessage(content="LangChain Expression Languageです。")
]
agent_executor.invoke({
    "chat_history": chat_history,
    "input": "それについて詳しく教えて下さい。"
})
  • 実行ログ

    > Entering new AgentExecutor chain...
    
    Invoking: `langchain_search` with `{'query': 'LCEL'}`
    
    
    They're walkthroughs and techniques for common end-to-end tasks, such as:Question answering with RAGExtracting structured outputChatbotsand more!Expression Language​LangChain Expression Language (LCEL) is the foundation of many of LangChain's components, and is a declarative way to compose chains. LCEL was designed from day 1 to support putting prototypes in production, with no code changes, from the simplest “prompt + LLM” chain to the most complex chains.Get started: LCEL and its benefitsRunnable interface: The standard interface for LCEL objectsPrimitives: More on the primitives LCEL includesand more!Ecosystem​🦜🛠️ LangSmith​Trace and evaluate your language model applications and intelligent agents to help you move from prototype to production.🦜🕸️ LangGraph​Build stateful, multi-actor applications with LLMs, built on top of (and intended to be used with) LangChain primitives.🦜🏓 LangServe​Deploy LangChain runnables and chains as REST APIs.Security​Read up on our Security best practices to make sure you're developing safely with LangChain.Additional resources​Components​LangChain provides standard, extendable interfaces and integrations for many different components, including:Integrations​LangChain is part of a rich ecosystem of tools that integrate with our framework and build on top of it. Check out our growing list of integrations.Guides​Best practices for developing with LangChain.API reference​Head to the reference section for full documentation of all classes and methods in the LangChain and LangChain Experimental Python packages.Contributing​Check out the developer's guide for guidelines on contributing and help getting your dev environment set up.Help us out by providing feedback on this documentation page:NextIntroductionGet startedUse casesExpression LanguageEcosystem🦜🛠️ LangSmith🦜🕸️ LangGraph🦜🏓 LangServeSecurityAdditional resourcesComponentsIntegrationsGuidesAPI referenceContributingCommunityDiscordTwitterGitHubPythonJS/TSMoreHomepageBlogYouTubeCopyright © 2024 LangChain, Inc.
    
    Skip to main contentLangChain v0.2 is coming soon! Preview the new docs here.ComponentsIntegrationsGuidesAPI ReferenceMorePeopleVersioningContributingTemplatesCookbooksTutorialsYouTube🦜️🔗LangSmithLangSmith DocsLangServe GitHubTemplates GitHubTemplates HubLangChain HubJS/TS Docs💬SearchGet startedIntroductionQuickstartInstallationUse casesQ&A with RAGExtracting structured outputChatbotsTool use and agentsQuery analysisQ&A over SQL + CSVMoreExpression LanguageGet startedRunnable interfacePrimitivesAdvantages of LCELStreamingAdd message history (memory)MoreEcosystem🦜🛠️ LangSmith🦜🕸️LangGraph🦜️🏓 LangServeSecurityGet startedOn this pageIntroductionLangChain is a framework for developing applications powered by large language models (LLMs).LangChain simplifies every stage of the LLM application lifecycle:Development: Build your applications using LangChain's open-source building blocks and components. Hit the ground running using third-party integrations and Templates.Productionization: Use LangSmith to inspect, monitor and evaluate your chains, so that you can continuously optimize and deploy with confidence.Deployment: Turn any chain into an API with LangServe.Concretely, the framework consists of the following open-source libraries:langchain-core: Base abstractions and LangChain Expression Language.langchain-community: Third party integrations.Partner packages (e.g. langchain-openai, langchain-anthropic, etc.): Some integrations have been further split into their own lightweight packages that only depend on langchain-core.langchain: Chains, agents, and retrieval strategies that make up an application's cognitive architecture.langgraph: Build robust and stateful multi-actor applications with LLMs by modeling steps as edges and nodes in a graph.langserve: Deploy LangChain chains as REST APIs.The broader ecosystem includes:LangSmith: A developer platform that lets you debug, test, evaluate, and monitor LLM applications and seamlessly integrates with LangChain.Get started​We recommend following our Quickstart guide to familiarize yourself with the framework by building your first LangChain application.See here for instructions on how to install LangChain, set up your environment, and start building.noteThese docs focus on the Python LangChain library. Head here for docs on the JavaScript LangChain library.Use cases​If you're looking to build something specific or are more of a hands-on learner, check out our use-cases.
    
    Introduction | 🦜️🔗 LangChainLangChain Expression Language(LCEL)は、LangChainの多くのコンポーネントの基盤であり、チェーンを構成するための宣言的な方法です。LCELは、LangChainの最も単純な「プロンプト+LLM」チェーンから最も複雑なチェーンまで、コードの変更なしにプロトタイプを本番環境に展開するために設計されています。LCELは、LangChainの様々なコンポーネントに標準で拡張可能なインターフェースと統合を提供し、LangChainのPythonパッケージのすべてのクラスとメソッドの完全なドキュメントを参照するためのリファレンスセクションに移動してください。LangChainは、LangChainのフレームワークで開発されたアプリケーションをサポートするためのライブラリです。LangChainは、LLM(Large Language Models)によって動作するアプリケーションの開発、監視、評価、およびデプロイメントを簡素化します。LangChainのフレームワークは、langchain-core(基本抽象化とLangChain Expression Language)、langchain-community(サードパーティの統合)、パートナーパッケージ(例:langchain-openai、langchain-anthropicなど)などのオープンソースライブラリで構成されています。LangChainの広範なエコシステムには、LangSmith(LLMアプリケーションをデバッグ、テスト、評価、監視する開発者プラットフォーム)なども含まれています。LangChain Expression Language(LCEL)は、LangChainの重要な構成要素であり、LangChainのコンポーネントを組み合わせるための宣言的な方法です。LCELは、LangChainの多くの機能や利点を活用するための基盤となっています。
    
    > Finished chain.
    
  • 実行結果

    {'chat_history': [HumanMessage(content='LCELとは何でしょうか?'),
      AIMessage(content='LangChain Expression Languageです。')],
     'input': 'それについて詳しく教えて下さい。',
     'output': 'LangChain Expression Language(LCEL)は、LangChainの多くのコンポーネントの基盤であり、チェーンを構成するための宣言的な方法です。LCELは、LangChainの最も単純な「プロンプト+LLM」チェーンから最も複雑なチェーンまで、コードの変更なしにプロトタイプを本番環境に展開するために設計されています。LCELは、LangChainの様々なコンポーネントに標準で拡張可能なインターフェースと統合を提供し、LangChainのPythonパッケージのすべてのクラスとメソッドの完全なドキュメントを参照するためのリファレンスセクションに移動してください。LangChainは、LangChainのフレームワークで開発されたアプリケーションをサポートするためのライブラリです。LangChainは、LLM(Large Language Models)によって動作するアプリケーションの開発、監視、評価、およびデプロイメントを簡素化します。LangChainのフレームワークは、langchain-core(基本抽象化とLangChain Expression Language)、langchain-community(サードパーティの統合)、パートナーパッケージ(例:langchain-openai、langchain-anthropicなど)などのオープンソースライブラリで構成されています。LangChainの広範なエコシステムには、LangSmith(LLMアプリケーションをデバッグ、テスト、評価、監視する開発者プラットフォーム)なども含まれています。LangChain Expression Language(LCEL)は、LangChainの重要な構成要素であり、LangChainのコンポーネントを組み合わせるための宣言的な方法です。LCELは、LangChainの多くの機能や利点を活用するための基盤となっています。'}
    

関連記事