LangChain の評価機能を試す
「LangChain」の評価機能を試したのでまとめました。
前回
1. 評価
「テキスト生成」は、従来のメトリクスでは評価が難しいことで有名です。それらを評価する新しい方法の1つが、言語モデルを使用する方法です。「LangChain」では、これを支援するためのプロンプトやチェーンを提供しています。
2. 質問応答の評価
Google Colabでの質問応答の評価の手順は、次のとりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install langchain
!pip install openai
(2) 環境変数の準備。
以下のコードの <OpenAI_APIのトークン> にはOpenAI APIのトークンを指定します。(有料)
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトークン>"
(3) 質問応答のLLMチェーンの準備。
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.llms import OpenAI
# 質問応答のプロンプトテンプレートの準備
prompt = PromptTemplate(
template="Question: {question}\nAnswer:",
input_variables=["question"]
)
# 質問応答のLLMチェーンの準備
chain = LLMChain(
llm=OpenAI(temperature=0),
prompt=prompt
)
(4) 評価データセットの準備。
questionとanswerを持つ辞書のリストになります。
# 評価データセットの準備
examples = [
{
"question": "テニスボールが2ケースあります。1ケースにテニスボールが3個入っています。今何個のテニスボールを持っていますか?",
"answer": "6"
},
{
"question": '次の文はもっともらしいですか?もっともらしくないですか? "カレーは飲み物"',
"answer": "もっともらしくない"
}
]
(5) 予測の実行。
# 予測
predictions = chain.apply(examples)
predictions
[
{'text': ' 6個'},
{'text': ' もっともらしくないです。'}
]
回答を完全に一致させようとすると、言語モデルが回答したものと一致しないことがわかります。
しかし、意味的にはどちらの場合も正しいです。これを評価するため、言語モデル自体を使用します。
(6) 言語モデルによる評価。
QAEvalChainのevaluate()を使います。
from langchain.evaluation.qa import QAEvalChain
# 言語モデルによる評価
eval_chain = QAEvalChain.from_llm(
llm=OpenAI(temperature=0)
)
graded_outputs = eval_chain.evaluate(
examples,
predictions,
question_key="question",
prediction_key="text"
)
print(graded_outputs)
[
{'text': ' CORRECT'},
{'text': ' CORRECT'}
]
両方、CORRECT (正しい) と評価されました。
(7) 結果を整形して出力。
# 結果を整形して出力
for i, eg in enumerate(examples):
print(f"Example {i}:")
print("Question: " + eg['question'])
print("Real Answer: " + eg['answer'])
print("Predicted Answer: " + predictions[i]['text'])
print("Predicted Grade: " + graded_outputs[i]['text'])
print()
Example 0:
Question: テニスボールが2ケースあります。1ケースにテニスボールが3個入っています。今何個のテニスボールを持っていますか?
Real Answer: 6
Predicted Answer: 6個
Predicted Grade: CORRECT
Example 1:
Question: 次の文はもっともらしいですか?もっともらしくないですか? "カレーは飲み物"
Real Answer: もっともらしくない
Predicted Answer: もっともらしくないです。
Predicted Grade: CORRECT
次回
この記事が気に入ったらサポートをしてみませんか?