2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LangChainで始めるAIチャット開発:初心者向け5ステップ

Posted at

ChatGPTのようなAIチャットを自分で作りたいけど、難しそう...そんな悩みを解決!LangChainを使えば、たった50行のコードで本格的なAIアプリが完成。環境構築から実装、よくあるエラー解決まで、2025年最新版の完全ガイド。

ついに実現!ChatGPTみたいなアプリが30分で作れる時代

金曜の夜23時。同僚から送られてきたSlackのメッセージに、私は目を疑った。

これ、さっき作ったチャットボットなんだけど、社内文書全部学習させてみた

添付されていたのは、わずか50行のPythonコード。30分前まで「AI開発なんてハードル高すぎる」と言っていた彼が、すでに動くものを作っていた。

そう、**LangChain(ラングチェーン)**という魔法のようなフレームワークを使えば、AIチャット開発は想像以上にシンプルになる。

「正直、最初は半信半疑だった。でも、実際に動かしてみたら...マジでヤバい」

2025年8月現在、LangChainはGitHubで最も急成長しているオープンソースプロジェクトの一つ。なぜこれほど注目されているのか?それは、複雑なAI開発を「レゴブロックを組み立てるように」簡単にしてくれるからだ。

LangChainって何?3分で分かる超基本

「LangChainって聞いたことあるけど、結局何なの?」

実は私も最初はそう思っていた。公式ドキュメントを読んでも、なんだか難しそうで...

でも、実際はめちゃくちゃシンプル

LangChainは「AIアプリ開発の万能ツールキット」

LangChainを一言で表すなら、**「ChatGPTのようなAIを自分のアプリに組み込むためのスイスアーミーナイフ」**だ。

2022年10月にHarrison Chaseによって開発され、以下のような特徴を持つ:

  • 複数のAIモデルを簡単に切り替え可能(GPT-4、Claude、Geminiなど)
  • 外部データ(PDF、Webサイト、データベース)と連携してAIの知識を拡張
  • チャット履歴の管理で文脈を理解した会話を実現
  • **複雑な処理をチェーン(連鎖)**させて高度なタスクを実行

なぜLangChainが必要なの?

ChatGPT APIを直接使えばいいじゃん、と思うかもしれない。でも実際にやってみると...

  • 最新情報に答えられない」(学習データが古い)
  • 社内文書の内容を知らない」(外部データにアクセスできない)
  • 会話の文脈を忘れる」(メモリ機能がない)
  • 複雑なタスクができない」(単発の質問応答のみ)

これらの問題を、LangChainなら数行のコードで解決できる。

ステップ1:環境準備(10分で完了)

「環境構築って面倒くさそう...」

大丈夫。2025年版の最新手順なら、たった3つのコマンドで準備完了だ。

必要なもの

  • Python 3.8以上(3.11推奨)
  • OpenAI APIキー(無料枠でOK)
  • やる気(これが一番大事!)

インストール手順

# 仮想環境を作成(プロジェクトごとに環境を分けるのがおすすめ)
python -m venv langchain-env

# 仮想環境を有効化
# Windowsの場合
langchain-env\Scripts\activate
# Mac/Linuxの場合
source langchain-env/bin/activate

# 必要なパッケージをインストール
pip install langchain langchain-openai python-dotenv

【初心者がハマりやすいポイント】

VSCodeを使っている場合、インポートエラーが出ることがある。その場合は、settings.jsonに以下を追加:

{
  "python.analysis.packageIndexDepths": [
    {"name": "langchain", "depth": 2},
    {"name": "langchain_core", "depth": 2}
  ]
}

ステップ2:最初のAIチャットを作る(コード10行)

環境が整ったら、早速コードを書いてみよう。

世界一シンプルなAIチャット

import os
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage

# APIキーを設定
os.environ["OPENAI_API_KEY"] = "あなたのAPIキー"

# モデルを初期化
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

# 質問して回答を取得
response = llm.invoke([HumanMessage(content="東京スカイツリーの高さは?")])
print(response.content)

実行すると...

東京スカイツリーの高さは634メートルです。

「え、これだけ?」と思うかもしれない。そう、これだけなんだ。

ステップ3:会話の記憶を追加(チャット履歴の実装)

でも、このままだと前の会話を覚えてくれない。

User: 私の名前はタロウです
AI: こんにちは、タロウさん!
User: 私の名前は何でしたっけ?
AI: 申し訳ございません、お名前を教えていただけますか?  # 忘れてる!

これを解決するのがメモリ機能だ。

記憶力のあるチャットボット

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

# メモリ付きのチェーンを作成
memory = ConversationBufferMemory()
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True  # 処理の流れを表示
)

# 会話を開始
print(conversation.predict(input="私の名前はタロウです"))
print(conversation.predict(input="私の名前は何でしたっけ?"))

これで会話の文脈を理解してくれるようになった!

ステップ4:外部データと連携(RAG実装)

ここからがLangChainの真骨頂

社内文書やPDFの内容を基に回答させたい場合、**RAG(Retrieval-Augmented Generation)**という技術を使う。

PDFを学習させて質問に答えさせる

from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA

# PDFを読み込み
loader = PyPDFLoader("company_manual.pdf")
documents = loader.load()

# テキストを適切なサイズに分割
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
texts = text_splitter.split_documents(documents)

# ベクトルストアを作成
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(texts, embeddings)

# 質問応答チェーンを作成
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(),
    return_source_documents=True
)

# 質問してみる
result = qa_chain({"query": "有給休暇の申請方法は?"})
print(result["result"])

これで、ChatGPTが知らない社内情報にも答えられるようになった!

ステップ5:Webアプリ化(Streamlitで爆速デプロイ)

最後に、作ったチャットボットをWebアプリにしてみよう。

たった20行でWebアプリ完成

import streamlit as st
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage

# ページ設定
st.title("🤖 My AI Assistant")
st.caption("LangChainで作った自作チャットボット")

# セッション状態の初期化
if "messages" not in st.session_state:
    st.session_state.messages = []

# チャット履歴を表示
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.write(message["content"])

# ユーザー入力
if prompt := st.chat_input("何か質問してください"):
    # ユーザーメッセージを追加
    st.session_state.messages.append({"role": "user", "content": prompt})
    with st.chat_message("user"):
        st.write(prompt)
    
    # AI応答を生成
    llm = ChatOpenAI(model="gpt-3.5-turbo")
    response = llm.invoke([HumanMessage(content=prompt)])
    
    # AIメッセージを追加
    st.session_state.messages.append({"role": "assistant", "content": response.content})
    with st.chat_message("assistant"):
        st.write(response.content)

実行コマンド:

streamlit run app.py

ブラウザが自動で開いて、プロ級のチャットアプリが動き出す

初心者が陥りやすい3つの罠と解決法

罠1:APIキーのエラー

症状:「Invalid API key」エラーが出る

**原因:**環境変数が正しく設定されていない

解決法:.envファイルを作成して管理する

# .envファイル
OPENAI_API_KEY=sk-xxxxxxxxxxxxx

# Pythonコード
from dotenv import load_dotenv
load_dotenv()

# これでos.environ["OPENAI_API_KEY"]が自動設定される

罠2:トークン制限エラー

**症状:**長い文章を処理すると「Maximum token limit exceeded」

**原因:**GPT-3.5は4,096トークンまでしか処理できない

**解決法:**テキストスプリッターで分割処理

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,  # より小さく分割
    chunk_overlap=50
)

罠3:レスポンスが遅い

**症状:**回答生成に時間がかかる

**原因:**毎回ベクトルストアを作り直している

**解決法:**ベクトルストアを保存して再利用

# 保存
vectorstore.save_local("./vectorstore")

# 読み込み
vectorstore = FAISS.load_local("./vectorstore", embeddings)

さらに上を目指す:応用アイデア集

基本ができたら、こんなことにも挑戦してみよう:

1. マルチエージェントシステム

複数のAIが協力して問題を解決する仕組み。例えば:

  • リサーチャーAI:情報を収集
  • アナリストAI:データを分析
  • ライターAI:レポートを作成

2. リアルタイム情報の取得

Web検索APIと連携して最新ニュースを取得:

from langchain.tools import DuckDuckGoSearchRun

search = DuckDuckGoSearchRun()
result = search.run("東京の今日の天気")

3. 音声対話システム

音声認識・合成APIと組み合わせて、Alexaのような対話システムを構築。

2025年最新!LangChainの注目アップデート

2025年7月のアップデートで追加された新機能:

  • LangGraph Platform:エージェントの可視化とデバッグが劇的に改善
  • LangSmith統合強化:本番環境でのモニタリングが簡単に
  • マルチモーダル対応:画像や動画も扱えるように

特にLangGraphは革命的。複雑なエージェントの動作を視覚的に確認できるようになった。

まとめ:今すぐ始めるべき3つの理由

1. 圧倒的な開発スピード

従来なら1ヶ月かかっていたAIアプリ開発が、1日で完成する。

2. 豊富なエコシステム

GitHubスター数は7万超え。困ったときの情報源が豊富。

3. キャリアアップのチャンス

「LangChainが使える」は、2025年のエンジニアにとって強力な武器になる。

「3ヶ月前までAI開発なんて夢のまた夢だと思ってた。でも今は、社内のAIチャットボット開発をリードしている」

これは、実際にLangChainを始めた同僚の言葉だ。

次のステップへ

この記事で紹介したのは、LangChainのほんの入り口

でも、ここまでできれば、あとは応用するだけ。社内FAQボット、カスタマーサポートAI、データ分析アシスタント...可能性は無限大だ。

今週末、2時間だけ時間を作って、最初の一歩を踏み出してみないか?

きっと、月曜日の朝には「AIアプリ開発者」として新しい自分に出会えるはずだ。

参考リソース

さあ、コードエディタを開いて、新しい冒険を始めよう!


🌟 お知らせ

この記事が役に立ったら、ぜひフォローやいいねをお願いします!

🐦 X: @nabe_AI_dev
AI開発の最新情報や技術Tips、開発の進捗などを定期的にツイートしています。

📝 ブログ: AI Developer Blog
AIツール開発に関する詳細な記事や実装事例を公開中です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?