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の出力結果を構造化されたデータに変換するための便利なツールです。ぜひ様々なタスクに応用してみてください。
参考資料
- LangChain: https://www.langchain.com/
- LangChainのOutput Parser: https://python.langchain.com/docs/modules/model_io/output_parsers/
コメント