Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
__init__.py117 linesDownload Raw Back to smith
1"""**LangSmith** utilities.2 3This module provides utilities for connecting to4[LangSmith](https://docs.langchain.com/langsmith/home).5 6**Evaluation**7 8LangSmith helps you evaluate Chains and other language model application components9using a number of LangChain evaluators.10An example of this is shown below, assuming you've created a LangSmith dataset11called `<my_dataset_name>`:12 13```python14from langsmith import Client15from langchain_openai import ChatOpenAI16from langchain_classic.chains import LLMChain17from langchain_classic.smith import RunEvalConfig, run_on_dataset18 19 20# Chains may have memory. Passing in a constructor function lets the21# evaluation framework avoid cross-contamination between runs.22def construct_chain():23    model = ChatOpenAI(temperature=0)24    chain = LLMChain.from_string(model, "What's the answer to {your_input_key}")25    return chain26 27 28# Load off-the-shelf evaluators via config or the EvaluatorType (string or enum)29evaluation_config = RunEvalConfig(30    evaluators=[31        "qa",  # "Correctness" against a reference answer32        "embedding_distance",33        RunEvalConfig.Criteria("helpfulness"),34        RunEvalConfig.Criteria(35            {36                "fifth-grader-score": "Do you have to be smarter than a fifth "37                "grader to answer this question?"38            }39        ),40    ]41)42 43client = Client()44run_on_dataset(45    client,46    "<my_dataset_name>",47    construct_chain,48    evaluation=evaluation_config,49)50```51 52You can also create custom evaluators by subclassing the53`StringEvaluator <langchain.evaluation.schema.StringEvaluator>`54or LangSmith's `RunEvaluator` classes.55 56```python57from typing import Optional58from langchain_classic.evaluation import StringEvaluator59 60 61class MyStringEvaluator(StringEvaluator):62    @property63    def requires_input(self) -> bool:64        return False65 66    @property67    def requires_reference(self) -> bool:68        return True69 70    @property71    def evaluation_name(self) -> str:72        return "exact_match"73 74    def _evaluate_strings(75        self, prediction, reference=None, input=None, **kwargs76    ) -> dict:77        return {"score": prediction == reference}78 79 80evaluation_config = RunEvalConfig(81    custom_evaluators=[MyStringEvaluator()],82)83 84run_on_dataset(85    client,86    "<my_dataset_name>",87    construct_chain,88    evaluation=evaluation_config,89)90```91 92**Primary Functions**93 94- `arun_on_dataset <langchain.smith.evaluation.runner_utils.arun_on_dataset>`:95    Asynchronous function to evaluate a chain, agent, or other LangChain component over96    a dataset.97- `run_on_dataset <langchain.smith.evaluation.runner_utils.run_on_dataset>`:98    Function to evaluate a chain, agent, or other LangChain component over a dataset.99- `RunEvalConfig <langchain.smith.evaluation.config.RunEvalConfig>`:100    Class representing the configuration for running evaluation.101    You can select evaluators by102    `EvaluatorType <langchain.evaluation.schema.EvaluatorType>` or config,103    or you can pass in `custom_evaluators`.104"""105 106from langchain_classic.smith.evaluation import (107    RunEvalConfig,108    arun_on_dataset,109    run_on_dataset,110)111 112__all__ = [113    "RunEvalConfig",114    "arun_on_dataset",115    "run_on_dataset",116]117 
codekingpro/portable-devtools · Team Ai