1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

最近、Difyを学んでみたんですが、GUIベースの開発だとやっぱり効率が悪いなという感じがしました。他に何かいいのないかなぁと探していたところ、LangChainがいいと聞いたので学んでいきます!何事もまずは触ってみるところから始めていきます!
いつもの通り、座学はChatGPTに教えてもらい、その後Hands-onで手を動かしながら学んでいきます!

LangChain とは?

LangChain は LLM(大規模言語モデル)アプリケーションを簡単に作るためのフレームワーク

LLM アプリは本来、こんな要素が必要:

  • プロンプトの管理
  • モデル呼び出し(OpenAI / Gemini / Claude など)
  • 会話履歴の管理(メモリ)
  • 外部ツールの実行(function calling)
  • 検索+生成(RAG)
  • チェーン(複数処理のパイプライン化)

LangChain は これらを部品化(モジュール化) して、
「繋げるだけで LLM アプリが作れる」ようにしてくれる。


LangChain の重要コンポーネント

LangChain は、大きく4つを理解すると一気にわかる。


① Model(LLMモデル呼び出し)

OpenAI, Anthropic, Google などの LLM を共通インターフェースで利用するクラス。

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4.1")

② Prompt(プロンプトのテンプレ化)

複雑になりがちなプロンプトをテンプレートとして管理できる。

from langchain.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "あなたは優秀なアシスタントです。"),
    ("human", "{question}"),
])

③ Chain(処理の流れをつなぐ)

Prompt → Model → Output の流れをパイプライン化する。

chain = prompt | model
result = chain.invoke({"question": "LangChainとは?"})
print(result)

この「パイプライン構造」が LangChain のコア思想。


④ Tools / Agent(外部ツール呼び出し)

LLM に API や Python 関数を使わせる。

from langchain.tools import tool

@tool
def add(a: int, b: int) -> int:
    "足し算を実行"
    return a + b

LLM が関数を自動で呼び出すようになる。


🔍 LangChain でできること

✔️ 1. Chatbot / 会話アプリ

プロンプト + モデル + メモリで実現。

✔️ 2. RAG(検索拡張生成)

ドキュメントを読み込んでベクター検索 → LLM で回答。

✔️ 3. Agent(自律エージェント)

LLM が「必要なツールを判断して実行 → まとめて答える」自動化。

✔️ 4. Workflow 構築

複数ステップの処理をチェーンとして構築。

Hands-on

今回は簡単なものを作って見ます!

langchain.gif

python3 -m venv venv
source venv/bin/activate.fish
(venv) ~/develop/langchain_study  $ pip install langchain langchain-openai python-dotenv
OPENROUTER_API_KEY=あなたのOpenRouterのAPIキー
main.py
# main.py
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate  # ← ここを修正
import os

# ① .env の読み込み
load_dotenv()

# ② OpenRouter 用の ChatOpenAI モデル設定
# OpenAI互換APIなので base_url を変更するだけでOK
model = ChatOpenAI(
    model="anthropic/claude-3.5-sonnet",  # OpenRouter経由で利用するモデル
    openai_api_key=os.getenv("OPENROUTER_API_KEY"),
    base_url="https://openrouter.ai/api/v1",  # ←超重要
)

# ③ プロンプトテンプレート定義
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "あなたは優秀な日本語アシスタントです。わかりやすく説明してください。"),
        ("human", "{question}"),
    ]
)

# ④ Prompt → Model のパイプライン(Chain)
chain = prompt | model


def main():
    print("=== OpenRouter × LangChain チャット ===")
    print("質問を入力してください(空でEnter → 終了)")

    while True:
        question = input("\nあなた > ").strip()
        if not question:
            print("終了します。")
            break

        # ⑤ チェーン実行
        res = chain.invoke({"question": question})

        # ChatMessage形式なので .content を参照
        print("\nAI > " + res.content)


if __name__ == "__main__":
    main()

python3 main.py

さいごに

Dify触った後でLangChainを触るとめっちゃいいなって感じがしました!!
やっぱりコードは書かないと!!

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?