LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発を効率化する強力なフレームワークです。本記事では、LangChain Agentの基本概念から実践的な活用方法まで、API経験が全くない初心者でも理解できるよう丁寧に解説します。

LangChain Agentとは?

LangChain Agentは、大規模言語モデルを「的大脑」として動作させ、各种 инструмент(ツール)を組み合わせることで、复杂なタスクを自律的に处理できる仕組みです。従来のプログラミングでは、すべてのロジックを人間が代码として記述しますが、AgentではLLMが状況に応じて適切なアクションを選択しながら动作します。

比如说,你需要从网上搜集特定信息并进行分析。传统方式需要分别调用搜索引擎API、数据处理ライブラリ等多个サービスを個別に実装しますが、Agentなら「情報を搜集して分析结果を报告」という高レベルな指示だけで、内部で適切なツールを呼び出して执行してくれます。

Agentを支える3つの核心コンポーネント

1. Tool(ツール)

ToolはAgentの外の世界とつながる接口です。Web検索、データベース参照、ファイル読み込み、API呼び出しなど、まるで职员的持つ专业スキルように各种Capabilitiesを提供します。LangChainには事前に用意された多くのToolが利用可能で、独自のToolを作成して拡張することもできます。

2. Agent Core(エージェントコア)

Agent CoreはLLMとToolの桥渡しをする役割を担います。ユーザーの要求を解读し、どのToolを使うべきか、どの顺序で调用するかを决定します。简单言えば、「この作业には谁を手配すべきか」を判断するmanagerのような存在です。

3. Execution Loop(実行ループ)

Execution LoopはAgentの自动化の要です。Toolの実行结果を確認し、必要であれば次のアクションを決定し、最终的な回答に到达するまで处理を繰り返します。この反復プロセスにより、单一のAPI呼び出しでは対応できない复杂なワークフローも处理可能になります。

実践編:HolySheep AIでAgentを動かしてみる

ここからは実際にLangChain Agentを作成してみましょう。今すぐ登録して取得したAPIキーを使用し、HolySheep AIのAPIエンドポイントに接続します。HolySheep AIは1ドルあたり170万トークンを处理できる効率的なAPI提供商で、DeepSeek V3.2の場合わずか0.42ドル(约30円)/100万トークンという破格の安さが特徴です。Webhook対応により实时通知も可能です。

Step 1:環境の准备

まず、必要なライブラリをインストールします。터미널에서 다음 명령어를 실행하세요。

pip install langchain langchain-openai langchain-core langchain-community python-dotenv requests

インストールが完了したら、プロジェクトフォルダ内に.envファイルを作成し、APIキーを安全に管理します。ファイル 내용은以下のようになります。

# .env ファイル
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
HOLYSHEEP_API_BASE=https://api.holysheep.ai/v1

Step 2:基本Agentの実装

以下の代码は、LangChainを使用してHolySheep AIのAPIに接続し、简单なToolを使ったAgentを作成する例です。

import os
from dotenv import load_dotenv
from langchain.agents import AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain import hub

load_dotenv()

api_key = os.getenv("HOLYSHEEP_API_KEY")
api_base = os.getenv("HOLYSHEEP_API_BASE")

llm = ChatOpenAI(
    model="gpt-4o",
    api_key=api_key,
    base_url=api_base,
    temperature=0.7,
    max_tokens=2000
)

@tool
def calculator(expression: str) -> str:
    """数学計算を実行するツール"""
    try:
        result = eval(expression, {"__builtins__": {}}, {})
        return f"計算結果: {result}"
    except Exception as e:
        return f"計算エラー: {str(e)}"

@tool  
def text_length(text: str) -> str:
    """テキストの文字数をカウントするツール"""
    return f"文字数: {len(text)}"

tools = [calculator, text_length]

prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)

agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

result = agent_executor.invoke({
    "input": "こんにちは、私の名前は田中です。この名前の文字数と、15掛ける23の計算結果を教えてください。"
})

print(result["output"])

このコードをagent_basic.pyとして保存し、実行すると以下流れで处理されます。まず、Agentは用户の要求を解读し、「text_length」というToolで名前の文字数をカウントし、「calculator」というToolで掛け算を実行します。各Toolの実行结果を確認し、最终的な回答を生成します。

Step 3:自定义Tool实战

次は、実際の应用に近い例として、Web资讯获取と要約を行うAgentを作成します。

import os
from dotenv import load_dotenv
from langchain.agents import AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain import hub
import requests

load_dotenv()

api_key = os.getenv("HOLYSHEEP_API_KEY")
api_base = os.getenv("HOLYSHEEP_API_BASE")

llm = ChatOpenAI(
    model="claude-sonnet-4-20250514",
    api_key=api_key,
    base_url=api_base,
    temperature=0.3,
    max_tokens=3000
)

@tool
def fetch_weather(city: str) -> str:
    """指定された都市の天気を取得する"""
    weather_data = {
        "東京": "晴れ、温度: 25°C、湿度: 60%",
        "大阪": "曇り、温度: 23°C、湿度: 75%",
        "名古屋": "雨、温度: 20°C、湿度: 85%"
    }
    return weather_data.get(city, "データがありません")

@tool
def summarize_text(text: str, max_length: int = 50) -> str:
    """長いテキストを要約する"""
    words = text.split()
    if len(words) <= max_length:
        return text
    return " ".join(words[:max_length]) + "..."

@tool
def get_current_time() -> str:
    """現在時刻を取得する"""
    from datetime import datetime
    now = datetime.now()
    return now.strftime("%Y年%m月%d日 %H:%M:%S")

tools = [fetch_weather, summarize_text, get_current_time]

prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, max_iterations=10)

result = agent_executor.invoke({
    "input": "今日の東京のお天気と、現在時刻を教えてください。"
})

print(result["output"])

この例では3つのToolを定义し、Agentが适切なToolを選択して呼び出す示范をしました。verbose=True设置为することで、Agentの思考过程和各ステップの详细なログが出力され、动作の理解に非常に役に立ちます。

Agentのタイプ選択ガイド

LangChainには复数のAgent类型が用意されており、タスクの性质によって最適なものを選ぶ必要があります。ReAct Agentは最も一般的な类型で、思考と行動を交互に繰り返しながら問題を解決します。OpenAI Functions AgentはOpenAIの函数呼び出し机能を活用した高效なAgentです。Self-Ask Agentは复杂な 질문을小さな部分問題に分割して处理するのに适しています。

初心者にはReAct Agent推荐します。透明性が高く、何を考えながら动いているか理解しやすいため、デバッグや学习に適しています。実績が出たところで、他のAgent类型にも挑戦してみてください。

プロンプトエンジニアリングのコツ

Agentの性能を引き出すには、プロンプトの设计が重要です。まず、タスクの目标を明确に記述