From 4652b1439638af4756273f7a4c0f0ad9bbf2d7df Mon Sep 17 00:00:00 2001 From: Lanture1064 <34346740+Lanture1064@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:53:22 +0800 Subject: [PATCH] feat: upgrade import name & fix To fit ragas & langchain version bump --- .../kubeagi_core/evaluation/ragas_eval.py | 23 +++++++-------- libs/ragas_once/pyproject.toml | 8 ++--- .../src/ragas_once/embeddings/openai.py | 11 ++++--- libs/ragas_once/src/ragas_once/eval.py | 29 +++++++++---------- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/libs/core/kubeagi_core/evaluation/ragas_eval.py b/libs/core/kubeagi_core/evaluation/ragas_eval.py index f8dbadf..1a975e7 100644 --- a/libs/core/kubeagi_core/evaluation/ragas_eval.py +++ b/libs/core/kubeagi_core/evaluation/ragas_eval.py @@ -17,12 +17,12 @@ import os import pandas as pd from datasets import Dataset -from langchain.chat_models import ChatOpenAI -from langchain.embeddings import OpenAIEmbeddings as BaseOpenAIEmbeddings +from langchain_openai import ChatOpenAI +from langchain_openai import OpenAIEmbeddings as BaseOpenAIEmbeddings from ragas import evaluate -from ragas.embeddings import RagasEmbeddings -from ragas.llms import LangchainLLM, RagasLLM +from ragas.embeddings import BaseRagasEmbeddings +from ragas.llms import BaseRagasLLM from ragas.metrics import ( AnswerCorrectness, AnswerRelevancy, @@ -34,9 +34,8 @@ ) from ragas.evaluation import Result from ragas.metrics.base import Metric -from ragas.utils import NO_KEY -from ragas.exceptions import OpenAIKeyNotFound +NO_KEY = "NO_KEY" class RagasEval: """ @@ -58,8 +57,8 @@ class RagasEval: llm_model: str = "gpt-3.5-turbo" embedding_model: str = "text-embedding-ada-002" - llm: RagasLLM - embeddings: RagasEmbeddings + llm: BaseRagasLLM + embeddings: BaseRagasEmbeddings def __init__( self, @@ -87,12 +86,10 @@ def __init__( ) # Initialize judge llm - self.llm = LangchainLLM( - llm=ChatOpenAI( + self.llm = ChatOpenAI( model_name=self.llm_model, openai_api_key=self.api_key, openai_api_base=self.api_base, - ) ) # Initialize judge embedding @@ -203,7 +200,7 @@ def _metrics( # OpenAIEmbeddings inherits from -class OpenAIEmbeddings(BaseOpenAIEmbeddings, RagasEmbeddings): +class OpenAIEmbeddings(BaseOpenAIEmbeddings, BaseRagasEmbeddings): api_key: str = NO_KEY def __init__( @@ -226,4 +223,4 @@ def validate_api_key(self): if os_env_key != NO_KEY: self.api_key = os_env_key else: - raise OpenAIKeyNotFound + raise ValueError("openai api key must be provided") diff --git a/libs/ragas_once/pyproject.toml b/libs/ragas_once/pyproject.toml index 4083439..1c80cd3 100644 --- a/libs/ragas_once/pyproject.toml +++ b/libs/ragas_once/pyproject.toml @@ -2,8 +2,8 @@ requires = [ "setuptools>=61.0", "setuptools-scm", - "ragas==0.0.22", - "langchain==0.0.354" + "ragas", + "langchain" ] build-backend = "setuptools.build_meta" @@ -22,8 +22,8 @@ classifiers = [ "Operating System :: OS Independent", ] dependencies = [ - "langchain==0.0.354", - "ragas==0.0.22", + "langchain", + "ragas", ] [project.scripts] diff --git a/libs/ragas_once/src/ragas_once/embeddings/openai.py b/libs/ragas_once/src/ragas_once/embeddings/openai.py index ac3a161..3f812b6 100644 --- a/libs/ragas_once/src/ragas_once/embeddings/openai.py +++ b/libs/ragas_once/src/ragas_once/embeddings/openai.py @@ -14,13 +14,12 @@ import os -from langchain.embeddings import OpenAIEmbeddings as BaseOpenAIEmbeddings -from ragas.embeddings import RagasEmbeddings -from ragas.exceptions import OpenAIKeyNotFound -from ragas.utils import NO_KEY +from langchain_openai.embeddings import OpenAIEmbeddings as BaseOpenAIEmbeddings +from ragas.embeddings import BaseRagasEmbeddings +NO_KEY = "NO_KEY" -class OpenAIEmbeddings(BaseOpenAIEmbeddings, RagasEmbeddings): +class OpenAIEmbeddings(BaseOpenAIEmbeddings, BaseRagasEmbeddings): api_key: str = NO_KEY def __init__( @@ -43,4 +42,4 @@ def validate_api_key(self): if os_env_key != NO_KEY: self.api_key = os_env_key else: - raise OpenAIKeyNotFound + raise ValueError("openai api key must be provided") diff --git a/libs/ragas_once/src/ragas_once/eval.py b/libs/ragas_once/src/ragas_once/eval.py index 9a373bd..5fb0519 100644 --- a/libs/ragas_once/src/ragas_once/eval.py +++ b/libs/ragas_once/src/ragas_once/eval.py @@ -16,17 +16,17 @@ import pandas as pd from datasets import Dataset -from langchain.chat_models import ChatOpenAI +from langchain_openai import ChatOpenAI, OpenAIEmbeddings from ragas import evaluate -from ragas.embeddings import RagasEmbeddings -from ragas.llms import LangchainLLM, RagasLLM +from ragas.llms import BaseRagasLLM +from ragas.embeddings import BaseRagasEmbeddings from ragas.metrics import (AnswerCorrectness, AnswerRelevancy, AnswerSimilarity, ContextPrecision, ContextRecall, ContextRelevancy, Faithfulness) from ragas.metrics.base import Metric -from ragas.utils import NO_KEY from ragas_once.embeddings.openai import OpenAIEmbeddings +NO_KEY = "NO_KEY" class RagasEval: """ @@ -46,8 +46,8 @@ class RagasEval: llm_model: str = "gpt-3.5-turbo" embedding_model: str = "text-embedding-ada-002" - llm: RagasLLM - embeddings: RagasEmbeddings + llm: BaseRagasLLM + embeddings: BaseRagasEmbeddings def __init__( self, @@ -65,21 +65,20 @@ def __init__( ) # Initialize judge llm - self.llm = LangchainLLM( - llm=ChatOpenAI( - model_name=self.llm_model, - openai_api_key=self.api_key, - openai_api_base=self.api_base, + self.llm = ChatOpenAI( + model=self.llm_model, + api_key=self.api_key, + base_url=self.api_base, ) - ) # Initialize judge embedding self.embeddings = OpenAIEmbeddings( - api_key=self.api_key, - api_base=self.api_base, - model_name=self.embedding_model, + api_key=self.api_key, + base_url=self.api_base, + model=self.embedding_model, ) + def prepare_dataset(self, dataset: str = NO_KEY) -> Dataset: """ Prepares the dataset for evaluation.