LangChainのOutput Parserの使い方

データサイエンス

LangChainは、様々な言語処理タスクを簡単に実行できるPythonライブラリです。この記事ではLangChainのOutput Parserの使い方を紹介します。

Output Parserとは

LangChainの出力結果を構造化されたデータに変換するためのツールです。

LangChainの出力結果は、そのままではプログラムで処理しにくい場合があります。Output Parserを使うことで、リスト、辞書、JSONなどの構造化されたデータに変換し、プログラムで簡単に処理できるようになります。

Output Parserの使い方 (Pydantic Parser)

ここではデータ構造を柔軟に定義できるPydantic Parserを説明します。

他にもList ParserやDatetime Parser、Enum Parserなどがありますが、JSON形式に変換したい場合や、入れ子になったデータ、辞書やリストを組み合わせたい場合などはPydantic Parserを使います。これさえ覚えておけば他もほとんど同じように扱えます。

今回はGoogleのLLMであるGeminiのAPIを使用しました。

以下コード例です。

# ライブラリのインポート
from langchain.output_parsers import PydanticOutputParser
from langchain.prompts import PromptTemplate
from langchain_google_genai import GoogleGenerativeAI
from pydantic import BaseModel, Field
from typing import List

# モデルを初期化
api_key = "GeminiのAPIキーをここに入力"
model = GoogleGenerativeAI(model="gemini-pro", google_api_key=api_key)

# 応答の型を定義
class Response(BaseModel):
    name: str = Field(description="プログラミング言語")
    list: List[str] = Field(description="フレームワークのリスト")

# Output Parser
output_parser = PydanticOutputParser(pydantic_object=Response)

# プロンプト
prompt_template = PromptTemplate(
    template="プログラミング言語と、その言語を用いたフレームワークをいくつか列挙してください。\n{format_instructions}\n",
    input_variables=[],
    partial_variables={"format_instructions": output_parser.get_format_instructions()},
)
prompt = prompt_template.format_prompt()

# モデルの出力
model_output = model.invoke(prompt)

# モデルの出力を構文解析して辞書型に変換
result = output_parser.parse(model_output)

# 結果を出力
print(result)

出力例は以下。

name='Python' list=['Django', 'Flask', 'Pyramid']

この変数resultそのものは定義したResponseオブジェクトになっています。

Response(name='Python', list=['Django', 'Flask', 'Pyramid'])

たしかに構造化されていますね。

まとめ

LangChainのOutput Parserは、LangChainの出力結果を構造化されたデータに変換するための便利なツールです。ぜひ様々なタスクに応用してみてください。

参考資料

コメント

タイトルとURLをコピーしました