3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

50代ITエンジニアが学ぶLangChainその1 - LangChainの基礎とイントロダクション

Last updated at Posted at 2025-03-08

タイトルに大きな意味はありませんが、LangChainを勉強している50代のおっさんもいるんだよということを伝えたくなりました。

Langchainの基礎

LangChainが取り組もうとする主なニーズがいくつか存在します:

  1. 標準化されたコンポーネントインタフェース: AIアプリケーションにおけるモデルと関連コンポーネントの数は増加し続け、結果として、開発者が学び、活用する必要のあるAPIの種類は膨大なものになっています。この多様性は、開発者がアプリケーションを構築する際にプロバイダーを切り替えたり、コンポーネントを組み合わせることを困難にします。LangChainはキーとなるコンポーネントに対する標準インタフェースを公開するので、プロバイダー間での切り替えが容易となります。
  2. オーケストレーション: アプリケーションは複雑になり、複数のコンポーネントやモデルを組み合わせることになり、多様なタスクを達成できるコントロールフローにこれらの要素を効率的に接続する要件が高まっています。そのようなアプリケーションの構築においてはオーケストレーションが重要となります。
  3. 観測可能性と評価: アプリケーションはさらに複雑になると、それらの内部で何が起きているのかを理解することが非常に困難になります。さらに、選択のパラドクスによって開発のペースが制限されることもあり得ます。例えば、多くの場合において開発者は、プロンプトをどのようにエンジアリングするのか、どのLLMが最も精度、レイテンシー、コストのバランスを取るのかに迷うことになります。観測可能性と評価は、開発者が自身のアプリケーションをモニタリングし、自信を持ってこのような質問に迅速に回答する助けとなります。

Why LangChain? | 🦜️🔗 LangChain | [翻訳] なぜLangChainなのか? #langchain - Qiita

以降では以下のサンプルをウォークスルーします。

  1. Langchainイントロダクション
  2. シンプルなLLMアプリケーションの構築
  3. チャットボットの構築
  4. RAG
  5. エージェントの構築

使ったノートブックはこちらで公開しています。

LangChainイントロダクション

Introduction | 🦜️🔗 LangChain

LangChainは、大規模言語モデル(LLM)を活用したアプリケーションを開発するためのフレームワークです。

LangChainは、LLMアプリケーションのライフサイクルのあらゆる段階を簡素化します:

  • 開発: LangChainのオープンソースコンポーネントサードパーティ連携を使用してアプリケーションを構築します。LangGraphを使用して、ストリーミングと人間のループサポートを備えたステートフルエージェントを構築します。
  • プロダクション化: LangSmithを使用してアプリケーションを検査、監視、評価し、継続的に最適化して自信を持ってデプロイできます。
  • デプロイメント: LangGraphプラットフォームを使用して、LangGraphアプリケーションを本番対応のAPIおよびアシスタントに変換します。

LangChainは、大規模言語モデルや埋め込みモデル、ベクトルストアなどの関連技術のための標準インターフェースを実装し、数百のプロバイダーと統合しています。詳細はintegrationsのページをご覧ください。

以降はDatabricksでサンプルを動かしていきます。

%pip install -qU langchain[openai] databricks-langchain
%restart_python

OpenAI

OpenAIのAPIキーはシークレットに格納しているものを使います。

import os
os.environ["OPENAI_API_KEY"] = dbutils.secrets.get("demo-token-takaaki.yayoi", "openai_api_key")

LLMの動作確認をします。

from langchain.chat_models import init_chat_model

model = init_chat_model("gpt-4o-mini", model_provider="openai")
model.invoke("こんにちは、世界!")
AIMessage(content='こんにちは!どんなことについてお話ししましょうか?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 11, 'total_tokens': 25, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_06737a9306', 'finish_reason': 'stop', 'logprobs': None}, id='run-f28b4b9c-269f-40d0-9e4c-8112d93e2df9-0', usage_metadata={'input_tokens': 11, 'output_tokens': 14, 'total_tokens': 25, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})

Databricksの場合は、MLflow Tracingでトレースを確認できます。

Screenshot 2025-03-08 at 13.26.22.png

Databricks

Databricksでプログラムを実行する際は、特に設定の必要なしに基盤モデルAPIのモデルを呼び出すことができます。

from databricks_langchain import ChatDatabricks

model = ChatDatabricks(endpoint="databricks-meta-llama-3-3-70b-instruct")
model.invoke("こんにちは、世界!")
AIMessage(content='こんにちは!あなたの日はどうですか?', additional_kwargs={}, response_metadata={'prompt_tokens': 14, 'completion_tokens': 11, 'total_tokens': 25}, id='run-ddf0ca84-b217-42d6-9801-0770ee09ab8c-0')

Databricksの場合は別のモジュールを使っていますが、OpenAIやAnthropic、VertexAIなどであればすべてinit_chat_modelの引数を変えるだけでアクセスすることができます。このようなフレームワークがないと、それぞれのモデルプロバイダーのAPIを理解して使い分けなくてはならない訳ですね。

アーキテクチャ

LangChainフレームワークは複数のオープンソースライブラリで構成されています。詳細はアーキテクチャページをご覧ください。

  • langchain-core: チャットモデルやその他のコンポーネントの基本的な抽象化。
  • 統合パッケージ(例: langchain-openai, langchain-anthropicなど): 重要な統合は軽量パッケージに分割され、LangChainチームと統合開発者によって共同で管理されています。
  • langchain: アプリケーションの認知アーキテクチャを構成するチェーン、エージェント、および検索戦略。
  • langchain-community: コミュニティによって管理されているサードパーティの統合。
  • langgraph: 永続性、ストリーミング、その他の重要な機能を備えた本番対応アプリケーションにLangChainコンポーネントを組み合わせるためのオーケストレーションフレームワーク。LangGraphのドキュメントを参照してください。

こちらに続きます。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?