MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Pyhton]LangChainの使い方

Pythonでは、LLMのAPIの実行に便利なLangChainというフレームワークがあります。
本記事では、PythonによるLangChainの使い方を紹介します。

やすひら

LangChainの使い方を紹介します

この記事でわかること
  • LangChainとは
  • LangChainでできること
  • Pythonを用いたLangChainの使い方
目次

LangChainとは

LangChainは、大規模言語モデル(LLM)を効率よく利用するための、フレームワークです。
LangChainを利用することで、LLMのAPIの実行がしやすくなります。
有料LLMのAPIを利用する場合は、料金がかかりますが、LangChain自体はオープンソースなので、無料で利用することができます。

LangChainでできること

LangChainでできることを紹介します。

LLMのAPIを実行

LLMのAPIを実行することができます。

複数LLMモデルを実行

複数のモデルを併用してアプリケーション開発ができます。

プロンプトの管理

プロンプトと呼ばれるAIへの指示文を指定して、LLMを実行できます。

チェーン処理

LLMの実行結果を元に、次の処理を行うこともできます。
連鎖して処理を行うため、チェーンと呼ばれています。

メモリ管理

AIとの対話履歴をメモリで管理し、文脈に応じた回答を生成することもできます。

エージェント

外部ツールなどを必要に応じて実行することができます。

LangChainをPythonで使う方法

Pythonを用いたLangChainの使い方を紹介します。

APIキーの取得

各種LLMのAPIキーを取得します。

各種LLMのAPIキーを取得して、メモしておきます。

APIキーの定義

取得したAPIキーは、”.env”ファイルに環境変数として定義して、Pythonのソースコードで読み込みます。

設定ファイル

OPENAI_API_KEY=$OPENAI_API_KEY

$OPENAI_API_KEYに、取得したAPIキーを定義します。

APIキーは公開してしまうと、第3者に利用されてしまうので、環境変数に定義しておき、GitHub等で公開しないよう注意します。

ライブラリのインストール

pipでopenaiライブラリをインストールします。

コマンドライン

pip install langchain langchain-openai langchain-core

langchainライブラリをインストールします。

LangChainの使い方

LangChainの使い方を紹介します。

文章を生成する(ChatGPT)

LangChainでChatGPTを利用して、文章を生成します。

ソースコード

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

# .envを読み込む
load_dotenv()

# LLM定義
llm = ChatOpenAI(
    model_name="gpt-4o-mini",
    temperature=0.2
)

# API実行
response = llm.invoke("AIとは何か教えてください。")
print(response.content)

コマンド実行結果

$ python3 -B python-langchain-chatgpt..py 
AI(人工知能)とは、人間の知能を模倣することを目的としたコンピュータシステムやプログラムのことを指します。AIは、データを分析し、学習し、問題を解決する能力を持つため、さまざまな分野で利用されています。

AIには大きく分けて以下の2つのタイプがあります。

1. **弱いAI(狭義のAI)**: 特定のタスクを実行するために設計されたAIです。例えば、音声認識、画像認識、自然言語処理などが含まれます。これらは特定の問題に特化しており、人間のような一般的な知能を持っていません。

2. **強いAI(汎用AI)**: 人間と同等の知能を持ち、さまざまなタスクをこなすことができるAIです。現在の技術では実現されていませんが、将来的にはこのようなAIが開発される可能性があります。

AIは、機械学習や深層学習といった技術を用いて、データからパターンを学習し、予測や判断を行うことができます。これにより、自動運転車、医療診断、金融分析、カスタマーサポートなど、さまざまな分野での応用が進んでいます。

AIの発展には倫理的な課題や社会的な影響も伴うため、研究者や企業はその利用に関して慎重に考慮する必要があります。

LangChainでChatGPTを利用して、文章を生成できました。

テンプレート指定で文章を生成する

テンプレート指定で文章を生成します。

ソースコード

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate

# .envを読み込む
load_dotenv()

# テンプレート定義
template = PromptTemplate(
    input_variables=["topic"],
    template="次のテーマで簡単に説明してください:{topic}"
)

# LLM定義
llm = ChatOpenAI(model="gpt-4o-mini")

# API実行
response = llm.invoke(template.format(topic="AIとは何か教えてください。"))
print(response.content)

コマンド実行結果

$ python3 -B python-langchain-template.py 
AI(人工知能)とは、人間のように思考や学習、問題解決を行うことができるコンピュータープログラムやシステムのことを指します。AIは膨大なデータを処理し、パターンを見つけ出すことで、予測や判断を行う能力を持っています。

AIには大きく分けて2つのタイプがあります。1つは「狭義のAI(弱いAI)」で、特定のタスクに特化して設計されているものです。例えば、音声認識や画像認識、ゲームの対戦相手などがこれに該当します。もう1つは「汎用AI(強いAI)」で、人間全体の知能を模倣できる能力を持つもので、理論的には様々なタスクをこなせるとされていますが、現在はまだ実現されていません。

AIは多くの分野で活用されており、医療、金融、製造業、自動運転車など、私たちの生活に大きな影響を与えています。

テンプレート指定で文章を生成できました。

チェーンを利用して文章を生成する

チェーンを利用して文章を生成します。

ソースコード

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnableLambda

# .envを読み込む
load_dotenv()

# LLM定義
llm = ChatOpenAI(model="gpt-4o-mini")

# プロンプト定義(1)
prompt1 = PromptTemplate(
    input_variables=["topic"],
    template="『{topic}』について一文で説明してください。"
)

# プロンプト定義(2)
prompt2 = PromptTemplate(
    input_variables=["summary"],
    template="この要約を英語に翻訳してください:\n{summary}"
)

# 入出力変換
extract = RunnableLambda(lambda x: {
    "summary": x.content if hasattr(x, "content") else x[-1].content
})

# チェーン定義
chain = (
    prompt1
    | llm
    | extract
    | prompt2
    | llm
)

# API実行
result = chain.invoke({"topic": "AIとは何か教えてください。"})
print(result.content)

コマンド実行結果

$ python3 -B python-langchain-chain.py 
AI (artificial intelligence) refers to systems and technologies that mimic human intelligence and perform intellectual tasks such as learning, reasoning, and problem-solving.

チェーンを利用して文章を生成できました。
概要を生成して、英文に翻訳しています。

メモリ機能を利用して文章を生成する

メモリ機能を利用して文章を生成します。

ソースコード

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

# .envを読み込む
load_dotenv()

# LLM定義
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7)

# 会話履歴
memory = [SystemMessage(content="あなたは親切でフレンドリーな雑談AIです。")]

# チャット処理
print("=== 雑談チャット開始 ===")
while True:
    user_input = input("あなた: ")
    if user_input.lower() in ["exit", "quit", "bye"]:
        print("AI: また話しましょう!")
        break

    # 履歴にユーザー入力を追加
    memory.append(HumanMessage(content=user_input))

    # LLMに履歴を渡して返答を取得
    response = llm.invoke(memory)

    # レスポンスからAIの回答を取得
    answer = response.content

    # メモリにAIの回答を追加
    memory.append(AIMessage(content=answer))

    # AIの返答を標準出力
    print("AI:", answer)

コマンド実行結果

$ python3 -B python-langchain-memory.py 
=== 雑談チャット開始 ===
あなた: こんにちは
AI: こんにちは!今日はどんなことを話しましょうか?
あなた: 人工知能とは何か教えてください。
AI: もちろんです!人工知能(AI)とは、人間の知能を模倣するように設計されたコンピュータープログラムやシステムのことです。具体的には、学習、推論、問題解決、理解、言語処理などの能力を持つことを目指しています。

AIは大きく分けて、以下のような種類があります:

1. **弱いAI(ナロウAI)**: 特定のタスクに特化しているAIで、例としては音声アシスタント(SiriやAlexaなど)や画像認識システムがあります。

2. **強いAI(ジェネラルAI)**: 人間のように幅広い知識と能力を持ち、どんなタスクもこなせるAIです。現在のところ、強いAIはまだ実現していません。

3. **機械学習**: データを用いて自動的に学習し、パターンを見つける技術です。AIの多くは機械学習に基づいています。

AIは日常生活のさまざまな場面で使われており、医療、交通、金融、エンターテインメントなど、多くの分野で革新をもたらしています。興味のある具体的な分野があれば、もっと詳しくお話しできますよ!
あなた: できることと、得意なことを教えてください。
AI: もちろんです!私ができることや得意なことをいくつか挙げてみますね。

### できること
1. **情報提供**: 幅広い知識を基に、さまざまな質問に答えたり、トピックについて説明したりすることができます。
2. **会話**: 雑談をしたり、相談に乗ったりすることが得意です。リラックスした会話を楽しむことができます。
3. **アイデアの提案**: プロジェクトやクリエイティブな活動に対してアイデアを提供したり、助言をすることができます。
4. **言語の翻訳**: 簡単な文章やフレーズを異なる言語に翻訳することができます。
5. **文章作成**: エッセイや記事、ストーリーなどの文章を書く手助けをすることができます。

### 得意なこと
1. **データ分析**: 大量の情報を処理し、パターンやトレンドを見つけるのが得意です。
2. **学習**: 機械学習アルゴリズムを使って、データから学び、改善することができます。
3. **自然言語処理**: 人間の言語を理解し、適切に応答する能力が高いです。これにより、スムーズな会話が可能です。
4. **問題解決**: 複雑な問題に対して論理的なアプローチで解決策を提案することが得意です。

もし特定のトピックや興味があれば、それに関連する情報を提供することもできますので、気軽に聞いてくださいね!
あなた: exit
AI: また話しましょう!

メモリ機能を利用して文章を生成できました。
文脈を理解して、回答しています。

エージェントを実行

エージェントを実行して文章を生成します。

ソースコード

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.tools import tool
from langchain.agents import create_agent
from langchain_core.messages import HumanMessage

# .envを読み込む
load_dotenv()

# LLM定義
llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=0
)

# ツール定義
@tool
def calculator(expression: str) -> str:
    """数式を計算して結果を返すツール"""
    try:
        return str(eval(expression))
    except Exception as e:
        return f"計算エラー: {e}"

tools = [calculator]

# エージェント作成
agent = create_agent(
    model=llm,
    tools=tools
)

# API実行
response = agent.invoke({
    "messages": [
        HumanMessage(content="1+1を計算してください。")
    ]
})

print(response["messages"][-1].content)

コマンド実行結果

$ python3 -B python-langchain-agent.py 
1 + 1 の計算結果は 2 です。

エージェントを実行して文章を生成できました。
ツールを実行して、計算結果が取得できました。

まとめ

Pythonを用いたLangChainの活用方法について紹介しました。

LangChainは
  • Pythonで利用可能
  • LLMのAPIを実行できる
  • 複数LLMモデルを実行できる
  • プロンプトの管理できる
  • チェーン処理ができる
  • メモリ管理できる
  • エージェントを実行できる

LangChainは、Pythonで容易に利用することができます。
LangChainを利用することで、アプリケーションに生成AI機能を実装することができます。
LangChain利用して、PythonでAI機能を実装してみると良いと思います。

  • URLをコピーしました!
目次