mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-14 21:59:33 +03:00
10 KiB
10 KiB
In [28]:
# Comment this out if you are NOT using tracing
import os
os.environ["LANGCHAIN_HANDLER"] = "langchain"In [7]:
from langchain.evaluation.loading import load_dataset
dataset = load_dataset("sql-qa-chinook")Downloading readme: 0%| | 0.00/21.0 [00:00<?, ?B/s]
Downloading and preparing dataset json/LangChainDatasets--sql-qa-chinook to /Users/harrisonchase/.cache/huggingface/datasets/LangChainDatasets___json/LangChainDatasets--sql-qa-chinook-7528565d2d992b47/0.0.0/0f7e3662623656454fcd2b650f34e886a7db4b9104504885bd462096cc7a9f51...
Downloading data files: 0%| | 0/1 [00:00<?, ?it/s]
Downloading data: 0%| | 0.00/1.44k [00:00<?, ?B/s]
Extracting data files: 0%| | 0/1 [00:00<?, ?it/s]
Generating train split: 0 examples [00:00, ? examples/s]
Dataset json downloaded and prepared to /Users/harrisonchase/.cache/huggingface/datasets/LangChainDatasets___json/LangChainDatasets--sql-qa-chinook-7528565d2d992b47/0.0.0/0f7e3662623656454fcd2b650f34e886a7db4b9104504885bd462096cc7a9f51. Subsequent calls will reuse this data.
0%| | 0/1 [00:00<?, ?it/s]
In [8]:
dataset[0]Out [8]:
{'question': 'How many employees are there?', 'answer': '8'}In [1]:
from langchain import OpenAI, SQLDatabase, SQLDatabaseChainIn [3]:
db = SQLDatabase.from_uri("sqlite:///../../../notebooks/Chinook.db")
llm = OpenAI(temperature=0)In [14]:
chain = SQLDatabaseChain(llm=llm, database=db, input_key="question")In [27]:
chain(dataset[0])Out [27]:
{'question': 'How many employees are there?',
'answer': '8',
'result': ' There are 8 employees.'}In [19]:
predictions = []
predicted_dataset = []
error_dataset = []
for data in dataset:
try:
predictions.append(chain(data))
predicted_dataset.append(data)
except:
error_dataset.append(data)In [21]:
from langchain.evaluation.qa import QAEvalChainIn [22]:
llm = OpenAI(temperature=0)
eval_chain = QAEvalChain.from_llm(llm)
graded_outputs = eval_chain.evaluate(predicted_dataset, predictions, question_key="question", prediction_key="result")In [23]:
for i, prediction in enumerate(predictions):
prediction['grade'] = graded_outputs[i]['text']In [24]:
from collections import Counter
Counter([pred['grade'] for pred in predictions])Out [24]:
Counter({' CORRECT': 3, ' INCORRECT': 4})In [25]:
incorrect = [pred for pred in predictions if pred['grade'] == " INCORRECT"]In [26]:
incorrect[0]Out [26]:
{'question': 'How many employees are also customers?',
'answer': 'None',
'result': ' 59 employees are also customers.',
'grade': ' INCORRECT'}In [ ]: